From e0ed4f2da6166e3f48cfdac1c359ee6c6e02e873 Mon Sep 17 00:00:00 2001
From: thinky
Date: Wed, 30 Aug 2023 15:49:22 -0400
Subject: [PATCH 01/70] Rename static tables
---
...y => de730f77e8c3_rename_static_tables.py} | 908 +++++++++---------
src/pudl/etl/static_assets.py | 8 +-
src/pudl/metadata/classes.py | 2 +-
src/pudl/metadata/resources/eia.py | 60 +-
src/pudl/metadata/resources/ferc1.py | 4 +-
src/pudl/metadata/resources/pudl.py | 4 +-
6 files changed, 494 insertions(+), 492 deletions(-)
rename migrations/versions/{8b3029915ab1_pandas_2_0.py => de730f77e8c3_rename_static_tables.py} (90%)
diff --git a/migrations/versions/8b3029915ab1_pandas_2_0.py b/migrations/versions/de730f77e8c3_rename_static_tables.py
similarity index 90%
rename from migrations/versions/8b3029915ab1_pandas_2_0.py
rename to migrations/versions/de730f77e8c3_rename_static_tables.py
index 0062dbc302..6aa5b85436 100644
--- a/migrations/versions/8b3029915ab1_pandas_2_0.py
+++ b/migrations/versions/de730f77e8c3_rename_static_tables.py
@@ -1,8 +1,8 @@
-"""pandas 2.0.
+"""Rename static tables
-Revision ID: 8b3029915ab1
+Revision ID: de730f77e8c3
Revises:
-Create Date: 2023-08-27 10:47:20.386231
+Create Date: 2023-08-30 15:45:30.233356
"""
from alembic import op
@@ -10,7 +10,7 @@
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
-revision = '8b3029915ab1'
+revision = 'de730f77e8c3'
down_revision = None
branch_labels = None
depends_on = None
@@ -18,18 +18,6 @@
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('averaging_periods_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_averaging_periods_eia'))
- )
- op.create_table('balancing_authorities_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_balancing_authorities_eia'))
- )
op.create_table('balancing_authority_assn_eia861',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
@@ -44,30 +32,6 @@ def upgrade() -> None:
sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_balancing_authority_eia861'))
)
- op.create_table('boiler_generator_assn_types_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_boiler_generator_assn_types_eia'))
- )
- op.create_table('boiler_status_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_boiler_status_eia'))
- )
- op.create_table('boiler_types_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_boiler_types_eia'))
- )
- op.create_table('coalmine_types_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_coalmine_types_eia'))
- )
op.create_table('compiled_geometry_balancing_authority_eia861',
sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
@@ -92,31 +56,55 @@ def upgrade() -> None:
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_compiled_geometry_utility_eia861'))
)
- op.create_table('contract_types_eia',
+ op.create_table('core_eia__codes_averaging_periods',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_contract_types_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_averaging_periods'))
)
- op.create_table('data_maturities',
+ op.create_table('core_eia__codes_balancing_authorities',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_data_maturities'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_balancing_authorities'))
)
- op.create_table('datasources',
- sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
- sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
- sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
- sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
- sa.PrimaryKeyConstraint('datasource', name=op.f('pk_datasources'))
+ op.create_table('core_eia__codes_boiler_generator_assn_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_generator_assn_types'))
+ )
+ op.create_table('core_eia__codes_boiler_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_status'))
+ )
+ op.create_table('core_eia__codes_boiler_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_types'))
+ )
+ op.create_table('core_eia__codes_coalmine_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_coalmine_types'))
+ )
+ op.create_table('core_eia__codes_contract_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_contract_types'))
)
- op.create_table('emission_control_equipment_types_eia',
+ op.create_table('core_eia__codes_emission_control_equipment_types',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_emission_control_equipment_types_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_emission_control_equipment_types'))
)
- op.create_table('energy_sources_eia',
+ op.create_table('core_eia__codes_energy_sources',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('fuel_units', sa.Enum('barrels', 'mcf', 'mwh', 'short_tons'), nullable=True, comment='Reported unit of measure for fuel.'),
@@ -127,102 +115,182 @@ def upgrade() -> None:
sa.Column('fuel_phase', sa.Enum('gas', 'liquid', 'solid'), nullable=True, comment='Physical phase of matter of the fuel.'),
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_energy_sources_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_energy_sources'))
)
- op.create_table('environmental_equipment_manufacturers_eia',
+ op.create_table('core_eia__codes_environmental_equipment_manufacturers',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_environmental_equipment_manufacturers_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_environmental_equipment_manufacturers'))
)
- op.create_table('epacamd_eia_subplant_ids',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
+ op.create_table('core_eia__codes_firing_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_firing_types'))
)
- op.create_table('ferc_accounts',
- sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
- sa.Column('ferc_account_description', sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_ferc_accounts'))
+ op.create_table('core_eia__codes_fuel_transportation_modes',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_transportation_modes'))
)
- op.create_table('firing_types_eia',
+ op.create_table('core_eia__codes_fuel_types_aer',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_types_aer'))
+ )
+ op.create_table('core_eia__codes_mercury_compliance_strategies',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_firing_types_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_mercury_compliance_strategies'))
)
- op.create_table('fuel_receipts_costs_aggs_eia',
- sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
- sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
- sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
- sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_fuel_receipts_costs_aggs_eia'))
+ op.create_table('core_eia__codes_momentary_interruptions',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_momentary_interruptions'))
)
- op.create_table('fuel_transportation_modes_eia',
+ op.create_table('core_eia__codes_nox_compliance_strategies',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_fuel_transportation_modes_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_compliance_strategies'))
)
- op.create_table('fuel_types_aer_eia',
+ op.create_table('core_eia__codes_nox_control_status',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_fuel_types_aer_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_control_status'))
)
- op.create_table('mercury_compliance_strategies_eia',
+ op.create_table('core_eia__codes_nox_units',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_mercury_compliance_strategies_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_units'))
)
- op.create_table('momentary_interruptions_eia',
+ op.create_table('core_eia__codes_operational_status',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_momentary_interruptions_eia'))
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_operational_status'))
)
- op.create_table('nox_compliance_strategies_eia',
+ op.create_table('core_eia__codes_particulate_compliance_strategies',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_nox_compliance_strategies_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_compliance_strategies'))
)
- op.create_table('nox_control_status_eia',
+ op.create_table('core_eia__codes_particulate_units',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_nox_control_status_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_units'))
)
- op.create_table('nox_units_eia',
+ op.create_table('core_eia__codes_prime_movers',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_nox_units_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_prime_movers'))
)
- op.create_table('operational_status_eia',
+ op.create_table('core_eia__codes_regulations',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_operational_status_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_regulations'))
)
- op.create_table('particulate_compliance_strategies_eia',
+ op.create_table('core_eia__codes_reporting_frequencies',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_particulate_compliance_strategies_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_reporting_frequencies'))
)
- op.create_table('particulate_units_eia',
+ op.create_table('core_eia__codes_sector_consolidated',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_particulate_units_eia'))
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_sector_consolidated'))
+ )
+ op.create_table('core_eia__codes_so2_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_so2_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_units'))
+ )
+ op.create_table('core_eia__codes_steam_plant_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_steam_plant_types'))
+ )
+ op.create_table('core_eia__codes_wet_dry_bottom',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
+ )
+ op.create_table('core_ferc1__codes_accounts',
+ sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
+ sa.Column('ferc_account_description', sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc1__codes_accounts'))
+ )
+ op.create_table('core_ferc1__codes_power_purchase_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
+ )
+ op.create_table('core_pudl__codes_data_maturities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_pudl__codes_datasources',
+ sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
+ sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
+ sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
+ sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
+ sa.PrimaryKeyConstraint('datasource', name=op.f('pk_core_pudl__codes_datasources'))
+ )
+ op.create_table('core_pudl__codes_subdivisions',
+ sa.Column('country_code', sa.Enum('USA', 'CAN'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
+ sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
+ sa.Column('subdivision_code', sa.Enum('AK', 'MB', 'OR', 'WA', 'AS', 'DC', 'DE', 'ME', 'MT', 'AR', 'QC', 'WI', 'UT', 'VI', 'RI', 'OH', 'IN', 'NJ', 'NU', 'TX', 'VT', 'NL', 'NS', 'OK', 'NC', 'BC', 'NV', 'AL', 'LA', 'CO', 'NH', 'CT', 'AB', 'MA', 'NB', 'YT', 'SC', 'WY', 'FL', 'KY', 'ND', 'NT', 'WV', 'MO', 'NM', 'NY', 'PA', 'PE', 'TN', 'VA', 'CA', 'AZ', 'ON', 'PR', 'IL', 'MN', 'MS', 'KS', 'HI', 'GU', 'NE', 'SD', 'IA', 'ID', 'MD', 'SK', 'MP', 'GA', 'MI'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
+ sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
+ sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
+ sa.Column('division_code_us_census', sa.Enum('WNC', 'SAT', 'NEW', 'PCN', 'MAT', 'PCC', 'ESC', 'WSC', 'ENC', 'MTN'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
+ sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
+ sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
+ )
+ op.create_table('epacamd_eia_subplant_ids',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
+ )
+ op.create_table('fuel_receipts_costs_aggs_eia',
+ sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
+ sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
+ sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
+ sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_fuel_receipts_costs_aggs_eia'))
)
op.create_table('plants_entity_eia',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -242,26 +310,6 @@ def upgrade() -> None:
sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_plants_pudl'))
)
- op.create_table('political_subdivisions',
- sa.Column('country_code', sa.Enum('CAN', 'USA'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
- sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
- sa.Column('subdivision_code', sa.Enum('IL', 'SC', 'MI', 'HI', 'MO', 'ID', 'UT', 'TN', 'NU', 'KY', 'AZ', 'AB', 'MS', 'NS', 'GA', 'PE', 'SD', 'NE', 'NB', 'ME', 'BC', 'MD', 'FL', 'OK', 'NJ', 'CA', 'VT', 'KS', 'NC', 'AR', 'ND', 'NH', 'NL', 'TX', 'AK', 'NV', 'VA', 'OH', 'YT', 'PR', 'LA', 'WY', 'NY', 'AS', 'DE', 'GU', 'RI', 'NM', 'IA', 'AL', 'MT', 'ON', 'WA', 'VI', 'MA', 'MP', 'NT', 'PA', 'QC', 'SK', 'CT', 'WI', 'OR', 'WV', 'DC', 'MB', 'CO', 'MN', 'IN'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
- sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
- sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
- sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
- sa.Column('division_code_us_census', sa.Enum('ENC', 'ESC', 'MAT', 'PCC', 'PCN', 'SAT', 'WNC', 'MTN', 'NEW', 'WSC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
- sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
- sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
- sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_political_subdivisions'))
- )
- op.create_table('power_purchase_types_ferc1',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_power_purchase_types_ferc1'))
- )
op.create_table('predicted_state_hourly_demand',
sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
@@ -269,54 +317,12 @@ def upgrade() -> None:
sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_predicted_state_hourly_demand'))
)
- op.create_table('prime_movers_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_prime_movers_eia'))
- )
- op.create_table('regulations_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_regulations_eia'))
- )
- op.create_table('reporting_frequencies_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_reporting_frequencies_eia'))
- )
op.create_table('respondent_id_ferc714',
sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
sa.Column('eia_code', sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_respondent_id_ferc714'))
)
- op.create_table('sector_consolidated_eia',
- sa.Column('code', sa.Integer(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_sector_consolidated_eia'))
- )
- op.create_table('so2_compliance_strategies_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_so2_compliance_strategies_eia'))
- )
- op.create_table('so2_units_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_so2_units_eia'))
- )
- op.create_table('steam_plant_types_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_steam_plant_types_eia'))
- )
op.create_table('utilities_entity_eia',
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
@@ -333,12 +339,6 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_utility_assn_eia861'))
)
- op.create_table('wet_dry_bottom_eia',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_wet_dry_bottom_eia'))
- )
op.create_table('advanced_metering_infrastructure_eia861',
sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
@@ -356,7 +356,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_advanced_metering_infrastructure_eia861_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_advanced_metering_infrastructure_eia861_data_maturity_core_pudl__codes_data_maturities')),
sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_advanced_metering_infrastructure_eia861'))
)
op.create_table('boilers_entity_eia',
@@ -364,7 +364,7 @@ def upgrade() -> None:
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['environmental_equipment_manufacturers_eia.code'], name=op.f('fk_boilers_entity_eia_boiler_manufacturer_code_environmental_equipment_manufacturers_eia')),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_boilers_entity_eia_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_boilers_entity_eia_plant_id_eia_plants_entity_eia')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_boilers_entity_eia'))
)
@@ -376,8 +376,8 @@ def upgrade() -> None:
sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_coalmine_eia923_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['coalmine_types_eia.code'], name=op.f('fk_coalmine_eia923_mine_type_code_coalmine_types_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_coalmine_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_coalmine_eia923_mine_type_code_core_eia__codes_coalmine_types')),
sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_coalmine_eia923'))
)
op.create_table('demand_hourly_pa_ferc714',
@@ -404,7 +404,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_demand_response_eia861_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_response_eia861_data_maturity_core_pudl__codes_data_maturities')),
sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_demand_response_eia861'))
)
op.create_table('demand_response_water_heater_eia861',
@@ -414,7 +414,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('water_heater', sa.Integer(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_demand_response_water_heater_eia861_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_response_water_heater_eia861_data_maturity_core_pudl__codes_data_maturities')),
sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_demand_response_water_heater_eia861'))
)
op.create_table('demand_side_management_ee_dr_eia861',
@@ -442,7 +442,7 @@ def upgrade() -> None:
sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_demand_side_management_ee_dr_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_side_management_ee_dr_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('demand_side_management_misc_eia861',
sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
@@ -459,7 +459,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_demand_side_management_misc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_side_management_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('demand_side_management_sales_eia861',
sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
@@ -469,7 +469,7 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_demand_side_management_sales_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_side_management_sales_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('denorm_emissions_control_equipment_eia860',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -492,9 +492,9 @@ def upgrade() -> None:
sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['emission_control_equipment_types_eia.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_emission_control_equipment_types_eia')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['operational_status_eia.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_operational_status_code_operational_status_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_eia_plants_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_eia_utilities_entity_eia')),
@@ -538,14 +538,14 @@ def upgrade() -> None:
sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['contract_types_eia.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_contract_type_code_contract_types_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_energy_source_code_energy_sources_eia')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['coalmine_types_eia.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_mine_type_code_coalmine_types_eia')),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_plants_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_fuel_transportation_modes_eia')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_utilities_entity_eia')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_utilities_pudl'))
)
@@ -594,12 +594,12 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_energy_source_code_energy_sources_eia')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['fuel_types_aer_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_fuel_types_aer_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_eia_plants_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_eia_utilities_entity_eia')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_eia923'))
@@ -621,10 +621,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_plants_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_utilities_entity_eia')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_monthly_eia923'))
@@ -637,7 +637,7 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_distributed_generation_fuel_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distributed_generation_fuel_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('distributed_generation_misc_eia861',
sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
@@ -651,7 +651,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_distributed_generation_misc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distributed_generation_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('distributed_generation_tech_eia861',
sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
@@ -661,7 +661,7 @@ def upgrade() -> None:
sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_distributed_generation_tech_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distributed_generation_tech_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('distribution_systems_eia861',
sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
@@ -672,7 +672,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_distribution_systems_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distribution_systems_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('dynamic_pricing_eia861',
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
@@ -689,7 +689,7 @@ def upgrade() -> None:
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_dynamic_pricing_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_dynamic_pricing_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('emissions_control_equipment_eia860',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -706,9 +706,9 @@ def upgrade() -> None:
sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_emissions_control_equipment_eia860_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['emission_control_equipment_types_eia.code'], name=op.f('fk_emissions_control_equipment_eia860_emission_control_equipment_type_code_emission_control_equipment_types_eia')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['operational_status_eia.code'], name=op.f('fk_emissions_control_equipment_eia860_operational_status_code_operational_status_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_emissions_control_equipment_eia860_plant_id_eia_plants_entity_eia')),
sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_emissions_control_equipment_eia860'))
)
@@ -730,7 +730,7 @@ def upgrade() -> None:
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_energy_efficiency_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_energy_efficiency_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('fipsified_respondents_ferc714',
sa.Column('eia_code', sa.Integer(), nullable=True),
@@ -763,11 +763,11 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_generation_fuel_eia923_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_generation_fuel_eia923_energy_source_code_energy_sources_eia')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['fuel_types_aer_eia.code'], name=op.f('fk_generation_fuel_eia923_fuel_type_code_aer_fuel_types_aer_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generation_fuel_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_generation_fuel_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_generation_fuel_eia923_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generation_fuel_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_generation_fuel_eia923'))
)
op.create_table('generation_fuel_nuclear_eia923',
@@ -785,11 +785,11 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_generation_fuel_nuclear_eia923_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_generation_fuel_nuclear_eia923_energy_source_code_energy_sources_eia')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['fuel_types_aer_eia.code'], name=op.f('fk_generation_fuel_nuclear_eia923_fuel_type_code_aer_fuel_types_aer_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generation_fuel_nuclear_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_nuclear_eia923_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_generation_fuel_nuclear_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_generation_fuel_nuclear_eia923_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generation_fuel_nuclear_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_nuclear_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_generation_fuel_nuclear_eia923'))
)
op.create_table('generators_entity_eia',
@@ -828,7 +828,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_green_pricing_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_green_pricing_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('heat_rate_by_unit_monthly',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -855,7 +855,7 @@ def upgrade() -> None:
sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_mergers_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_mergers_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('net_metering_customer_fuel_class_eia861',
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
@@ -871,7 +871,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_net_metering_customer_fuel_class_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_net_metering_customer_fuel_class_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('net_metering_misc_eia861',
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
@@ -880,7 +880,7 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_net_metering_misc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_net_metering_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('non_net_metering_customer_fuel_class_eia861',
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
@@ -892,7 +892,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_non_net_metering_customer_fuel_class_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_non_net_metering_customer_fuel_class_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('non_net_metering_misc_eia861',
sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
@@ -904,7 +904,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_non_net_metering_misc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_non_net_metering_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('operational_data_misc_eia861',
sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
@@ -935,7 +935,7 @@ def upgrade() -> None:
sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_operational_data_misc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_operational_data_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('operational_data_revenue_eia861',
sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
@@ -945,7 +945,7 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_operational_data_revenue_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_operational_data_revenue_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('plants_eia',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -977,8 +977,8 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_reliability_eia861_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['momentary_interruptions_eia.code'], name=op.f('fk_reliability_eia861_momentary_interruption_definition_momentary_interruptions_eia'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_reliability_eia861_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_reliability_eia861_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
)
op.create_table('sales_eia861',
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
@@ -996,7 +996,7 @@ def upgrade() -> None:
sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_sales_eia861_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_sales_eia861_data_maturity_core_pudl__codes_data_maturities')),
sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_sales_eia861'))
)
op.create_table('service_territory_eia861',
@@ -1009,7 +1009,7 @@ def upgrade() -> None:
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_service_territory_eia861_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_service_territory_eia861_data_maturity_core_pudl__codes_data_maturities')),
sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_service_territory_eia861'))
)
op.create_table('summarized_demand_ferc714',
@@ -1065,7 +1065,7 @@ def upgrade() -> None:
sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_utilities_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utilities_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_utilities_eia860_utility_id_eia_utilities_entity_eia')),
sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_utilities_eia860'))
)
@@ -1096,7 +1096,7 @@ def upgrade() -> None:
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_utility_data_misc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utility_data_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('utility_data_nerc_eia861',
sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
@@ -1105,7 +1105,7 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_utility_data_nerc_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utility_data_nerc_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('utility_data_rto_eia861',
sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
@@ -1114,7 +1114,7 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_utility_data_rto_eia861_data_maturity_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utility_data_rto_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
op.create_table('utility_plant_assn',
sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
@@ -1160,9 +1160,9 @@ def upgrade() -> None:
sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_boiler_fuel_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_boiler_fuel_eia923_plant_id_eia_boilers_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_boiler_fuel_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_boiler_fuel_eia923'))
)
op.create_table('capacity_factor_by_generator_monthly',
@@ -1236,10 +1236,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boiler_fuel_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_eia_boilers_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_boiler_fuel_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_eia_utilities_entity_eia')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_eia923'))
@@ -1262,10 +1262,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_boilers_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_utilities_entity_eia')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_monthly_eia923'))
@@ -1417,7 +1417,7 @@ def upgrade() -> None:
sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_generation_eia923_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generation_eia923_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_denorm_generation_eia923_plant_id_eia_generators_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_eia923_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_eia923_utility_id_eia_utilities_entity_eia')),
@@ -1509,7 +1509,7 @@ def upgrade() -> None:
sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['power_purchase_types_ferc1.code'], name=op.f('fk_denorm_purchased_power_ferc1_purchase_type_code_power_purchase_types_ferc1')),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types')),
sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_pudl_utilities_pudl'))
)
@@ -1582,7 +1582,7 @@ def upgrade() -> None:
sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_utilities_eia_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_utilities_eia_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utilities_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_denorm_utilities_eia'))
@@ -1755,13 +1755,13 @@ def upgrade() -> None:
sa.Column('moisture_content_pct', sa.Float(), nullable=True),
sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['contract_types_eia.code'], name=op.f('fk_fuel_receipts_costs_eia923_contract_type_code_contract_types_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_fuel_receipts_costs_eia923_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_fuel_receipts_costs_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['mine_id_pudl'], ['coalmine_eia923.mine_id_pudl'], name=op.f('fk_fuel_receipts_costs_eia923_mine_id_pudl_coalmine_eia923')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_fuel_receipts_costs_eia923_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_fuel_receipts_costs_eia923_primary_transportation_mode_code_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_fuel_receipts_costs_eia923_secondary_transportation_mode_code_fuel_transportation_modes_eia'))
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
)
op.create_table('generation_eia923',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -1769,7 +1769,7 @@ def upgrade() -> None:
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_generation_eia923_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generation_eia923_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generation_eia923_plant_id_eia_generators_entity_eia')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_generation_eia923'))
)
@@ -1783,9 +1783,9 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_generators_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_generation_fuel_by_generator_energy_source_monthly_eia923'))
)
op.create_table('generation_fuel_by_generator_monthly_eia923',
@@ -1817,7 +1817,7 @@ def upgrade() -> None:
sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_heat_rate_by_generator_monthly_plant_id_eia_generators_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_heat_rate_by_generator_monthly_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_heat_rate_by_generator_monthly_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_heat_rate_by_generator_monthly'))
)
op.create_table('income_statement_ferc1',
@@ -1860,10 +1860,10 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_mcoe_generators_monthly_energy_source_code_1_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_mcoe_generators_monthly_plant_id_eia_generators_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_monthly_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_mcoe_generators_monthly_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_mcoe_generators_monthly_utility_id_eia_utilities_entity_eia')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_monthly_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_monthly'))
@@ -1953,11 +1953,11 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['balancing_authorities_eia.code'], name=op.f('fk_plants_eia860_balancing_authority_code_eia_balancing_authorities_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_plants_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_plants_eia860_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_plants_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_plants_eia860_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['reporting_frequencies_eia.code'], name=op.f('fk_plants_eia860_reporting_frequency_code_reporting_frequencies_eia')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['sector_consolidated_eia.code'], name=op.f('fk_plants_eia860_sector_id_eia_sector_consolidated_eia')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_plants_eia860_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_plants_eia860_sector_id_eia_core_eia__codes_sector_consolidated')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_plants_eia860_utility_id_eia_utilities_eia860')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_plants_eia860'))
)
@@ -1986,7 +1986,7 @@ def upgrade() -> None:
sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['power_purchase_types_ferc1.code'], name=op.f('fk_purchased_power_ferc1_purchase_type_code_power_purchase_types_ferc1')),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types')),
sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1'))
)
op.create_table('retained_earnings_ferc1',
@@ -2140,58 +2140,58 @@ def upgrade() -> None:
sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['energy_sources_eia.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['energy_sources_eia.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_2_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['energy_sources_eia.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_3_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['energy_sources_eia.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_4_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_status'], ['boiler_status_eia.code'], name=op.f('fk_boilers_eia860_boiler_status_boiler_status_eia')),
- sa.ForeignKeyConstraint(['boiler_type'], ['boiler_types_eia.code'], name=op.f('fk_boilers_eia860_boiler_type_boiler_types_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_boilers_eia860_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['firing_types_eia.code'], name=op.f('fk_boilers_eia860_firing_type_1_firing_types_eia')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['firing_types_eia.code'], name=op.f('fk_boilers_eia860_firing_type_2_firing_types_eia')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['firing_types_eia.code'], name=op.f('fk_boilers_eia860_firing_type_3_firing_types_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_1_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_2_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_3_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_4_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_5_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_6_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_1_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_2_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_3_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_1_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_2_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_3_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['environmental_equipment_manufacturers_eia.code'], name=op.f('fk_boilers_eia860_nox_control_manufacturer_code_environmental_equipment_manufacturers_eia')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_1_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_2_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_3_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_1_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_2_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_3_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['nox_control_status_eia.code'], name=op.f('fk_boilers_eia860_nox_control_status_code_nox_control_status_eia')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['particulate_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_1_particulate_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['particulate_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_2_particulate_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['particulate_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_3_particulate_compliance_strategies_eia')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_boilers_eia860_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_boilers_eia860_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boilers_eia860_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_boilers_eia860_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_boilers_eia860_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_boilers_eia860_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_boilers_eia860_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_boilers_eia860_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_boilers_eia860_plant_id_eia_boilers_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_boilers_eia860_plant_id_eia_plants_eia860')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['regulations_eia.code'], name=op.f('fk_boilers_eia860_regulation_mercury_regulations_eia')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['regulations_eia.code'], name=op.f('fk_boilers_eia860_regulation_nox_regulations_eia')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['regulations_eia.code'], name=op.f('fk_boilers_eia860_regulation_particulate_regulations_eia')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['regulations_eia.code'], name=op.f('fk_boilers_eia860_regulation_so2_regulations_eia')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_1_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_2_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_3_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_1_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_2_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_3_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_1_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_2_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_3_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['unit_nox'], ['nox_units_eia.code'], name=op.f('fk_boilers_eia860_unit_nox_nox_units_eia')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['particulate_units_eia.code'], name=op.f('fk_boilers_eia860_unit_particulate_particulate_units_eia')),
- sa.ForeignKeyConstraint(['unit_so2'], ['so2_units_eia.code'], name=op.f('fk_boilers_eia860_unit_so2_so2_units_eia')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['wet_dry_bottom_eia.code'], name=op.f('fk_boilers_eia860_wet_dry_bottom_wet_dry_bottom_eia')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_boilers_eia860_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_boilers_eia860_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_boilers_eia860_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_boilers_eia860_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_boilers_eia860'))
)
op.create_table('denorm_fuel_by_plant_ferc1',
@@ -2285,10 +2285,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_plants_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_yearly_eia923'))
@@ -2432,12 +2432,12 @@ def upgrade() -> None:
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['balancing_authorities_eia.code'], name=op.f('fk_denorm_plants_eia_balancing_authority_code_eia_balancing_authorities_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_plants_eia_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_denorm_plants_eia_plant_id_eia_plants_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_eia_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['reporting_frequencies_eia.code'], name=op.f('fk_denorm_plants_eia_reporting_frequency_code_reporting_frequencies_eia')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['sector_consolidated_eia.code'], name=op.f('fk_denorm_plants_eia_sector_id_eia_sector_consolidated_eia')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_plants_eia_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_denorm_plants_eia'))
@@ -2740,29 +2740,29 @@ def upgrade() -> None:
sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_generators_eia860_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_1_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_2_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_3_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_1_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_2_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_3_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_energy_source_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_energy_source_code_2_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_energy_source_code_3_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_energy_source_code_4_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_energy_source_code_5_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_energy_source_code_6_energy_sources_eia')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['operational_status_eia.code'], name=op.f('fk_generators_eia860_operational_status_code_operational_status_eia')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_planned_energy_source_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generators_eia860_planned_new_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generators_eia860_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_generators_eia860_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generators_eia860_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generators_eia860_plant_id_eia_generators_entity_eia')),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_generators_eia860_plant_id_eia_plants_eia860')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generators_eia860_prime_mover_code_prime_movers_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_startup_source_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_startup_source_code_2_energy_sources_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_startup_source_code_3_energy_sources_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['energy_sources_eia.code'], name=op.f('fk_generators_eia860_startup_source_code_4_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generators_eia860_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_4_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_generators_eia860_utility_id_eia_utilities_eia860')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_generators_eia860'))
)
@@ -2782,7 +2782,7 @@ def upgrade() -> None:
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('plant_type', sa.Enum('storage', 'run_of_river_with_storage', 'run_of_river', 'na_category', 'hydro'), nullable=True),
+ sa.Column('plant_type', sa.Enum('storage', 'run_of_river_with_storage', 'hydro', 'run_of_river', 'na_category'), nullable=True),
sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
@@ -2886,7 +2886,7 @@ def upgrade() -> None:
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Enum('photovoltaic', 'internal_combustion', 'wind', 'combustion_turbine', 'nuclear', 'geothermal', 'steam', 'solar_thermal', 'na_category', 'combined_cycle'), nullable=True),
+ sa.Column('plant_type', sa.Enum('internal_combustion', 'photovoltaic', 'solar_thermal', 'combined_cycle', 'combustion_turbine', 'geothermal', 'na_category', 'steam', 'nuclear', 'wind'), nullable=True),
sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
@@ -2929,7 +2929,7 @@ def upgrade() -> None:
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_boiler_cooling_assn_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boiler_cooling_assn_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_cooling_assn_eia860_plant_id_eia_boilers_eia860')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_boiler_cooling_assn_eia860'))
)
@@ -2940,7 +2940,7 @@ def upgrade() -> None:
sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_boiler_emissions_control_equipment_assn_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boiler_emissions_control_equipment_assn_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_emissions_control_equipment_assn_eia860_plant_id_eia_boilers_eia860')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_boiler_emissions_control_equipment_assn_eia860'))
)
@@ -2955,11 +2955,11 @@ def upgrade() -> None:
sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['boiler_generator_assn_types_eia.code'], name=op.f('fk_boiler_generator_assn_eia860_boiler_generator_assn_type_code_boiler_generator_assn_types_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_boiler_generator_assn_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_boiler_generator_assn_eia860_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boiler_generator_assn_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_generator_assn_eia860_plant_id_eia_boilers_eia860')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_boiler_generator_assn_eia860_plant_id_eia_generators_eia860')),
- sa.ForeignKeyConstraint(['steam_plant_type_code'], ['steam_plant_types_eia.code'], name=op.f('fk_boiler_generator_assn_eia860_steam_plant_type_code_steam_plant_types_eia')),
+ sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_boiler_generator_assn_eia860_steam_plant_type_code_core_eia__codes_steam_plant_types')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_boiler_generator_assn_eia860'))
)
op.create_table('boiler_stack_flue_assn_eia860',
@@ -3001,10 +3001,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_boilers_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_yearly_eia923'))
@@ -3117,61 +3117,61 @@ def upgrade() -> None:
sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_2_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_3_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['energy_sources_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_4_energy_sources_eia')),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['environmental_equipment_manufacturers_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_manufacturer_code_environmental_equipment_manufacturers_eia')),
- sa.ForeignKeyConstraint(['boiler_status'], ['boiler_status_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_status_boiler_status_eia')),
- sa.ForeignKeyConstraint(['boiler_type'], ['boiler_types_eia.code'], name=op.f('fk_denorm_boilers_eia_boiler_type_boiler_types_eia')),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_boilers_eia_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['firing_types_eia.code'], name=op.f('fk_denorm_boilers_eia_firing_type_1_firing_types_eia')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['firing_types_eia.code'], name=op.f('fk_denorm_boilers_eia_firing_type_2_firing_types_eia')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['firing_types_eia.code'], name=op.f('fk_denorm_boilers_eia_firing_type_3_firing_types_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_1_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_2_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_3_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_4_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_5_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_6_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_proposed_strategy_1_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_proposed_strategy_2_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['mercury_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_proposed_strategy_3_mercury_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_1_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_2_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_3_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['environmental_equipment_manufacturers_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_manufacturer_code_environmental_equipment_manufacturers_eia')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_1_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_2_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_3_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_1_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_2_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['nox_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_3_nox_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['nox_control_status_eia.code'], name=op.f('fk_denorm_boilers_eia_nox_control_status_code_nox_control_status_eia')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['particulate_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_1_particulate_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['particulate_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_2_particulate_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['particulate_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_3_particulate_compliance_strategies_eia')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boilers_eia_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_denorm_boilers_eia_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_denorm_boilers_eia_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_denorm_boilers_eia_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_boilers_eia_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_denorm_boilers_eia_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_denorm_boilers_eia_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_denorm_boilers_eia_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_denorm_boilers_eia_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_denorm_boilers_eia_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_denorm_boilers_eia_plant_id_eia_boilers_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boilers_eia_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['regulations_eia.code'], name=op.f('fk_denorm_boilers_eia_regulation_mercury_regulations_eia')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['regulations_eia.code'], name=op.f('fk_denorm_boilers_eia_regulation_nox_regulations_eia')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['regulations_eia.code'], name=op.f('fk_denorm_boilers_eia_regulation_particulate_regulations_eia')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['regulations_eia.code'], name=op.f('fk_denorm_boilers_eia_regulation_so2_regulations_eia')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_1_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_2_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_3_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_1_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_2_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_3_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_1_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_2_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['so2_compliance_strategies_eia.code'], name=op.f('fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_3_so2_compliance_strategies_eia')),
- sa.ForeignKeyConstraint(['unit_nox'], ['nox_units_eia.code'], name=op.f('fk_denorm_boilers_eia_unit_nox_nox_units_eia')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['particulate_units_eia.code'], name=op.f('fk_denorm_boilers_eia_unit_particulate_particulate_units_eia')),
- sa.ForeignKeyConstraint(['unit_so2'], ['so2_units_eia.code'], name=op.f('fk_denorm_boilers_eia_unit_so2_so2_units_eia')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_denorm_boilers_eia_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_denorm_boilers_eia_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_denorm_boilers_eia_unit_so2_core_eia__codes_so2_units')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_boilers_eia_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boilers_eia_utility_id_pudl_utilities_pudl')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['wet_dry_bottom_eia.code'], name=op.f('fk_denorm_boilers_eia_wet_dry_bottom_wet_dry_bottom_eia')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_denorm_boilers_eia_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_denorm_boilers_eia'))
)
op.create_table('denorm_generation_yearly_eia923',
@@ -3294,29 +3294,29 @@ def upgrade() -> None:
sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_generators_eia_data_maturity_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_1_transport_1_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_1_transport_2_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_1_transport_3_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_2_transport_1_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_2_transport_2_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['fuel_transportation_modes_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_2_transport_3_fuel_transportation_modes_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_2_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_3_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_4_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_5_energy_sources_eia')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_6_energy_sources_eia')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['operational_status_eia.code'], name=op.f('fk_denorm_generators_eia_operational_status_code_operational_status_eia')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_planned_energy_source_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_generators_eia_planned_new_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generators_eia_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_generators_eia_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_generators_eia_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_generators_eia_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_generators_eia_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_generators_eia_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_generators_eia_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_denorm_generators_eia_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generators_eia_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_denorm_generators_eia_plant_id_eia_generators_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generators_eia_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_denorm_generators_eia_prime_mover_code_prime_movers_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_1_energy_sources_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_2_energy_sources_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_3_energy_sources_eia')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['energy_sources_eia.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_4_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_4_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_generators_eia_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generators_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generators_eia'))
@@ -3332,14 +3332,14 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('IL', 'SC', 'MI', 'HI', 'MO', 'ID', 'UT', 'TN', 'NU', 'KY', 'AZ', 'AB', 'MS', 'NS', 'GA', 'PE', 'SD', 'NE', 'NB', 'ME', 'BC', 'MD', 'FL', 'OK', 'NJ', 'CA', 'VT', 'KS', 'NC', 'AR', 'ND', 'NH', 'NL', 'TX', 'AK', 'NV', 'VA', 'OH', 'YT', 'PR', 'LA', 'WY', 'NY', 'AS', 'DE', 'GU', 'RI', 'NM', 'IA', 'AL', 'MT', 'ON', 'WA', 'VI', 'MA', 'MP', 'NT', 'PA', 'QC', 'SK', 'CT', 'WI', 'OR', 'WV', 'DC', 'MB', 'CO', 'MN', 'IN'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('AK', 'MB', 'OR', 'WA', 'AS', 'DC', 'DE', 'ME', 'MT', 'AR', 'QC', 'WI', 'UT', 'VI', 'RI', 'OH', 'IN', 'NJ', 'NU', 'TX', 'VT', 'NL', 'NS', 'OK', 'NC', 'BC', 'NV', 'AL', 'LA', 'CO', 'NH', 'CT', 'AB', 'MA', 'NB', 'YT', 'SC', 'WY', 'FL', 'KY', 'ND', 'NT', 'WV', 'MO', 'NM', 'NY', 'PA', 'PE', 'TN', 'VA', 'CA', 'AZ', 'ON', 'PR', 'IL', 'MN', 'MS', 'KS', 'HI', 'GU', 'NE', 'SD', 'IA', 'ID', 'MD', 'SK', 'MP', 'GA', 'MI'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('CAN', 'USA'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_denorm_ownership_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_denorm_ownership_eia860_plant_id_eia_generators_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_ownership_eia860_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_ownership_eia860_utility_id_eia_utilities_eia860')),
@@ -3382,9 +3382,9 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_plant_id_eia_generators_eia860')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_generation_fuel_by_generator_energy_source_owner_yearly_eia923'))
)
op.create_table('generation_fuel_by_generator_energy_source_yearly_eia923',
@@ -3397,9 +3397,9 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['energy_sources_eia.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_generators_eia860')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_generation_fuel_by_generator_energy_source_yearly_eia923'))
)
op.create_table('generation_fuel_by_generator_yearly_eia923',
@@ -3431,7 +3431,7 @@ def upgrade() -> None:
sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_heat_rate_by_generator_yearly_plant_id_eia_generators_eia860')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_heat_rate_by_generator_yearly_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_heat_rate_by_generator_yearly_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_heat_rate_by_generator_yearly'))
)
op.create_table('mcoe_generators_yearly',
@@ -3461,10 +3461,10 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['energy_sources_eia.code'], name=op.f('fk_mcoe_generators_yearly_energy_source_code_1_energy_sources_eia')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_mcoe_generators_yearly_plant_id_eia_generators_eia860')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_yearly_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['prime_movers_eia.code'], name=op.f('fk_mcoe_generators_yearly_prime_mover_code_prime_movers_eia')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_mcoe_generators_yearly_utility_id_eia_utilities_eia860')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_yearly_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_yearly'))
@@ -3492,14 +3492,14 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('IL', 'SC', 'MI', 'HI', 'MO', 'ID', 'UT', 'TN', 'NU', 'KY', 'AZ', 'AB', 'MS', 'NS', 'GA', 'PE', 'SD', 'NE', 'NB', 'ME', 'BC', 'MD', 'FL', 'OK', 'NJ', 'CA', 'VT', 'KS', 'NC', 'AR', 'ND', 'NH', 'NL', 'TX', 'AK', 'NV', 'VA', 'OH', 'YT', 'PR', 'LA', 'WY', 'NY', 'AS', 'DE', 'GU', 'RI', 'NM', 'IA', 'AL', 'MT', 'ON', 'WA', 'VI', 'MA', 'MP', 'NT', 'PA', 'QC', 'SK', 'CT', 'WI', 'OR', 'WV', 'DC', 'MB', 'CO', 'MN', 'IN'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('AK', 'MB', 'OR', 'WA', 'AS', 'DC', 'DE', 'ME', 'MT', 'AR', 'QC', 'WI', 'UT', 'VI', 'RI', 'OH', 'IN', 'NJ', 'NU', 'TX', 'VT', 'NL', 'NS', 'OK', 'NC', 'BC', 'NV', 'AL', 'LA', 'CO', 'NH', 'CT', 'AB', 'MA', 'NB', 'YT', 'SC', 'WY', 'FL', 'KY', 'ND', 'NT', 'WV', 'MO', 'NM', 'NY', 'PA', 'PE', 'TN', 'VA', 'CA', 'AZ', 'ON', 'PR', 'IL', 'MN', 'MS', 'KS', 'HI', 'GU', 'NE', 'SD', 'IA', 'ID', 'MD', 'SK', 'MP', 'GA', 'MI'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('CAN', 'USA'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['data_maturities.code'], name=op.f('fk_ownership_eia860_data_maturity_data_maturities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_ownership_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_ownership_eia860_plant_id_eia_generators_eia860')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_ownership_eia860_utility_id_eia_utilities_eia860')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_ownership_eia860'))
@@ -3649,51 +3649,51 @@ def downgrade() -> None:
op.drop_table('coalmine_eia923')
op.drop_table('boilers_entity_eia')
op.drop_table('advanced_metering_infrastructure_eia861')
- op.drop_table('wet_dry_bottom_eia')
op.drop_table('utility_assn_eia861')
op.drop_table('utilities_pudl')
op.drop_table('utilities_entity_eia')
- op.drop_table('steam_plant_types_eia')
- op.drop_table('so2_units_eia')
- op.drop_table('so2_compliance_strategies_eia')
- op.drop_table('sector_consolidated_eia')
op.drop_table('respondent_id_ferc714')
- op.drop_table('reporting_frequencies_eia')
- op.drop_table('regulations_eia')
- op.drop_table('prime_movers_eia')
op.drop_table('predicted_state_hourly_demand')
- op.drop_table('power_purchase_types_ferc1')
- op.drop_table('political_subdivisions')
op.drop_table('plants_pudl')
op.drop_table('plants_entity_eia')
- op.drop_table('particulate_units_eia')
- op.drop_table('particulate_compliance_strategies_eia')
- op.drop_table('operational_status_eia')
- op.drop_table('nox_units_eia')
- op.drop_table('nox_control_status_eia')
- op.drop_table('nox_compliance_strategies_eia')
- op.drop_table('momentary_interruptions_eia')
- op.drop_table('mercury_compliance_strategies_eia')
- op.drop_table('fuel_types_aer_eia')
- op.drop_table('fuel_transportation_modes_eia')
op.drop_table('fuel_receipts_costs_aggs_eia')
- op.drop_table('firing_types_eia')
- op.drop_table('ferc_accounts')
op.drop_table('epacamd_eia_subplant_ids')
- op.drop_table('environmental_equipment_manufacturers_eia')
- op.drop_table('energy_sources_eia')
- op.drop_table('emission_control_equipment_types_eia')
- op.drop_table('datasources')
- op.drop_table('data_maturities')
- op.drop_table('contract_types_eia')
+ op.drop_table('core_pudl__codes_subdivisions')
+ op.drop_table('core_pudl__codes_datasources')
+ op.drop_table('core_pudl__codes_data_maturities')
+ op.drop_table('core_ferc1__codes_power_purchase_types')
+ op.drop_table('core_ferc1__codes_accounts')
+ op.drop_table('core_eia__codes_wet_dry_bottom')
+ op.drop_table('core_eia__codes_steam_plant_types')
+ op.drop_table('core_eia__codes_so2_units')
+ op.drop_table('core_eia__codes_so2_compliance_strategies')
+ op.drop_table('core_eia__codes_sector_consolidated')
+ op.drop_table('core_eia__codes_reporting_frequencies')
+ op.drop_table('core_eia__codes_regulations')
+ op.drop_table('core_eia__codes_prime_movers')
+ op.drop_table('core_eia__codes_particulate_units')
+ op.drop_table('core_eia__codes_particulate_compliance_strategies')
+ op.drop_table('core_eia__codes_operational_status')
+ op.drop_table('core_eia__codes_nox_units')
+ op.drop_table('core_eia__codes_nox_control_status')
+ op.drop_table('core_eia__codes_nox_compliance_strategies')
+ op.drop_table('core_eia__codes_momentary_interruptions')
+ op.drop_table('core_eia__codes_mercury_compliance_strategies')
+ op.drop_table('core_eia__codes_fuel_types_aer')
+ op.drop_table('core_eia__codes_fuel_transportation_modes')
+ op.drop_table('core_eia__codes_firing_types')
+ op.drop_table('core_eia__codes_environmental_equipment_manufacturers')
+ op.drop_table('core_eia__codes_energy_sources')
+ op.drop_table('core_eia__codes_emission_control_equipment_types')
+ op.drop_table('core_eia__codes_contract_types')
+ op.drop_table('core_eia__codes_coalmine_types')
+ op.drop_table('core_eia__codes_boiler_types')
+ op.drop_table('core_eia__codes_boiler_status')
+ op.drop_table('core_eia__codes_boiler_generator_assn_types')
+ op.drop_table('core_eia__codes_balancing_authorities')
+ op.drop_table('core_eia__codes_averaging_periods')
op.drop_table('compiled_geometry_utility_eia861')
op.drop_table('compiled_geometry_balancing_authority_eia861')
- op.drop_table('coalmine_types_eia')
- op.drop_table('boiler_types_eia')
- op.drop_table('boiler_status_eia')
- op.drop_table('boiler_generator_assn_types_eia')
op.drop_table('balancing_authority_eia861')
op.drop_table('balancing_authority_assn_eia861')
- op.drop_table('balancing_authorities_eia')
- op.drop_table('averaging_periods_eia')
# ### end Alembic commands ###
diff --git a/src/pudl/etl/static_assets.py b/src/pudl/etl/static_assets.py
index 9d21e649b7..5abeceeace 100644
--- a/src/pudl/etl/static_assets.py
+++ b/src/pudl/etl/static_assets.py
@@ -50,8 +50,10 @@ def static_pudl_tables(context):
ds = context.resources.datastore
dataset_settings = context.resources.dataset_settings
- static_pudl_tables_dict = {"political_subdivisions": POLITICAL_SUBDIVISIONS}
- static_pudl_tables_dict["datasources"] = dataset_settings.make_datasources_table(ds)
+ static_pudl_tables_dict = {"core_pudl__codes_subdivisions": POLITICAL_SUBDIVISIONS}
+ static_pudl_tables_dict[
+ "core_pudl__codes_datasources"
+ ] = dataset_settings.make_datasources_table(ds)
return (
Output(output_name=table_name, value=df)
for table_name, df in static_pudl_tables_dict.items()
@@ -87,7 +89,7 @@ def static_ferc1_tables():
static_table_dict = _read_static_encoding_tables("static_ferc1")
static_table_dict.update(
{
- "ferc_accounts": FERC_ACCOUNTS[
+ "core_ferc1__codes_accounts": FERC_ACCOUNTS[
["ferc_account_id", "ferc_account_description"]
],
}
diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py
index d2506d2c1e..eef0f44f9f 100644
--- a/src/pudl/metadata/classes.py
+++ b/src/pudl/metadata/classes.py
@@ -204,7 +204,7 @@ def __repr_args__(self) -> list[tuple[str, Any]]:
"""Non-empty :class:`str` with no trailing or leading whitespace."""
SnakeCase = pydantic.constr(
- min_length=1, strict=True, regex=r"^[a-z][a-z0-9]*(_[a-z0-9]+)*$"
+ min_length=1, strict=True, regex=r"^[a-z_][a-z0-9_]*(_[a-z0-9]+)*$"
)
"""Snake-case variable name :class:`str` (e.g. 'pudl', 'entity_eia860')."""
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 0812ad545b..81c9ae3e8d 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -4,7 +4,7 @@
from pudl.metadata.codes import CODE_METADATA
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "balancing_authorities_eia": {
+ "core_eia__codes_balancing_authorities": {
"description": "A coding table describing balancing authorities in EIA-860 and EIA-923.",
"schema": {
"fields": ["code", "label", "description"],
@@ -51,7 +51,7 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "boiler_generator_assn_types_eia": {
+ "core_eia__codes_boiler_generator_assn_types": {
"description": "A coding table describing different types of boiler-generator associations in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -63,7 +63,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "boiler_status_eia": {
+ "core_eia__codes_boiler_status": {
"description": "A coding table describing different types of boiler status in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -75,7 +75,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "boiler_types_eia": {
+ "core_eia__codes_boiler_types": {
"description": "A coding table describing different types of boiler regulatory types in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -87,7 +87,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "environmental_equipment_manufacturers_eia": {
+ "core_eia__codes_environmental_equipment_manufacturers": {
"description": "A coding table describing manufacturers of boilers and environmental control equipment in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -104,7 +104,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "emission_control_equipment_types_eia": {
+ "core_eia__codes_emission_control_equipment_types": {
"description": "A coding table describing the type of emissions control equipment installed on a boiler.",
"schema": {
"fields": ["code", "label", "description"],
@@ -118,7 +118,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "firing_types_eia": {
+ "core_eia__codes_firing_types": {
"description": "A coding table describing different boiler firing types in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -132,7 +132,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "nox_compliance_strategies_eia": {
+ "core_eia__codes_nox_compliance_strategies": {
"description": "A coding table describing different compliance strategies used to control nitrogen oxide in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -156,7 +156,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "nox_control_status_eia": {
+ "core_eia__codes_nox_control_status": {
"description": "A coding table describing the operational status of nitrogen oxide control units associated with boilers in the EIA-860 data.",
"schema": {
"fields": ["code", "label", "description"],
@@ -172,7 +172,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "nox_units_eia": {
+ "core_eia__codes_nox_units": {
"description": "A coding table describing different units of measurement for nitrogen oxide in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -184,7 +184,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "mercury_compliance_strategies_eia": {
+ "core_eia__codes_mercury_compliance_strategies": {
"description": "A coding table describing different compliance strategies used to control mercury in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -208,7 +208,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "averaging_periods_eia": {
+ "core_eia__codes_averaging_periods": {
"description": "A coding table describing the averaging period specified by emissions statutes and regulation for in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -222,7 +222,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "particulate_compliance_strategies_eia": {
+ "core_eia__codes_particulate_compliance_strategies": {
"description": "A coding table describing different compliance strategies used to control particulate matter in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -240,7 +240,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "particulate_units_eia": {
+ "core_eia__codes_particulate_units": {
"description": "A coding table describing different units of measurement for particulate matter in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -252,7 +252,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "regulations_eia": {
+ "core_eia__codes_regulations": {
"description": "A coding table describing the different levels of statutes and codes under which boilers operate in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -271,7 +271,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "so2_compliance_strategies_eia": {
+ "core_eia__codes_so2_compliance_strategies": {
"description": "A coding table describing different compliance strategies used to control sulfur dioxide in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -295,7 +295,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "wet_dry_bottom_eia": {
+ "core_eia__codes_wet_dry_bottom": {
"description": "A coding table describing whether boiler has a wet or dry bottom in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -307,7 +307,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "so2_units_eia": {
+ "core_eia__codes_so2_units": {
"description": "A coding table describing different units of measurement for sulfur dioxide in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -319,7 +319,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "steam_plant_types_eia": {
+ "core_eia__codes_steam_plant_types": {
"description": "A coding table describing different types of steam plants in the EIA-860.",
"schema": {
"fields": ["code", "label", "description"],
@@ -331,7 +331,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "reporting_frequencies_eia": {
+ "core_eia__codes_reporting_frequencies": {
"description": "A coding table describing different types of reporting frequencies in plants in the EIA-923.",
"schema": {
"fields": ["code", "label", "description"],
@@ -343,7 +343,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "coalmine_types_eia": {
+ "core_eia__codes_coalmine_types": {
"description": "A coding table describing different types of coalmines reported as fuel sources in the EIA-923.",
"schema": {
"fields": ["code", "label", "description"],
@@ -355,7 +355,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "contract_types_eia": {
+ "core_eia__codes_contract_types": {
"description": "A coding table describing the various types of fuel supply contracts reported in EIA-923.",
"schema": {
"fields": ["code", "label", "description"],
@@ -367,7 +367,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "operational_status_eia": {
+ "core_eia__codes_operational_status": {
"description": "Codes and metadata pertaining to operational status reported to EIA. Compiled from EIA-860 instructions and EIA-923 file layout spreadsheets.",
"schema": {
"fields": [
@@ -386,7 +386,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "data_maturities": {
+ "core_pudl__codes_data_maturities": {
"description": "Level of maturities of data records. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
"schema": {
"fields": ["code", "description"],
@@ -400,7 +400,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "energy_sources_eia": {
+ "core_eia__codes_energy_sources": {
"description": "Codes and metadata pertaining to energy sources reported to EIA. Compiled from EIA-860 instructions and EIA-923 file layout spreadsheets.",
"schema": {
"fields": [
@@ -451,7 +451,7 @@
"field_namespace": "eia",
"create_database_schema": False,
},
- "fuel_transportation_modes_eia": {
+ "core_eia__codes_fuel_transportation_modes": {
"description": "Long descriptions of the fuel transportation modes reported in the EIA-860 and EIA-923.",
"schema": {
"fields": ["code", "label", "description"],
@@ -474,7 +474,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "fuel_types_aer_eia": {
+ "core_eia__codes_fuel_types_aer": {
"description": "Descriptive labels for aggregated fuel types used in the Annual Energy Review. See EIA-923 Fuel Code table for additional information.",
"schema": {
"fields": ["code", "description"],
@@ -523,7 +523,7 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "momentary_interruptions_eia": {
+ "core_eia__codes_momentary_interruptions": {
"description": "A coding table for utility definitions of momentary service interruptions.",
"schema": {
"fields": ["code", "label", "description"],
@@ -629,7 +629,7 @@
"field_namespace": "ppe",
"create_database_schema": False,
},
- "prime_movers_eia": {
+ "core_eia__codes_prime_movers": {
"description": "Long descriptions explaining the short prime mover codes reported in the EIA-860 and EIA-923.",
"schema": {
"fields": ["code", "label", "description"],
@@ -646,7 +646,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "sector_consolidated_eia": {
+ "core_eia__codes_sector_consolidated": {
"description": "Long descriptions for the EIA consolidated NAICS sector codes. Codes and descriptions taken from the EIA-923 File Layout spreadsheet.",
"schema": {
"fields": ["code", "label", "description"],
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index 8f458e5dba..9ff3a68cad 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -304,7 +304,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "ferc_accounts": {
+ "core_ferc1__codes_accounts": {
"description": "Account numbers from the FERC Uniform System of Accounts for Electric Plant, which is defined in Code of Federal Regulations (CFR) Title 18, Chapter I, Subchapter C, Part 101. (See e.g. https://www.law.cornell.edu/cfr/text/18/part-101).",
"schema": {
"fields": ["ferc_account_id", "ferc_account_description"],
@@ -625,7 +625,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "power_purchase_types_ferc1": {
+ "core_ferc1__codes_power_purchase_types": {
"description": "Coding table defining different types of electricity power purchases.",
"schema": {
"fields": ["code", "label", "description"],
diff --git a/src/pudl/metadata/resources/pudl.py b/src/pudl/metadata/resources/pudl.py
index fec1782ab2..6c2c868965 100644
--- a/src/pudl/metadata/resources/pudl.py
+++ b/src/pudl/metadata/resources/pudl.py
@@ -5,7 +5,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "political_subdivisions": {
+ "core_pudl__codes_subdivisions": {
"title": "Political Subdivisions",
"description": (
"Various static attributes associated with states, provinces, and other "
@@ -64,7 +64,7 @@
"field_namespace": "pudl",
"sources": ["pudl"],
},
- "datasources": {
+ "core_pudl__codes_datasources": {
"schema": {
"fields": [
"datasource",
From 5f815b3fd79a236b39a0e6a149edfe7c5f1935f8 Mon Sep 17 00:00:00 2001
From: thinky
Date: Fri, 1 Sep 2023 12:17:46 -0400
Subject: [PATCH 02/70] Rename Census DP1 assets
---
src/pudl/analysis/service_territory.py | 8 +++++---
src/pudl/analysis/state_demand.py | 12 +++++++-----
src/pudl/etl/static_assets.py | 2 +-
src/pudl/metadata/resources/ferc1.py | 2 +-
src/pudl/output/censusdp1tract.py | 2 +-
src/pudl/output/ferc714.py | 9 +++++----
6 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/src/pudl/analysis/service_territory.py b/src/pudl/analysis/service_territory.py
index 322868ee29..1bde9aa4d6 100644
--- a/src/pudl/analysis/service_territory.py
+++ b/src/pudl/analysis/service_territory.py
@@ -384,7 +384,7 @@ def dagster_compile_geoms(
denorm_utilities_eia: pd.DataFrame,
service_territory_eia861: pd.DataFrame,
utility_assn_eia861: pd.DataFrame,
- county_censusdp1: pd.DataFrame,
+ core_censusdp1__entity_county: pd.DataFrame,
):
"""Compile all available utility or balancing authority geometries.
@@ -402,7 +402,7 @@ def dagster_compile_geoms(
denorm_utilities_eia=denorm_utilities_eia,
service_territory_eia861=service_territory_eia861,
utility_assn_eia861=utility_assn_eia861,
- census_counties=county_censusdp1,
+ census_counties=core_censusdp1__entity_county,
entity_type=entity_type,
dissolve=dissolve,
limit_by_state=limit_by_state,
@@ -581,7 +581,9 @@ def main():
pudl_engine = sa.create_engine(PudlPaths().pudl_db)
# Load the US Census DP1 county data:
- county_gdf = pudl.etl.defs.load_asset_value(AssetKey("county_censusdp1"))
+ county_gdf = pudl.etl.defs.load_asset_value(
+ AssetKey("core_censusdp1__entity_county")
+ )
kwargs_dicts = [
{"entity_type": "util", "limit_by_state": False},
diff --git a/src/pudl/analysis/state_demand.py b/src/pudl/analysis/state_demand.py
index cc510b909f..1bd9e1abe1 100644
--- a/src/pudl/analysis/state_demand.py
+++ b/src/pudl/analysis/state_demand.py
@@ -525,7 +525,9 @@ def county_assignments_ferc714(
return df
-def census_counties(county_censusdp1: gpd.GeoDataFrame) -> gpd.GeoDataFrame:
+def census_counties(
+ core_censusdp1__entity_county: gpd.GeoDataFrame,
+) -> gpd.GeoDataFrame:
"""Load county attributes.
Args:
@@ -534,7 +536,7 @@ def census_counties(county_censusdp1: gpd.GeoDataFrame) -> gpd.GeoDataFrame:
Returns:
Dataframe with columns `county_id_fips` and `population`.
"""
- return county_censusdp1[["geoid10", "dp0010001"]].rename(
+ return core_censusdp1__entity_county[["geoid10", "dp0010001"]].rename(
columns={"geoid10": "county_id_fips", "dp0010001": "population"}
)
@@ -585,7 +587,7 @@ def total_state_sales_eia861(
def predicted_state_hourly_demand(
context,
imputed_hourly_demand_ferc714: pd.DataFrame,
- county_censusdp1: pd.DataFrame,
+ core_censusdp1__entity_county: pd.DataFrame,
fipsified_respondents_ferc714: pd.DataFrame,
sales_eia861: pd.DataFrame = None,
) -> pd.DataFrame:
@@ -594,7 +596,7 @@ def predicted_state_hourly_demand(
Args:
imputed_hourly_demand_ferc714: Hourly demand timeseries, with columns
`respondent_id_ferc714`, report `year`, `utc_datetime`, and `demand_mwh`.
- county_censusdp1: The county layer of the Census DP1 shapefile.
+ core_censusdp1__entity_county: The county layer of the Census DP1 shapefile.
fipsified_respondents_ferc714: Annual respondents with the county FIPS IDs
for their service territories.
sales_eia861: EIA 861 sales data. If provided, the predicted hourly demand is
@@ -610,7 +612,7 @@ def predicted_state_hourly_demand(
# Call necessary functions
count_assign_ferc714 = county_assignments_ferc714(fipsified_respondents_ferc714)
- counties = census_counties(county_censusdp1)
+ counties = census_counties(core_censusdp1__entity_county)
total_sales_eia861 = total_state_sales_eia861(sales_eia861)
# Pre-compute list of respondent-years with demand
diff --git a/src/pudl/etl/static_assets.py b/src/pudl/etl/static_assets.py
index 5abeceeace..2873b10ddd 100644
--- a/src/pudl/etl/static_assets.py
+++ b/src/pudl/etl/static_assets.py
@@ -89,7 +89,7 @@ def static_ferc1_tables():
static_table_dict = _read_static_encoding_tables("static_ferc1")
static_table_dict.update(
{
- "core_ferc1__codes_accounts": FERC_ACCOUNTS[
+ "core_ferc__codes_accounts": FERC_ACCOUNTS[
["ferc_account_id", "ferc_account_description"]
],
}
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index 9ff3a68cad..d635eab718 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -304,7 +304,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__codes_accounts": {
+ "core_ferc__codes_accounts": {
"description": "Account numbers from the FERC Uniform System of Accounts for Electric Plant, which is defined in Code of Federal Regulations (CFR) Title 18, Chapter I, Subchapter C, Part 101. (See e.g. https://www.law.cornell.edu/cfr/text/18/part-101).",
"schema": {
"fields": ["ferc_account_id", "ferc_account_description"],
diff --git a/src/pudl/output/censusdp1tract.py b/src/pudl/output/censusdp1tract.py
index 5886946765..f42cd8fbfc 100644
--- a/src/pudl/output/censusdp1tract.py
+++ b/src/pudl/output/censusdp1tract.py
@@ -15,7 +15,7 @@ def census_asset_factory(layer: str) -> AssetsDefinition:
@asset(
ins={"censusdp1tract_to_sqlite": AssetIn("censusdp1tract_to_sqlite")},
- name=f"{layer}_censusdp1",
+ name=f"core_censusdp1__entity_{layer}",
)
def census_layer(censusdp1tract_to_sqlite, **kwargs) -> gpd.GeoDataFrame:
"""Select one layer from the Census DP1 database.
diff --git a/src/pudl/output/ferc714.py b/src/pudl/output/ferc714.py
index 7ee8195392..a15c1bbe58 100644
--- a/src/pudl/output/ferc714.py
+++ b/src/pudl/output/ferc714.py
@@ -577,7 +577,8 @@ def fipsified_respondents_ferc714(
@asset(compute_kind="Python")
def georeferenced_counties_ferc714(
- fipsified_respondents_ferc714: pd.DataFrame, county_censusdp1: gpd.GeoDataFrame
+ fipsified_respondents_ferc714: pd.DataFrame,
+ core_censusdp1__entity_county: gpd.GeoDataFrame,
) -> gpd.GeoDataFrame:
"""Annual respondents with all associated county-level geometries.
@@ -588,7 +589,7 @@ def georeferenced_counties_ferc714(
of the FIPS IDs so you can also still do ID based analyses.
"""
counties_gdf = pudl.analysis.service_territory.add_geometries(
- fipsified_respondents_ferc714, census_gdf=county_censusdp1
+ fipsified_respondents_ferc714, census_gdf=core_censusdp1__entity_county
).pipe(apply_pudl_dtypes)
return counties_gdf
@@ -597,7 +598,7 @@ def georeferenced_counties_ferc714(
def georeferenced_respondents_ferc714(
fipsified_respondents_ferc714: pd.DataFrame,
summarized_demand_ferc714: pd.DataFrame,
- county_censusdp1: gpd.GeoDataFrame,
+ core_censusdp1__entity_county: gpd.GeoDataFrame,
) -> gpd.GeoDataFrame:
"""Annual respondents with a single all-encompassing geometry for each year.
@@ -612,7 +613,7 @@ def georeferenced_respondents_ferc714(
respondents_gdf = (
pudl.analysis.service_territory.add_geometries(
fipsified_respondents_ferc714,
- census_gdf=county_censusdp1,
+ census_gdf=core_censusdp1__entity_county,
dissolve=True,
dissolve_by=["report_date", "respondent_id_ferc714"],
)
From 8da9db6fdf8afd70813ffac6fb1c85281b370d49 Mon Sep 17 00:00:00 2001
From: thinky
Date: Fri, 1 Sep 2023 13:00:46 -0400
Subject: [PATCH 03/70] Test doc fix
---
src/pudl/metadata/codes.py | 62 ++++++++++++++--------------
src/pudl/metadata/fields.py | 36 ++++++++++++----
src/pudl/metadata/resources/eia.py | 62 ++++++++++++++--------------
src/pudl/metadata/resources/ferc1.py | 2 +-
src/pudl/output/eia860.py | 2 +-
src/pudl/transform/eia860.py | 12 ++++--
src/pudl/transform/eia923.py | 6 +--
7 files changed, 105 insertions(+), 77 deletions(-)
diff --git a/src/pudl/metadata/codes.py b/src/pudl/metadata/codes.py
index c1d2dbf367..a2d8646641 100644
--- a/src/pudl/metadata/codes.py
+++ b/src/pudl/metadata/codes.py
@@ -20,7 +20,7 @@
import pandas as pd
CODE_METADATA: dict[str, dict[str, Any]] = {
- "boiler_status_eia": {
+ "core_eia__codes_boiler_status": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -71,7 +71,7 @@
},
"ignored_codes": [0, "OC", "T", "0", "df"],
},
- "boiler_types_eia": {
+ "core_eia__codes_boiler_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -105,7 +105,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "coalmine_types_eia": {
+ "core_eia__codes_coalmine_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -138,7 +138,7 @@
},
"ignored_codes": [],
},
- "environmental_equipment_manufacturers_eia": {
+ "core_eia__codes_environmental_equipment_manufacturers": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -352,7 +352,7 @@
"code_fixes": {},
"ignored_codes": ["NA", "IN"],
},
- "emission_control_equipment_types_eia": {
+ "core_eia__codes_emission_control_equipment_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -441,7 +441,7 @@
},
"ignored_codes": ["HRSG1", "HRSG2", "FGD", "OV"],
},
- "firing_types_eia": {
+ "core_eia__codes_firing_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -482,7 +482,7 @@
},
"ignored_codes": [],
},
- "nox_compliance_strategies_eia": {
+ "core_eia__codes_nox_compliance_strategies": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -526,7 +526,7 @@
"code_fixes": {"H2": "H2O", "NH": "NH3", "ST": "STM", "ln": "LN"},
"ignored_codes": ["NA"],
},
- "nox_control_status_eia": {
+ "core_eia__codes_nox_control_status": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -570,7 +570,7 @@
"code_fixes": {},
"ignored_codes": ["NA"],
},
- "nox_units_eia": {
+ "core_eia__codes_nox_units": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -601,7 +601,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "averaging_periods_eia": {
+ "core_eia__codes_averaging_periods": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -627,7 +627,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "particulate_compliance_strategies_eia": {
+ "core_eia__codes_particulate_compliance_strategies": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -649,7 +649,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "particulate_units_eia": {
+ "core_eia__codes_particulate_units": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -689,7 +689,7 @@
"code_fixes": {"DP": "PB"},
"ignored_codes": [],
},
- "power_purchase_types_ferc1": {
+ "core_ferc1__codes_power_purchase_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -770,7 +770,7 @@
"0",
],
},
- "momentary_interruptions_eia": {
+ "core_eia__codes_momentary_interruptions": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -889,7 +889,7 @@
},
"ignored_codes": [],
},
- "boiler_generator_assn_types_eia": {
+ "core_eia__codes_boiler_generator_assn_types": {
"df": pd.DataFrame(
columns=[
"code",
@@ -904,7 +904,7 @@
"code_fixes": {"t": "T", "a": "A"},
"ignored_codes": ["1"],
},
- "operational_status_eia": {
+ "core_eia__codes_operational_status": {
"df": pd.DataFrame(
columns=["code", "label", "description", "operational_status"],
data=[
@@ -1034,7 +1034,7 @@
},
"ignored_codes": ["CS"],
},
- "energy_sources_eia": {
+ "core_eia__codes_energy_sources": {
"df": pd.DataFrame(
columns=[
"code",
@@ -1580,7 +1580,7 @@
"ST",
],
},
- "fuel_transportation_modes_eia": {
+ "core_eia__codes_fuel_transportation_modes": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -1646,7 +1646,7 @@
},
"ignored_codes": ["UN"],
},
- "fuel_types_aer_eia": {
+ "core_eia__codes_fuel_types_aer": {
"df": pd.DataFrame(
columns=["code", "description"],
data=[
@@ -1673,7 +1673,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "contract_types_eia": {
+ "core_eia__codes_contract_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -1698,7 +1698,7 @@
"code_fixes": {"N": "NC"},
"ignored_codes": [],
},
- "prime_movers_eia": {
+ "core_eia__codes_prime_movers": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -1775,7 +1775,7 @@
"code_fixes": {"ic": "IC"}, # there is literally one 'ic' from 2002.
"ignored_codes": [],
},
- "sector_consolidated_eia": {
+ "core_eia__codes_sector_consolidated": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -1815,7 +1815,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "steam_plant_types_eia": {
+ "core_eia__codes_steam_plant_types": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -1844,7 +1844,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "reporting_frequencies_eia": {
+ "core_eia__codes_reporting_frequencies": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -1868,7 +1868,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "data_maturities": {
+ "core_pudl__codes_data_maturities": {
"df": pd.DataFrame(
columns=["code", "description"],
data=[
@@ -1893,7 +1893,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "balancing_authorities_eia": {
+ "core_eia__codes_balancing_authorities": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -2143,7 +2143,7 @@
"GRID", # 2022 860m code for plant ID 55328 (code: CSTO for previous years)
],
},
- "regulations_eia": {
+ "core_eia__codes_regulations": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -2167,7 +2167,7 @@
"code_fixes": {"St": "ST"},
"ignored_codes": ["NA", "XX"],
},
- "so2_compliance_strategies_eia": { # TO DO: harmonize these columns with envr equip data when integrated.
+ "core_eia__codes_so2_compliance_strategies": { # TO DO: harmonize these columns with envr equip data when integrated.
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -2222,7 +2222,7 @@
"code_fixes": {"NC": "NP"},
"ignored_codes": ["NA", "DB"],
},
- "so2_units_eia": {
+ "core_eia__codes_so2_units": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -2264,7 +2264,7 @@
"code_fixes": {},
"ignored_codes": [],
},
- "mercury_compliance_strategies_eia": { # TO DO: harmonize with 2021 data and equip data (most cols here should move to equip table.)
+ "core_eia__codes_mercury_compliance_strategies": { # TO DO: harmonize with 2021 data and equip data (most cols here should move to equip table.)
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
@@ -2370,7 +2370,7 @@
"code_fixes": {},
"ignored_codes": ["NA", "MC", "NP"],
},
- "wet_dry_bottom_eia": {
+ "core_eia__codes_wet_dry_bottom": {
"df": pd.DataFrame(
columns=["code", "label", "description"],
data=[
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 548b0e0cf9..4bd1012d13 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -1001,7 +1001,11 @@
"description": "Original fuel from which this refined fuel was derived.",
"constraints": {
"enum": sorted(
- set(CODE_METADATA["energy_sources_eia"]["df"]["fuel_derived_from"])
+ set(
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"][
+ "fuel_derived_from"
+ ]
+ )
)
},
},
@@ -1017,7 +1021,11 @@
"description": "High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.",
"constraints": {
"enum": sorted(
- set(CODE_METADATA["energy_sources_eia"]["df"]["fuel_group_eia"])
+ set(
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"][
+ "fuel_group_eia"
+ ]
+ )
)
},
},
@@ -1032,7 +1040,11 @@
"description": "Physical phase of matter of the fuel.",
"constraints": {
"enum": sorted(
- set(CODE_METADATA["energy_sources_eia"]["df"]["fuel_phase"].dropna())
+ set(
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"][
+ "fuel_phase"
+ ].dropna()
+ )
)
},
},
@@ -1059,7 +1071,11 @@
"description": "Simplified fuel type code used in PUDL",
"constraints": {
"enum": sorted(
- set(CODE_METADATA["energy_sources_eia"]["df"].fuel_type_code_pudl)
+ set(
+ CODE_METADATA["core_eia__codes_energy_sources"][
+ "df"
+ ].fuel_type_code_pudl
+ )
)
},
},
@@ -2127,7 +2143,9 @@
"description": "Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
"constraints": {
"enum": sorted(
- set(CODE_METADATA["reporting_frequencies_eia"]["df"]["code"])
+ set(
+ CODE_METADATA["core_eia__codes_reporting_frequencies"]["df"]["code"]
+ )
)
},
},
@@ -2827,10 +2845,14 @@
},
"plant_parts_eia": {
"energy_source_code_1": {
- "constraints": {"enum": set(CODE_METADATA["energy_sources_eia"]["df"].code)}
+ "constraints": {
+ "enum": set(CODE_METADATA["core_eia__codes_energy_sources"]["df"].code)
+ }
},
"prime_movers_eia": {
- "constraints": {"enum": set(CODE_METADATA["prime_movers_eia"]["df"].code)}
+ "constraints": {
+ "enum": set(CODE_METADATA["core_eia__codes_prime_movers"]["df"].code)
+ }
},
"technology_description": {"constraints": {"enum": set(TECH_DESCRIPTIONS)}},
},
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 81c9ae3e8d..57337cc1b8 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -30,7 +30,7 @@
],
},
},
- "encoder": CODE_METADATA["balancing_authorities_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_balancing_authorities"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -58,7 +58,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["boiler_generator_assn_type_code"]]},
},
- "encoder": CODE_METADATA["boiler_generator_assn_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_boiler_generator_assn_types"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -70,7 +70,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["boiler_status"]]},
},
- "encoder": CODE_METADATA["boiler_status_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_boiler_status"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -82,7 +82,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["boiler_type"]]},
},
- "encoder": CODE_METADATA["boiler_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_boiler_types"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -99,7 +99,9 @@
]
},
},
- "encoder": CODE_METADATA["environmental_equipment_manufacturers_eia"],
+ "encoder": CODE_METADATA[
+ "core_eia__codes_environmental_equipment_manufacturers"
+ ],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -113,7 +115,7 @@
"fields": [["emission_control_equipment_type_code"]],
},
},
- "encoder": CODE_METADATA["emission_control_equipment_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_emission_control_equipment_types"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -127,7 +129,7 @@
"fields": [["firing_type_1"], ["firing_type_2"], ["firing_type_3"]]
},
},
- "encoder": CODE_METADATA["firing_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_firing_types"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -151,7 +153,7 @@
]
},
},
- "encoder": CODE_METADATA["nox_compliance_strategies_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_nox_compliance_strategies"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -167,7 +169,7 @@
]
},
},
- "encoder": CODE_METADATA["nox_control_status_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_nox_control_status"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -179,7 +181,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["unit_nox"]]},
},
- "encoder": CODE_METADATA["nox_units_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_nox_units"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -203,7 +205,7 @@
]
},
},
- "encoder": CODE_METADATA["mercury_compliance_strategies_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_mercury_compliance_strategies"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -217,7 +219,7 @@
"fields": [["period_nox"], ["period_particulate"], ["period_so2"]]
},
},
- "encoder": CODE_METADATA["averaging_periods_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_averaging_periods"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -235,7 +237,7 @@
]
},
},
- "encoder": CODE_METADATA["particulate_compliance_strategies_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_particulate_compliance_strategies"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -247,7 +249,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["unit_particulate"]]},
},
- "encoder": CODE_METADATA["particulate_units_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_particulate_units"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -266,7 +268,7 @@
]
},
},
- "encoder": CODE_METADATA["regulations_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_regulations"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -290,7 +292,7 @@
]
},
},
- "encoder": CODE_METADATA["so2_compliance_strategies_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_so2_compliance_strategies"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -302,7 +304,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["wet_dry_bottom"]]},
},
- "encoder": CODE_METADATA["wet_dry_bottom_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_wet_dry_bottom"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -314,7 +316,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["unit_so2"]]},
},
- "encoder": CODE_METADATA["so2_units_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_so2_units"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -326,7 +328,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["steam_plant_type_code"]]},
},
- "encoder": CODE_METADATA["steam_plant_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_steam_plant_types"],
"sources": ["eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -338,7 +340,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["reporting_frequency_code"]]},
},
- "encoder": CODE_METADATA["reporting_frequencies_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_reporting_frequencies"],
"sources": ["eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -350,7 +352,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["mine_type_code"]]},
},
- "encoder": CODE_METADATA["coalmine_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_coalmine_types"],
"sources": ["eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -362,7 +364,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["contract_type_code"]]},
},
- "encoder": CODE_METADATA["contract_types_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_contract_types"],
"sources": ["eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -381,7 +383,7 @@
"fields": [["operational_status_code"]],
},
},
- "encoder": CODE_METADATA["operational_status_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_operational_status"],
"sources": ["eia860", "eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -395,7 +397,7 @@
"fields": [["data_maturity"]],
},
},
- "encoder": CODE_METADATA["data_maturities"],
+ "encoder": CODE_METADATA["core_pudl__codes_data_maturities"],
"sources": ["eia860", "eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -437,7 +439,7 @@
],
},
},
- "encoder": CODE_METADATA["energy_sources_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_energy_sources"],
"sources": ["eia860", "eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -469,7 +471,7 @@
]
},
},
- "encoder": CODE_METADATA["fuel_transportation_modes_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_fuel_transportation_modes"],
"sources": ["eia860", "eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -481,7 +483,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["fuel_type_code_aer"]]},
},
- "encoder": CODE_METADATA["fuel_types_aer_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_fuel_types_aer"],
"sources": ["eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -530,7 +532,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["momentary_interruption_definition"]]},
},
- "encoder": CODE_METADATA["momentary_interruptions_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_momentary_interruptions"],
"sources": ["eia861"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -641,7 +643,7 @@
]
},
},
- "encoder": CODE_METADATA["prime_movers_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_prime_movers"],
"sources": ["eia923", "eia860"],
"etl_group": "static_eia",
"field_namespace": "eia",
@@ -653,7 +655,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["sector_id_eia"]]},
},
- "encoder": CODE_METADATA["sector_consolidated_eia"],
+ "encoder": CODE_METADATA["core_eia__codes_sector_consolidated"],
"sources": ["eia860", "eia923"],
"etl_group": "static_eia",
"field_namespace": "eia",
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index d635eab718..ef53d06b51 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -632,7 +632,7 @@
"primary_key": ["code"],
"foreign_key_rules": {"fields": [["purchase_type_code"]]},
},
- "encoder": CODE_METADATA["power_purchase_types_ferc1"],
+ "encoder": CODE_METADATA["core_ferc1__codes_power_purchase_types"],
"sources": ["ferc1"],
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
diff --git a/src/pudl/output/eia860.py b/src/pudl/output/eia860.py
index 4836010f30..a21d99182b 100644
--- a/src/pudl/output/eia860.py
+++ b/src/pudl/output/eia860.py
@@ -96,7 +96,7 @@ def denorm_emissions_control_equipment_eia860(
# Add a column for operational status
emce_df["operational_status"] = emce_df.operational_status_code.str.upper().map(
pudl.helpers.label_map(
- CODE_METADATA["operational_status_eia"]["df"],
+ CODE_METADATA["core_eia__codes_operational_status"]["df"],
from_col="code",
to_col="operational_status",
null_value=pd.NA,
diff --git a/src/pudl/transform/eia860.py b/src/pudl/transform/eia860.py
index 539c18f1f0..ba68c00f05 100644
--- a/src/pudl/transform/eia860.py
+++ b/src/pudl/transform/eia860.py
@@ -338,7 +338,7 @@ def _core_eia860__generators(
gens_df["fuel_type_code_pudl"] = gens_df.energy_source_code_1.str.upper().map(
pudl.helpers.label_map(
- CODE_METADATA["energy_sources_eia"]["df"],
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"],
from_col="code",
to_col="fuel_type_code_pudl",
null_value=pd.NA,
@@ -347,7 +347,7 @@ def _core_eia860__generators(
gens_df["operational_status"] = gens_df.operational_status_code.str.upper().map(
pudl.helpers.label_map(
- CODE_METADATA["operational_status_eia"]["df"],
+ CODE_METADATA["core_eia__codes_operational_status"]["df"],
from_col="code",
to_col="operational_status",
null_value=pd.NA,
@@ -730,7 +730,9 @@ def _core_eia860__boilers(
# Add boiler manufacturer name to column
b_df["boiler_manufacturer"] = b_df.boiler_manufacturer_code.map(
pudl.helpers.label_map(
- CODE_METADATA["environmental_equipment_manufacturers_eia"]["df"],
+ CODE_METADATA["core_eia__codes_environmental_equipment_manufacturers"][
+ "df"
+ ],
from_col="code",
to_col="description",
null_value=pd.NA,
@@ -739,7 +741,9 @@ def _core_eia860__boilers(
b_df["nox_control_manufacturer"] = b_df.nox_control_manufacturer_code.map(
pudl.helpers.label_map(
- CODE_METADATA["environmental_equipment_manufacturers_eia"]["df"],
+ CODE_METADATA["core_eia__codes_environmental_equipment_manufacturers"][
+ "df"
+ ],
from_col="code",
to_col="description",
null_value=pd.NA,
diff --git a/src/pudl/transform/eia923.py b/src/pudl/transform/eia923.py
index 35fa349782..5f7f12bc24 100644
--- a/src/pudl/transform/eia923.py
+++ b/src/pudl/transform/eia923.py
@@ -669,7 +669,7 @@ def _core_eia_923__generation_fuel_eia923(raw_eia923__generation_fuel: pd.DataFr
gen_fuel["fuel_type_code_pudl"] = gen_fuel.energy_source_code.map(
pudl.helpers.label_map(
- CODE_METADATA["energy_sources_eia"]["df"],
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"],
from_col="code",
to_col="fuel_type_code_pudl",
null_value=pd.NA,
@@ -874,7 +874,7 @@ def _core_eia923__boiler_fuel(raw_eia923__boiler_fuel: pd.DataFrame) -> pd.DataF
# Add a simplified PUDL fuel type
bf_df["fuel_type_code_pudl"] = bf_df.energy_source_code.map(
pudl.helpers.label_map(
- CODE_METADATA["energy_sources_eia"]["df"],
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"],
from_col="code",
to_col="fuel_type_code_pudl",
null_value=pd.NA,
@@ -1207,7 +1207,7 @@ def _core_eia923__fuel_receipts_costs(
)
frc_df["fuel_type_code_pudl"] = frc_df.energy_source_code.map(
pudl.helpers.label_map(
- CODE_METADATA["energy_sources_eia"]["df"],
+ CODE_METADATA["core_eia__codes_energy_sources"]["df"],
from_col="code",
to_col="fuel_type_code_pudl",
null_value=pd.NA,
From bb75aa16890a32ad116e9c5581c0b0437cf3cc92 Mon Sep 17 00:00:00 2001
From: thinky
Date: Thu, 7 Sep 2023 15:01:01 -0400
Subject: [PATCH 04/70] Update core table names for EIA 860, 923, harvested
tables, FERC1, code
---
devtools/debug-eia-etl.ipynb | 2 +-
devtools/debug-ferc1-etl.ipynb | 16 +-
devtools/inspect-assets.ipynb | 75 +++++-
...python-output-table-conversion-debug.ipynb | 2 +-
docs/dev/annual_updates.rst | 4 +-
docs/dev/naming_conventions.rst | 4 +-
docs/intro.rst | 8 +-
docs/release_notes.rst | 204 ++++++++-------
docs/templates/eia860_child.rst.jinja | 4 +-
docs/templates/eia923_child.rst.jinja | 8 +-
docs/templates/ferc714_child.rst.jinja | 4 +-
.../work-in-progress/better-heatrates.ipynb | 4 +-
.../work-in-progress/epacems-parquet.ipynb | 54 ++--
src/pudl/analysis/allocate_gen_fuel.py | 152 ++++++------
src/pudl/analysis/classify_plants_ferc1.py | 6 +-
src/pudl/analysis/mcoe.py | 8 +-
src/pudl/etl/__init__.py | 4 +-
src/pudl/etl/epacems_assets.py | 12 +-
src/pudl/etl/glue_assets.py | 38 +--
src/pudl/extract/ferc1.py | 46 ++--
src/pudl/glue/ferc1_eia.py | 12 +-
src/pudl/helpers.py | 6 +-
src/pudl/metadata/fields.py | 22 +-
.../metadata/resources/allocate_gen_fuel.py | 2 +-
src/pudl/metadata/resources/eia.py | 10 +-
src/pudl/metadata/resources/eia860.py | 50 ++--
src/pudl/metadata/resources/eia923.py | 62 ++---
src/pudl/metadata/resources/ferc1.py | 46 ++--
src/pudl/metadata/resources/glue.py | 4 +-
src/pudl/metadata/resources/mcoe.py | 4 +-
src/pudl/output/eia.py | 96 ++++---
src/pudl/output/eia860.py | 17 +-
src/pudl/output/eia923.py | 72 +++---
src/pudl/output/eia_bulk_elec.py | 2 +-
src/pudl/output/ferc1.py | 234 ++++++++++--------
src/pudl/output/pudltabl.py | 24 +-
src/pudl/transform/eia.py | 54 ++--
src/pudl/transform/eia860.py | 42 ++--
src/pudl/transform/eia923.py | 66 ++---
src/pudl/transform/epacems.py | 13 +-
src/pudl/transform/ferc1.py | 216 ++++++++--------
src/pudl/transform/params/__init__.py | 2 +-
src/pudl/transform/params/ferc1.py | 54 ++--
src/pudl/validate.py | 10 +-
test/integration/datasette_metadata_test.py | 2 +-
test/integration/etl_test.py | 6 +-
test/integration/output_test.py | 14 +-
test/unit/harvest_test.py | 18 +-
test/unit/transform/ferc1_test.py | 3 +-
test/unit/transform/glue_test.py | 4 +-
test/validate/eia860_test.py | 2 +-
test/validate/eia_test.py | 37 ++-
test/validate/ferc1_test.py | 70 +++---
test/validate/fuel_ferc1_test.py | 2 +-
test/validate/plants_steam_ferc1_test.py | 14 +-
55 files changed, 1043 insertions(+), 904 deletions(-)
diff --git a/devtools/debug-eia-etl.ipynb b/devtools/debug-eia-etl.ipynb
index a1703bbc7d..347acd9624 100644
--- a/devtools/debug-eia-etl.ipynb
+++ b/devtools/debug-eia-etl.ipynb
@@ -263,7 +263,7 @@
"outputs": [],
"source": [
"%%time\n",
- "asset_key = \"fuel_receipts_costs_eia923\"\n",
+ "asset_key = \"core_eia923__monthly_fuel_receipts_costs\"\n",
"df = defs.load_asset_value(AssetKey(asset_key))\n",
"\n",
"df.head()"
diff --git a/devtools/debug-ferc1-etl.ipynb b/devtools/debug-ferc1-etl.ipynb
index 19caff6102..3b633f7582 100644
--- a/devtools/debug-ferc1-etl.ipynb
+++ b/devtools/debug-ferc1-etl.ipynb
@@ -99,7 +99,7 @@
},
"outputs": [],
"source": [
- "ferc1_xbrl_raw_dfs[\"fuel_ferc1\"][\"duration\"].report_year"
+ "ferc1_xbrl_raw_dfs[\"core_ferc1__yearly_fuel\"][\"duration\"].report_year"
]
},
{
@@ -206,7 +206,7 @@
"metadata": {},
"outputs": [],
"source": [
- "table_name = \"other_regulatory_liabilities_ferc1\"\n",
+ "table_name = \"core_ferc1__yearly_other_regulatory_liabilities\"\n",
"TRANSFORMER = transformers[table_name] # add a table here"
]
},
@@ -326,8 +326,8 @@
"source": [
"transformed_tables = {}\n",
"for table_name, transformer in transformers.items():\n",
- " if table_name == \"plants_steam_ferc1\":\n",
- " # plants_steam_ferc1 is a special case. It depends on the transformed fuel_ferc1 table.\n",
+ " if table_name == \"core_ferc1__yearly_plants_steam\":\n",
+ " # core_ferc1__yearly_plants_steam is a special case. It depends on the transformed core_ferc1__yearly_fuel table.\n",
" continue\n",
" transformed_tables[transformer.table_id.value] = transformer.transform(\n",
" raw_dbf=ferc1_dbf_raw_dfs[transformer.table_id.value],\n",
@@ -345,13 +345,13 @@
},
"outputs": [],
"source": [
- "# Handle special case for \"plants_steam_ferc1\"\n",
- "transformer = transformers[\"plants_steam_ferc1\"]\n",
+ "# Handle special case for \"core_ferc1__yearly_plants_steam\"\n",
+ "transformer = transformers[\"core_ferc1__yearly_plants_steam\"]\n",
"transformed_tables[transformer.table_id.value] = transformer.transform(\n",
" raw_dbf=ferc1_dbf_raw_dfs[transformer.table_id.value],\n",
" raw_xbrl_instant=ferc1_xbrl_raw_dfs[transformer.table_id.value][\"instant\"],\n",
" raw_xbrl_duration=ferc1_xbrl_raw_dfs[transformer.table_id.value][\"duration\"],\n",
- " transformed_fuel=transformed_tables[\"fuel_ferc1\"],\n",
+ " transformed_fuel=transformed_tables[\"core_ferc1__yearly_fuel\"],\n",
")"
]
}
@@ -372,7 +372,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.3"
+ "version": "3.11.5"
}
},
"nbformat": 4,
diff --git a/devtools/inspect-assets.ipynb b/devtools/inspect-assets.ipynb
index b5595f75b7..f09be07c94 100644
--- a/devtools/inspect-assets.ipynb
+++ b/devtools/inspect-assets.ipynb
@@ -50,10 +50,61 @@
"\n",
"from pudl.etl import defs\n",
"\n",
- "asset_key = \"raw_generator_existing_eia860\"\n",
+ "asset_key = \"exploded_balance_sheet_assets_ferc1\"\n",
"df = defs.load_asset_value(AssetKey(asset_key))\n",
"\n",
- "df.head()"
+ "#df[df.row_type_xbrl == \"correction\"].xbrl_factoid.value_counts()\n",
+ "#df[(df.xbrl_factoid.isin([\"operation_expense\", \"maintenance_expense\"]))&(df.rel_diff.notnull())&(df.rel_diff!=0)].sort_values(['utility_id_ferc1', 'report_year', 'xbrl_factoid', 'rel_diff']).head(50)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b2d99594",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df[(df.xbrl_factoid==\"accumulated_depreciation\")&(df.plant_status==\"in_service\")&(df.plant_function==\"total\")]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "467111b1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df[df.xbrl_factoid.isin(factoids)&(df.utility_id_ferc1==9)&(df.report_year==1998)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c6f7427a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "factoids = ['distribution_maintenance_expense_electric',\n",
+ " 'hydraulic_power_generation_maintenance_expense',\n",
+ " 'maintenance_of_general_plant',\n",
+ " 'nuclear_power_generation_maintenance_expense',\n",
+ " 'other_power_generation_maintenance_expense',\n",
+ " 'regional_market_maintenance_expense',\n",
+ " 'steam_power_generation_maintenance_expense',\n",
+ " 'transmission_maintenance_expense_electric']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "951b718d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "asset_key = \"calculation_components_xbrl_ferc1\"\n",
+ "calcs = defs.load_asset_value(AssetKey(asset_key))\n",
+ "\n",
+ "calcs[(calcs.xbrl_factoid_parent == \"accumulated_depreciation\")].head(50)"
]
},
{
@@ -77,10 +128,24 @@
"\n",
"from pudl.etl import defs\n",
"\n",
- "asset_key = \"fuel_receipts_costs_eia923\"\n",
+ "asset_key = \"emissions_unit_ids_epacems\"\n",
"df = defs.load_asset_value(AssetKey(asset_key))\n",
"\n",
- "df.head()"
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "9f0d118b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pudl.output.epacems import epacems\n",
+ "\n",
+ "test_epacems = epacems(states = [\"ID\"], years = [2022])\n",
+ "\n",
+ "test_epacems[test_epacems.operating_datetime_utc>=\"2022-01-04\"].head(40)"
]
}
],
@@ -100,7 +165,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.10"
+ "version": "3.11.5"
}
},
"nbformat": 4,
diff --git a/devtools/python-output-table-conversion-debug.ipynb b/devtools/python-output-table-conversion-debug.ipynb
index 94748df138..334d886d58 100644
--- a/devtools/python-output-table-conversion-debug.ipynb
+++ b/devtools/python-output-table-conversion-debug.ipynb
@@ -109,7 +109,7 @@
"@asset(io_manager_key=\"pudl_sqlite_io_manager\", compute_kind=\"Python\")\n",
"def denorm_utilities_eia860(\n",
" utilities_entity_eia: pd.DataFrame,\n",
- " utilities_eia860: pd.DataFrame,\n",
+ " core_eia860__scd_utilities: pd.DataFrame,\n",
" utilities_eia: pd.DataFrame,\n",
"):\n",
" ... # joining logic\n",
diff --git a/docs/dev/annual_updates.rst b/docs/dev/annual_updates.rst
index 3ba6de4f34..9f742bb394 100644
--- a/docs/dev/annual_updates.rst
+++ b/docs/dev/annual_updates.rst
@@ -302,8 +302,8 @@ A. FERC 1 & EIA Plants & Utilities
B. Missing EIA Plant Locations from CEMS
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**6.B.1)** If there are any plants that appear in the EPA CEMS dataset that do not
-appear in the ``plants_entity_eia`` table or that are missing latitute and longitude
-values, the missing information should be compiled and added to
+appear in the ``core_eia__entity_plants`` table or that are missing latitute and
+longitude values, the missing information should be compiled and added to
``src/pudl/package_data/epacems/additional_epacems_plants.csv`` to enable accurate
adjustment of the EPA CEMS timestamps to UTC. This information can usually be obtained
with the ``plant_id_eia`` and the
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 1b109dce9e..8648e573b4 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -19,7 +19,7 @@ as we come across them again in maintaining the code.
* When dataframe outputs are built from multiple tables, identify the type of
information being pulled (e.g. "plants") and the source of the tables (e.g.
``eia`` or ``ferc1``). When outputs are built from a single table, simply use
- the table name (e.g. ``boiler_fuel_eia923``).
+ the table name (e.g. ``core_eia923__monthly_boiler_fuel``).
.. _glossary:
@@ -89,7 +89,7 @@ Output Functions
When dataframe outputs are built from multiple tables, identify the type of
information being pulled (e.g. ``plants``) and the source of the tables (e.g.
``eia`` or ``ferc1``). When outputs are built from a single table, simply use
-the table name (e.g. ``boiler_fuel_eia923``).
+the table name (e.g. ``core_eia923__monthly_boiler_fuel``).
Table Names
-----------
diff --git a/docs/intro.rst b/docs/intro.rst
index bc95fb1759..f299ede22e 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -168,10 +168,10 @@ Denormalized Outputs
We normalize the data to make storage more efficient and avoid data integrity issues,
but you may want to combine information from more than one of the tables to make the
data more readable and readily interpretable. For example, PUDL stores the name that EIA
-uses to refer to a power plant in the :ref:`plants_entity_eia` table in association with
-the plant's unique numeric ID. If you are working with data from the
-:ref:`fuel_receipts_costs_eia923` table, which records monthly per-plant fuel
-deliveries, you may want to have the name of the plant alongside the fuel delivery
+uses to refer to a power plant in the :ref:`core_eia__entity_plants` table in
+association with the plant's unique numeric ID. If you are working with data from the
+:ref:`core_eia923__monthly_fuel_receipts_costs` table, which records monthly per-plant
+fuel deliveries, you may want to have the name of the plant alongside the fuel delivery
information since it's more recognizable than the plant ID.
Rather than requiring everyone to write their own SQL ``SELECT`` and ``JOIN`` statements
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 48207381f3..5ca86d1adf 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -81,38 +81,47 @@ Data Coverage
To see which DBF and XBRL tables the following PUDL tables are derived from, refer to
:py:const:`pudl.extract.ferc1.TABLE_NAME_MAP`
- * :ref:`electric_energy_sources_ferc1`, see issue :issue:`1819` & PR :pr:`2094`.
- * :ref:`electric_energy_dispositions_ferc1`, see issue :issue:`1819` & PR :pr:`2100`.
- * :ref:`transmission_statistics_ferc1`, see issue :issue:`1822` & PR :pr:`2103`
- * :ref:`utility_plant_summary_ferc1`, see issue :issue:`1806` & PR :pr:`2105`.
- * :ref:`balance_sheet_assets_ferc1`, see issue :issue:`1805` & PRs :pr:`2112,2127`.
- * :ref:`balance_sheet_liabilities_ferc1`, see issue :issue:`1810` & PR :pr:`2134`.
- * :ref:`depreciation_amortization_summary_ferc1`, see issue :issue:`1816` & PR
- :pr:`2143`.
- * :ref:`income_statement_ferc1`, see issue :issue:`1813` & PR :pr:`2147`.
- * :ref:`electric_plant_depreciation_changes_ferc1` see issue :issue:`1808` &
- :pr:`2119`.
- * :ref:`electric_plant_depreciation_functional_ferc1` see issue :issue:`1808` & PR
- :pr:`2183`
- * :ref:`electric_operating_expenses_ferc1`, see issue :issue:`1817` & PR :pr:`2162`.
- * :ref:`retained_earnings_ferc1`, see issue :issue:`1811` & PR :pr:`2155`.
- * :ref:`cash_flow_ferc1`, see issue :issue:`1821` & PR :pr:`2184`
- * :ref:`electricity_sales_by_rate_schedule_ferc1`, see issue :issue:`1823` & PR
- :pr:`2205`
+ * :ref:`core_ferc1__yearly_electric_energy_sources`, see issue :issue:`1819` & PR
+ :pr:`2094`.
+ * :ref:`core_ferc1__yearly_electric_energy_dispositions`, see issue :issue:`1819` &
+ PR :pr:`2100`.
+ * :ref:`core_ferc1__yearly_transmission_statistics`, see issue :issue:`1822` & PR
+ :pr:`2103`
+ * :ref:`core_ferc1__yearly_utility_plant_summary`, see issue :issue:`1806` & PR
+ :pr:`2105`.
+ * :ref:`core_ferc1__yearly_balance_sheet_assets`, see issue :issue:`1805` & PRs
+ :pr:`2112,2127`.
+ * :ref:`core_ferc1__yearly_balance_sheet_liabilities`, see issue :issue:`1810` & PR
+ :pr:`2134`.
+ * :ref:`core_ferc1__yearly_depreciation_amortization_summary`, see issue :issue:`1816`
+ & PR :pr:`2143`.
+ * :ref:`core_ferc1__yearly_income_statement`, see issue :issue:`1813` & PR :pr:`2147`.
+ * :ref:`core_ferc1__yearly_electric_plant_depreciation_changes` see issue
+ :issue:`1808` & :pr:`2119`.
+ * :ref:`core_ferc1__yearly_electric_plant_depreciation_functional` see issue
+ :issue:`1808` & PR :pr:`2183`.
+ * :ref:`core_ferc1__yearly_electric_operating_expenses`, see issue :issue:`1817` & PR
+ :pr:`2162`.
+ * :ref:`core_ferc1__yearly_retained_earnings`, see issue :issue:`1811` & PR
+ :pr:`2155`.
+ * :ref:`core_ferc1__yearly_cash_flow`, see issue :issue:`1821` & PR :pr:`2184`
+ * :ref:`core_ferc1__yearly_electricity_sales_by_rate_schedule`, see issue
+ :issue:`1823` & PR :pr:`2205`.
* New PUDL tables from :doc:`data_sources/eia860`:
- * :ref:`emissions_control_equipment_eia860`, see issue :issue:`2338` & PR :pr:`2561`.
- * :ref:`denorm_emissions_control_equipment_eia860`, see issue :issue:`2338` & PR
+ * :ref:`core_eia860__scd_emissions_control_equipment`, see issue :issue:`2338` & PR
:pr:`2561`.
- * :ref:`boiler_emissions_control_equipment_assn_eia860`, see :issue:`2338` & PR
+ * :ref:`denorm_emissions_control_equipment_eia860`, see issue :issue:`2338` & PR
:pr:`2561`.
- * :ref:`boiler_cooling_assn_eia860`, see :issue:`2586` & PR :pr:`2587`
- * :ref:`boiler_stack_flue_assn_eia860`, see :issue:`2586` & PR :pr:`2587`
+ * :ref:`core_eia860__annual_boiler_emissions_control_equipment_assn`, see
+ :issue:`2338` & PR :pr:`2561`.
+ * :ref:`core_eia860__assn_boiler_cooling`, see :issue:`2586` & PR :pr:`2587`
+ * :ref:`core_eia860__assn_boiler_stack_flue`, see :issue:`2586` & PR :pr:`2587`
-* The :ref:`boilers_eia860` table now includes annual boiler attributes from
+* The :ref:`core_eia860__scd_boilers` table now includes annual boiler attributes from
:doc:`data_sources/eia860` Schedule 6.2 Environmental Equipment data, and the new
- :ref:`boilers_entity_eia` table now includes static boiler attributes. See issue
+ :ref:`core_eia__entity_boilers` table now includes static boiler attributes. See issue
:issue:`1162` & PR :pr:`2319`.
* All :doc:`data_sources/eia861` tables are now being loaded into the PUDL DB, rather
than only being available via an ad-hoc ETL process that was only accessible through
@@ -167,10 +176,10 @@ Data Coverage
* Added new table :ref:`epacamd_eia_subplant_ids`, which aguments the
:ref:`epacamd_eia` glue table. This table incorporates all
- :ref:`generators_entity_eia` and all :ref:`hourly_emissions_epacems` ID's and uses
- these complete IDs to develop a full-coverage ``subplant_id`` column which granularly
- connects EPA CAMD with EIA. Thanks to :user:`grgmiller` for his contribution to this
- process. See :issue:`2456` & :pr:`2491`.
+ :ref:`core_eia__entity_generators` and all :ref:`hourly_emissions_epacems` ID's and
+ uses these complete IDs to develop a full-coverage ``subplant_id`` column which
+ granularly connects EPA CAMD with EIA. Thanks to :user:`grgmiller` for his
+ contribution to this process. See :issue:`2456` & :pr:`2491`.
* Thanks to contributions from :user:`rousik` we've generalized the code we use to
convert FERC's old annual Visual FoxPro databases into multi-year SQLite databases.
@@ -197,29 +206,36 @@ Data Cleaning
* Removed inconsistently reported leading zeroes from numeric ``boiler_id`` values. This
affected a small number of records in any table referring to boilers, including
- :ref:`boilers_entity_eia`, :ref:`boilers_eia860`, :ref:`boiler_fuel_eia923`,
- :ref:`boiler_generator_assn_eia860` and the :ref:`epacamd_eia` crosswalk. It
- also had some minor downstream effects on the MCOE outputs. See :issue:`2366` and
- :pr:`2367`.
-* The :ref:`boiler_fuel_eia923` table now includes the ``prime_mover_code`` column. This
- column was previously incorrectly being associated with boilers in the
- :ref:`boilers_entity_eia` table. See issue :issue:`2349` & PR :pr:`2362`.
-* Fixed column naming issues in the :ref:`electric_operating_revenues_ferc1` table.
-* Made minor calculation fixes in the metadata for :ref:`income_statement_ferc1`,
- :ref:`utility_plant_summary_ferc1`, :ref:`electric_operating_revenues_ferc1`,
- :ref:`balance_sheet_assets_ferc1`, :ref:`balance_sheet_liabilities_ferc1`, and
- :ref:`electric_operating_expenses_ferc1`,
- :ref:`electric_plant_depreciation_changes_ferc1` and
- :ref:`electric_plant_depreciation_functional_ferc1`. See :issue:`2016`, :pr:`2563`,
- :pr:`2662` and :pr:`2687`.
-* Changed the :ref:`retained_earnings_ferc1` table transform to restore factoids for
- previous year balances, and added calculation metadata. See :issue:`1811`,
- :issue:`2016`, and :pr:`2645`.
+ :ref:`core_eia__entity_boilers`, :ref:`core_eia860__scd_boilers`,
+ :ref:`core_eia923__monthly_boiler_fuel`, :ref:`core_eia860__assn_boiler_generator`
+ and the :ref:`epacamd_eia` crosswalk. It also had some minor downstream effects on the
+ MCOE outputs. See :issue:`2366` and :pr:`2367`.
+* The :ref:`core_eia923__monthly_boiler_fuel` table now includes the
+ ``prime_mover_code`` column. This column was previously incorrectly being associated
+ with boilers in the :ref:`core_eia__entity_boilers` table. See issue :issue:`2349` &
+ PR :pr:`2362`.
+* Fixed column naming issues in the
+ :ref:`core_ferc1__yearly_electric_operating_revenues` table.
+* Made minor calculation fixes in the metadata for
+ :ref:`core_ferc1__yearly_income_statement`,
+ :ref:`core_ferc1__yearly_utility_plant_summary`,
+ :ref:`core_ferc1__yearly_electric_operating_revenues`,
+ :ref:`core_ferc1__yearly_balance_sheet_assets`,
+ :ref:`core_ferc1__yearly_balance_sheet_liabilities`, and
+ :ref:`core_ferc1__yearly_electric_operating_expenses`,
+ :ref:`core_ferc1__yearly_electric_plant_depreciation_changes` and
+ :ref:`core_ferc1__yearly_electric_plant_depreciation_functional`. See :issue:`2016`,
+ :pr:`2563`, :pr:`2662` and :pr:`2687`.
+* Changed the :ref:`core_ferc1__yearly_retained_earnings` table transform to restore
+ factoids for previous year balances, and added calculation metadata. See
+ :issue:`1811`, :issue:`2016`, and :pr:`2645`.
* Added "correction" records to many FERC Form 1 tables where the reported totals do not
match the outcomes of calculations specified in XBRL metadata (even after cleaning up
the often incorrect calculation specifications!). See :issue:`2957` and :pr:`2620`.
-* Flip the sign of some erroneous negative values in the :ref:`plant_in_service_ferc1`
- and :ref:`utility_plant_summary_ferc1` tables. See :issue:`2599`, and :pr:`2647`.
+* Flip the sign of some erroneous negative values in the
+ :ref:`core_ferc1__yearly_plant_in_service` and
+ :ref:`core_ferc1__yearly_utility_plant_summary` tables. See :issue:`2599`, and
+ :pr:`2647`.
Analysis
^^^^^^^^
@@ -239,11 +255,11 @@ Analysis
part in :mod:`pudl.analysis.plant_parts_eia`.
* Refined how we are associating generation and fuel data in
:mod:`pudl.analysis.allocate_gen_fuel`, which was renamed from ``allocate_net_gen``.
- Energy source codes that show up in the :ref:`generation_fuel_eia923` or the
- :ref:`boiler_fuel_eia923` are now added into the :ref:`generators_eia860` table so
- associating those gf and bf records are more cleanly associated with generators.
- Thanks to :user:`grgmiller` for his contribution, which was integrated by
- :user:`cmgosnell`! See PRs :pr:`2235,2446`.
+ Energy source codes that show up in the :ref:`core_eia923__monthly_generation_fuel` or
+ the :ref:`core_eia923__monthly_boiler_fuel` are now added into the
+ :ref:`core_eia860__scd_generators` table so associating those gf and bf records are
+ more cleanly associated with generators. Thanks to :user:`grgmiller` for his
+ contribution, which was integrated by :user:`cmgosnell`! See PRs :pr:`2235,2446`.
* The :mod:`pudl.analysis.mcoe` table now uses the allocated estimates for per-generator
net generation and fuel consumption. See PR :pr:`2553`.
* Additionally, the :mod:`pudl.analysis.mcoe` table now only includes attributes
@@ -341,9 +357,9 @@ Data Coverage
* Incorporated 2022 data from the :doc:`data_sources/eia860` monthly update from
September 2022. See :pr:`2079`. A June 2022 eia860m update included adding new
``energy_storage_capacity_mwh`` (for batteries) and ``net_capacity_mwdc`` (for
- behind-the-meter solar PV) attributes to the :ref:`generators_eia860` table, as they
+ behind-the-meter solar PV) attributes to the ``generators_eia860`` table, as they
appear in the :doc:`data_sources/eia860` monthly updates for 2022. See :pr:`1834`.
-* Added new :ref:`datasources` table, which includes partitions used to generate the
+* Added new ``datasources`` table, which includes partitions used to generate the
database. See :pr:`2079`.
* Integrated several new columns into the EIA 860 and EIA 923 including several
codes with coding tables (See :doc:`data_dictionaries/codes_and_labels`). :pr:`1836`
@@ -364,14 +380,14 @@ Data Coverage
updates in this release include:
* Convert XBRL into raw sqlite database :pr:`1831`
- * Build transformer infrastructure & Add :ref:`fuel_ferc1` table :pr:`1721`
+ * Build transformer infrastructure & Add ``fuel_ferc1`` table :pr:`1721`
* Map utility XBRL and DBF utility IDs :pr:`1931`
- * Add :ref:`plants_steam_ferc1` table :pr:`1881`
- * Add :ref:`plants_hydro_ferc1` :pr:`1992`
- * Add :ref:`plants_pumped_storage_ferc1` :pr:`2005`
- * Add :ref:`purchased_power_ferc1` :pr:`2011`
- * Add :ref:`plants_small_ferc1` table :pr:`2035`
- * Add :ref:`plant_in_service_ferc1` table :pr:`2025` & :pr:`2058`
+ * Add ``plants_steam_ferc1`` table :pr:`1881`
+ * Add ``plants_hydro_ferc1`` :pr:`1992`
+ * Add ``plants_pumped_storage_ferc1`` :pr:`2005`
+ * Add ``purchased_power_ferc1`` :pr:`2011`
+ * Add ``plants_small_ferc1`` table :pr:`2035`
+ * Add ``plant_in_service_ferc1`` table :pr:`2025` & :pr:`2058`
* Added all of the SQLite databases which we build from FERC's raw XBRL filings to our
Datasette deployment. See :pr:`2095` & :issue:`2080`. Browse the published data here:
@@ -415,14 +431,14 @@ Database Schema Changes
time, we recategorized the ``prime_mover_code`` column in our entity resolution
process to enable the rare but real variability over time. We moved the
``prime_mover_code`` column from the statically harvested/normalized data
- column to an annually harvested data column (i.e. from :ref:`generators_entity_eia`
- to :ref:`generators_eia860`) :pr:`1600`. See :issue:`1585` for more details.
-* Created :ref:`operational_status_eia` into our static metadata tables (See
+ column to an annually harvested data column (i.e. from ``generators_entity_eia``
+ to ``generators_eia860``) :pr:`1600`. See :issue:`1585` for more details.
+* Created ``operational_status_eia`` into our static metadata tables (See
:doc:`data_dictionaries/codes_and_labels`). Used these standard codes and code
- fixes to clean ``operational_status_code`` in the :ref:`generators_entity_eia`
+ fixes to clean ``operational_status_code`` in the ``generators_entity_eia``
table. :pr:`1624`
-* Moved a number of slowly changing plant attributes from the :ref:`plants_entity_eia`
- table to the annual :ref:`plants_eia860` table. See :issue:`1748` and :pr:`1749`.
+* Moved a number of slowly changing plant attributes from the ``plants_entity_eia``
+ table to the annual ``plants_eia860`` table. See :issue:`1748` and :pr:`1749`.
This was initially inspired by the desire to more accurately reproduce the aggregated
fuel prices which are available in the EIA's API. Along with state, census region,
month, year, and fuel type, those prices are broken down by industrial sector.
@@ -442,9 +458,9 @@ Database Schema Changes
* ``iso_rto_code``
* ``primary_purpose_id_naics``
-* Renamed ``grid_voltage_kv`` to ``grid_voltage_1_kv`` in the :ref:`plants_eia860`
+* Renamed ``grid_voltage_kv`` to ``grid_voltage_1_kv`` in the ``plants_eia860``
table, to follow the pattern of many other multiply reported values.
-* Added a :ref:`balancing_authorities_eia` coding table mapping BA codes found in the
+* Added a ``balancing_authorities_eia`` coding table mapping BA codes found in the
:doc:`data_sources/eia860` and :doc:`data_sources/eia923` to their names, cleaning up
non-standard codes, and fixing some reporting errors for ``PACW`` vs. ``PACE``
(PacifiCorp West vs. East) based on the state associated with the plant reporting the
@@ -456,9 +472,9 @@ Database Schema Changes
``emissions_unit_id_epa`` and not otherwise useful or transferable to other datasets.
``facility_id`` was removed because it is specific to EPA's internal database and does
not aid in connection with other data. :pr:`1692`
-* Added a new table :ref:`political_subdivisions` which consolidated various bits of
+* Added a new table ``political_subdivisions`` which consolidated various bits of
information about states, territories, provinces etc. that had previously been
- scattered across constants stored in the codebase. The :ref:`ownership_eia860` table
+ scattered across constants stored in the codebase. The ``ownership_eia860`` table
had a mix of state and country information stored in the same column, and to retain
all of it we added a new ``owner_country_code`` column. :pr:`1966`
@@ -642,7 +658,7 @@ Data Cleaning
contexts. We use the same method to clean them all up now, and enforce a uniform
field width with leading zero padding. This also allows us to enforce a regex pattern
constraint on these fields in the database outputs. :pr:`1405,1476`
-* We're now able to fill in missing values in the very useful :ref:`generators_eia860`
+* We're now able to fill in missing values in the very useful ``generators_eia860``
``technology_description`` field. Currently this is optionally available in the output
layer, but we want to put more of this kind of data repair into the core database
gong forward. :pr:`1075`
@@ -667,8 +683,8 @@ Miscellaneous
Bug Fixes
^^^^^^^^^
-* In addressing :issue:`851,1296,1325` the :ref:`generation_fuel_eia923` table was split
- to create a :ref:`generation_fuel_nuclear_eia923` table since they have different
+* In addressing :issue:`851,1296,1325` the ``generation_fuel_eia923`` table was split
+ to create a ``generation_fuel_nuclear_eia923`` table since they have different
primary keys. This meant that the :meth:`pudl.output.pudltabl.PudlTabl.gf_eia923`
method no longer included nuclear generation. This impacted the net generation
allocation process and MCOE calculations downstream, which were expecting to have all
@@ -757,33 +773,33 @@ the database normalization and entity resolution process also benefit from using
natural primary keys when possible. As a result we've made some changes to the PUDL
database schema, which will probably affect some users.
-* We have split out a new :ref:`generation_fuel_nuclear_eia923` table from the existing
- :ref:`generation_fuel_eia923` table, as nuclear generation and fuel consumption are
+* We have split out a new ``generation_fuel_nuclear_eia923`` table from the existing
+ ``generation_fuel_eia923`` table, as nuclear generation and fuel consumption are
reported at the generation unit level, rather than the plant level, requiring a
different natural primary key. See :issue:`851,1296,1325`.
-* Implementing a natural primary key for the :ref:`boiler_fuel_eia923` table required
+* Implementing a natural primary key for the ``boiler_fuel_eia923`` table required
the aggregation of a small number of records that didn't have well-defined
``prime_mover_code`` values. See :issue:`852,1306,1311`.
* We repaired, aggregated, or dropped a small number of records in the
- :ref:`generation_eia923` (See :issue:`1208,1248`) and
- :ref:`ownership_eia860` (See :issue:`1207,1258`) tables due to null values in their
+ ``generation_eia923`` (See :issue:`1208,1248`) and
+ ``ownership_eia860`` (See :issue:`1207,1258`) tables due to null values in their
primary key columns.
* Many new foreign key constraints are being enforced between the EIA data tables,
entity tables, and coding tables. See :issue:`1196`.
* Fuel types and energy sources reported to EIA are now defined in / constrained by
- the static :ref:`energy_sources_eia` table.
+ the static ``energy_sources_eia`` table.
* The columns that indicate the mode of transport for various fuels now contain short
codes rather than longer labels, and are defined in / constrained by the static
- :ref:`fuel_transportation_modes_eia` table.
+ ``fuel_transportation_modes_eia`` table.
* In the simplified FERC 1 fuel type categories, we're now using ``other`` instead of
``unknown``.
* Several columns have been renamed to harmonize meanings between different tables and
datasets, including:
- * In :ref:`generation_fuel_eia923` and :ref:`boiler_fuel_eia923` the ``fuel_type`` and
+ * In ``generation_fuel_eia923`` and ``boiler_fuel_eia923`` the ``fuel_type`` and
``fuel_type_code`` columns have been replaced with ``energy_source_code``, which
- appears in various forms in :ref:`generators_eia860` and
- :ref:`fuel_receipts_costs_eia923`.
+ appears in various forms in ``generators_eia860`` and
+ ``fuel_receipts_costs_eia923``.
* ``fuel_qty_burned`` is now ``fuel_consumed_units``
* ``fuel_qty_units`` is now ``fuel_received_units``
* ``heat_content_mmbtu_per_unit`` is now ``fuel_mmbtu_per_unit``
@@ -896,19 +912,19 @@ fuel consumption for all generators. The process has known issues and is being
actively developed. See :pr:`989`
Net electricity generation and fuel consumption are reported in multiple ways in
-the EIA 923. The :ref:`generation_fuel_eia923` table reports both generation and
+the EIA 923. The ``generation_fuel_eia923`` table reports both generation and
fuel consumption, and breaks them down by plant, prime mover, and fuel. In
-parallel, the :ref:`generation_eia923` table reports generation by generator,
-and the :ref:`boiler_fuel_eia923` table reports fuel consumption by boiler.
+parallel, the ``generation_eia923`` table reports generation by generator,
+and the ``boiler_fuel_eia923`` table reports fuel consumption by boiler.
-The :ref:`generation_fuel_eia923` table is more complete, but the
-:ref:`generation_eia923` + :ref:`boiler_fuel_eia923` tables are more granular.
-The :ref:`generation_eia923` table includes only ~55% of the total MWhs reported
-in the :ref:`generation_fuel_eia923` table.
+The ``generation_fuel_eia923`` table is more complete, but the
+``generation_eia923`` + ``boiler_fuel_eia923`` tables are more granular.
+The ``generation_eia923`` table includes only ~55% of the total MWhs reported
+in the ``generation_fuel_eia923`` table.
The :mod:`pudl.analysis.allocate_gen_fuel` module estimates the net electricity
generation and fuel consumption attributable to individual generators based on
-the more expansive reporting of the data in the :ref:`generation_fuel_eia923`
+the more expansive reporting of the data in the ``generation_fuel_eia923``
table.
Data Management and Archiving
diff --git a/docs/templates/eia860_child.rst.jinja b/docs/templates/eia860_child.rst.jinja
index 76f4d90371..80c53bb492 100644
--- a/docs/templates/eia860_child.rst.jinja
+++ b/docs/templates/eia860_child.rst.jinja
@@ -83,6 +83,6 @@ reading the Form Instructions from different years, linked above.
Unfortunately, the reported associations are incomplete. We've been able to infer many
more associations than those reported directly by EIA, and currently cover more than 95%
-of the generation reported in the :ref:`generation_eia923` table. The associations
-themselves are found in the :ref:`boiler_generator_assn_eia860` table.
+of the generation reported in the :ref:`core_eia923__monthly_generation` table. The associations
+themselves are found in the :ref:`core_eia860__assn_boiler_generator` table.
{% endblock %}
diff --git a/docs/templates/eia923_child.rst.jinja b/docs/templates/eia923_child.rst.jinja
index af6bca536a..b812b7a97c 100644
--- a/docs/templates/eia923_child.rst.jinja
+++ b/docs/templates/eia923_child.rst.jinja
@@ -79,10 +79,10 @@ and the commodity cost information for all plants (Schedule 2).
**Net generation & fuel consumed reported in two separate tables**
Net generation and fuel consumption are reported in two separate tables in EIA-923: in
-the :ref:`generation_eia923` and :ref:`generation_fuel_eia923` tables. The
-:ref:`generation_fuel_eia923` table is more complete (the :ref:`generation_eia923` table
-includes only ~55% of the reported MWh), but the :ref:`generation_eia923` table is more
-granular (it is reported at the generator level).
+the :ref:`core_eia923__monthly_generation` and :ref:`core_eia923__monthly_generation_fuel` tables. The
+:ref:`core_eia923__monthly_generation_fuel` table is more complete (the
+:ref:`core_eia923__monthly_generation` table includes only ~55% of the reported MWh), but the
+:ref:`core_eia923__monthly_generation` table is more granular (it is reported at the generator level).
**Data Estimates**
Plants that did not respond or reported unverified data were recorded as estimates
diff --git a/docs/templates/ferc714_child.rst.jinja b/docs/templates/ferc714_child.rst.jinja
index a4ab1e8aba..2d4dd6cc85 100644
--- a/docs/templates/ferc714_child.rst.jinja
+++ b/docs/templates/ferc714_child.rst.jinja
@@ -26,8 +26,8 @@ region at the county level, because utilities and balancing authorities report t
service territories in :ref:`service_territory_eia861`, and from that information we
can estimate historical hourly electricity demand by state.
-Plant operators reported in :ref:`plants_eia860` and generator ownership information
-reported in :ref:`ownership_eia860` are linked to :ref:`utilities_eia860` and
+Plant operators reported in :ref:`core_eia860__scd_plants` and generator ownership information
+reported in :ref:`core_eia860__scd_ownership` are linked to :ref:`core_eia860__scd_utilities` and
:ref:`balancing_authority_eia861` and so can also be linked to the
:ref:`respondent_id_ferc714` table, as well as the :ref:`hourly_emissions_epacems`
unit-level emissions and generation data reported in :doc:`epacems`.
diff --git a/notebooks/work-in-progress/better-heatrates.ipynb b/notebooks/work-in-progress/better-heatrates.ipynb
index 4547c5ba3d..3756c904b1 100644
--- a/notebooks/work-in-progress/better-heatrates.ipynb
+++ b/notebooks/work-in-progress/better-heatrates.ipynb
@@ -648,7 +648,7 @@
"* `generation_fuel_eia923`\n",
"* `boiler_generator_assn_eia860`\n",
"* `generators_eia860`\n",
- "* `generators_entity_eia`\n",
+ "* `core_eia__entity_generators`\n",
"* `boiler_fuel_eia923`"
]
},
@@ -681,7 +681,7 @@
" prime_mover_code,\n",
" bypass_heat_recovery,\n",
" associated_combined_heat_and_power,\n",
- "FROM generators_entity_eia\n",
+ "FROM core_eia__entity_generators\n",
"\"\"\"\n",
"\n",
"gen_eia923_sql = \"\"\"\n",
diff --git a/notebooks/work-in-progress/epacems-parquet.ipynb b/notebooks/work-in-progress/epacems-parquet.ipynb
index df5a1a0268..5ab1c67584 100644
--- a/notebooks/work-in-progress/epacems-parquet.ipynb
+++ b/notebooks/work-in-progress/epacems-parquet.ipynb
@@ -1427,53 +1427,35 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 8,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CPU times: user 1 s, sys: 14.4 ms, total: 1.02 s\n",
- "Wall time: 1.02 s\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "\n",
- "ops_cols = [\n",
- " 'co2_mass_tons',\n",
- " 'facility_id',\n",
- " 'gross_load_mw',\n",
- " 'heat_content_mmbtu',\n",
- " 'operating_time_hours',\n",
- " 'plant_id_eia',\n",
- " 'state',\n",
- " 'unit_id_epa',\n",
- " 'unitid',\n",
- " 'operating_datetime'\n",
- "]\n",
- "epacems_datadir = os.path.join(pudl.settings.PUDL_DIR,'results','parquet','epacems')\n",
- "cems_dd = dd.read_parquet(epacems_datadir + '/*/*.parquet', columns=ops_cols)"
+ "import os\n",
+ "import dask.dataframe as dd\n",
+ "import pudl\n",
+ "#epacems_datadir = os.path.join(,'pudl_output','hourly_emissions_epacems')\n",
+ "cems_dd = dd.read_parquet(\"/home/thinky/Desktop/Catalyst/PUDL/pudl-work/pudl_output/hourly_emissions_epacems\" + '*.parquet')"
]
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 10,
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Columns: 10 entries, co2_mass_tons to operating_datetime\n",
- "dtypes: category(4), datetime64[ns](1), float32(4), uint16(1)"
- ]
+ "data": {
+ "text/plain": [
+ "Index(['plant_id_eia', 'plant_id_epa', 'emissions_unit_id_epa', 'operating_datetime_utc', 'year', 'state', 'operating_time_hours', 'gross_load_mw', 'heat_content_mmbtu', 'steam_load_1000_lbs', 'so2_mass_lbs', 'so2_mass_measurement_code', 'nox_mass_lbs', 'nox_mass_measurement_code', 'co2_mass_tons', 'co2_mass_measurement_code'], dtype='object')"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
- "cems_dd.info()"
+ "cems_dd.columns"
]
},
{
@@ -2273,7 +2255,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.3"
+ "version": "3.11.5"
}
},
"nbformat": 4,
diff --git a/src/pudl/analysis/allocate_gen_fuel.py b/src/pudl/analysis/allocate_gen_fuel.py
index 418f3373ad..234c7b0d80 100644
--- a/src/pudl/analysis/allocate_gen_fuel.py
+++ b/src/pudl/analysis/allocate_gen_fuel.py
@@ -1,32 +1,32 @@
-"""Allocate data from :ref:`generation_fuel_eia923` table to generator level.
+"""Allocate data from :ref:`core_eia923__monthly_generation_fuel` table to generator level.
The algorithm we're using assumes the following about the reported data:
-* The :ref:`generation_fuel_eia923` table is the authoritative source of information
+* The :ref:`core_eia923__monthly_generation_fuel` table is the authoritative source of information
about how much generation and fuel consumption is attributable to an entire
plant. This table has the most complete data coverage, but it is not the most granular
data reported. It's primary keys are :py:const:`IDX_PM_ESC`.
-* The :ref:`generation_eia923` table contains the most granular net generation data. It
+* The :ref:`core_eia923__monthly_generation` table contains the most granular net generation data. It
is reported at the generator level with primary keys :py:const:`IDX_GENS`. This table
- includes only ~39% of the total MWhs reported in the :ref:`generation_fuel_eia923`
+ includes only ~39% of the total MWhs reported in the :ref:`core_eia923__monthly_generation_fuel`
table.
-* The :ref:`boiler_fuel_eia923` table contains the most granular fuel consumption data.
+* The :ref:`core_eia923__monthly_boiler_fuel` table contains the most granular fuel consumption data.
It is reported at the boiler/prime mover/energy source level with primary keys
:py:const:`IDX_B_PM_ESC`. This table includes only ~38% of the total MMBTUs reported
- in the :ref:`generation_fuel_eia923` table.
-* The :ref:`generators_eia860` table provides an exhaustive list of all generators
- whose generation is being reported in the :ref:`generation_fuel_eia923` table - with
+ in the :ref:`core_eia923__monthly_generation_fuel` table.
+* The :ref:`core_eia860__scd_generators` table provides an exhaustive list of all generators
+ whose generation is being reported in the :ref:`core_eia923__monthly_generation_fuel` table - with
primary keys :py:const:`IDX_GENS`.
This module allocates the total net electricity generation and fuel consumption
-reported in the :ref:`generation_fuel_eia923` table to individual generators, based
-on more granular data reported in the :ref:`generation_eia923` and
-:ref:`boiler_fuel_eia923` tables, as well as capacity (MW) found in the
-:ref:`generators_eia860` table. It uses other generator attributes from the
-:ref:`generators_eia860` table to associate the data found in the
-:ref:`generation_fuel_eia923` with generators. It also uses as the associations between
-boilers and generators found in the :ref:`boiler_generator_assn_eia860` table to
-aggregate data :ref:`boiler_fuel_eia923` tables. The main coordinating functions hereare
+reported in the :ref:`core_eia923__monthly_generation_fuel` table to individual generators, based
+on more granular data reported in the :ref:`core_eia923__monthly_generation` and
+:ref:`core_eia923__monthly_boiler_fuel` tables, as well as capacity (MW) found in the
+:ref:`core_eia860__scd_generators` table. It uses other generator attributes from the
+:ref:`core_eia860__scd_generators` table to associate the data found in the
+:ref:`core_eia923__monthly_generation_fuel` with generators. It also uses as the associations between
+boilers and generators found in the :ref:`core_eia860__assn_boiler_generator` table to
+aggregate data :ref:`core_eia923__monthly_boiler_fuel` tables. The main coordinating functions hereare
:func:`allocate_gen_fuel_by_generator_energy_source` and
:func:`aggregate_gen_fuel_by_generator`.
@@ -34,8 +34,8 @@
* **Data columns** refers to the net generation and fuel consumption - the specific
columns are defined in :py:const:`DATA_COLUMNS`.
-* **Granular tables** refers to :ref:`generation_eia923` and
- :ref:`boiler_fuel_eia923`, which report granular data but do not have complete
+* **Granular tables** refers to :ref:`core_eia923__monthly_generation` and
+ :ref:`core_eia923__monthly_boiler_fuel`, which report granular data but do not have complete
coverage.
There are six main stages of the allocation process in this module:
@@ -52,9 +52,9 @@
record are directly reported in the granular tables. This lets us choose an
appropriate data allocation method based on how complete the granular data coverage
is for a given value of :py:const:`IDX_PM_ESC`, which is the original primary key of
- the :ref:`generation_fuel_eia923` table. (See :func:`prep_allocation_fraction`).
+ the :ref:`core_eia923__monthly_generation_fuel` table. (See :func:`prep_allocation_fraction`).
#. **Allocate**: Allocate the net generation and fuel consumption reported in the less
- granular :ref:`generation_fuel_eia923` table to the :py:const:`IDX_GENS_PM_ESC`
+ granular :ref:`core_eia923__monthly_generation_fuel` table to the :py:const:`IDX_GENS_PM_ESC`
level. More details on the allocation process are below (see
:func:`allocate_gen_fuel_by_gen_esc` and :func:`allocate_fuel_by_gen_esc`).
#. **Sanity check allocation**: Verify that the total allocated net generation and fuel
@@ -69,7 +69,7 @@
**High-level description about the allocaiton step**:
-We allocate the data columns reported in the :ref:`generation_fuel_eia923` table on the
+We allocate the data columns reported in the :ref:`core_eia923__monthly_generation_fuel` table on the
basis of plant, prime mover, and energy source among the generators in each plant that
have matching energy sources.
@@ -89,18 +89,18 @@
tables.
In the **ALL** generators case, the data columns reported in the
-:ref:`generation_fuel_eia923` table are allocated in proportion to data reported in the
+:ref:`core_eia923__monthly_generation_fuel` table are allocated in proportion to data reported in the
granular data tables. We do this instead of directly using the data columns from the
-granular tables because there are discrepancies between the generation_fuel_eia923 table
+granular tables because there are discrepancies between the core_eia923__monthly_generation_fuel table
and the granular tables and we are assuming the totals reported in the
-generation_fuel_eia923 table are authoritative.
+core_eia923__monthly_generation_fuel table are authoritative.
In the **NONE** generators case, the data columns reported in the
-:ref:`generation_fuel_eia923` table are allocated in proportion to the each generator's
+:ref:`core_eia923__monthly_generation_fuel` table are allocated in proportion to the each generator's
capacity.
In the **SOME** generators case, we use a combination of the two allocation methods
-described above. First, the data columns reported in the :ref:`generation_fuel_eia923`
+described above. First, the data columns reported in the :ref:`core_eia923__monthly_generation_fuel`
table are allocated between the two categories of generators: those that report granular
data, and those that don't. The fraction allocated to each of those categories is based
on how much of the total is reported in the granular tables. If T is the total reported,
@@ -123,7 +123,7 @@
equally among them. In effect, if a plant had multiple generators with the same
prime_mover_code but opposite primary and secondary fuels (eg. gen 1 has a primary fuel
of 'NG' and secondary fuel of 'DFO', while gen 2 has a primary fuel of 'DFO' and a
-secondary fuel of 'NG'), the methodology associates the generation_fuel_eia923 records
+secondary fuel of 'NG'), the methodology associates the core_eia923__monthly_generation_fuel records
similarly across these two generators. However, the allocated net generation will still
be porporational to each generator's net generation (if it's reported) or capacity (if
generation is not reported).
@@ -177,7 +177,7 @@
"fuel_consumed_mmbtu",
"fuel_consumed_for_electricity_mmbtu",
]
-"""Data columns from :ref:`generation_fuel_eia923` that are being allocated."""
+"""Data columns from :ref:`core_eia923__monthly_generation_fuel` that are being allocated."""
MISSING_SENTINEL = 0.00001
"""A sentinel value for dealing with null or zero values.
@@ -215,7 +215,7 @@ def allocate_gen_fuel_asset_factory(
),
"bf": AssetIn(key=f"denorm_boiler_fuel_{agg_freqs[freq]}_eia923"),
"gen": AssetIn(key=f"denorm_generation_{agg_freqs[freq]}_eia923"),
- "bga": AssetIn(key="boiler_generator_assn_eia860"),
+ "bga": AssetIn(key="core_eia860__assn_boiler_generator"),
"gens": AssetIn(key="denorm_generators_eia"),
},
io_manager_key=io_manager_key,
@@ -262,7 +262,7 @@ def gen_fuel_by_gen_esc(
key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
),
"pu": AssetIn(key="denorm_plants_utilities_eia"),
- "bga": AssetIn(key="boiler_generator_assn_eia860"),
+ "bga": AssetIn(key="core_eia860__assn_boiler_generator"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -334,25 +334,25 @@ def allocate_gen_fuel_by_generator_energy_source(
There are two main steps here:
- * associate ``generation_fuel_eia923`` table data w/ generators
- * allocate ``generation_fuel_eia923`` table data proportionally
+ * associate ``core_eia923__monthly_generation_fuel`` table data w/ generators
+ * allocate ``core_eia923__monthly_generation_fuel`` table data proportionally
The association process happens via :func:`associate_generator_tables`.
The allocation process (via :func:`allocate_gen_fuel_by_gen_esc`) entails
generating a fraction for each record within a ``IDX_PM_ESC`` group. We
have two data points for generating this ratio: the net generation in the
- generation_eia923 table and the capacity from the generators_eia860 table.
+ core_eia923__monthly_generation table and the capacity from the core_eia860__scd_generators table.
The end result is a ``frac`` column which is unique for each combination of
generator, prime_mover, and fuel and is used to allocate the associated
- net generation from the :ref:`generation_fuel_eia923` table.
+ net generation from the :ref:`core_eia923__monthly_generation_fuel` table.
Args:
gf: Temporally aggregated :ref:`denorm_generation_fuel_combined_eia923` dataframe.
- bf: Temporally aggregated :ref:`boiler_fuel_eia923` dataframe.
- gen: Temporally aggregated :ref:`generation_eia923` dataframe.
- bga: :ref:`boiler_generator_assn_eia860` dataframe.
- gens: :ref:`generators_eia860` dataframe.
+ bf: Temporally aggregated :ref:`core_eia923__monthly_boiler_fuel` dataframe.
+ gen: Temporally aggregated :ref:`core_eia923__monthly_generation` dataframe.
+ bga: :ref:`core_eia860__assn_boiler_generator` dataframe.
+ gens: :ref:`core_eia860__scd_generators` dataframe.
freq: Frequency at which the tables are aggregated temporally.
debug: If True, return additional debugging information.
"""
@@ -477,7 +477,7 @@ def select_input_data(
logger.info(
f"The granular data tables contain {granular_fuel_ratio:.1%} of the fuel "
f"and {granular_net_gen_ratio:.1%} of net generation in the "
- "higher-coverage generation_fuel_eia923 table."
+ "higher-coverage core_eia923__monthly_generation_fuel table."
)
return gf, bf, gen, bga, gens
@@ -493,9 +493,9 @@ def standardize_input_frequency(
table has all of the generators present.
Args:
- bf: :ref:`boiler_fuel_eia923` table
- gens: :ref:`generators_eia860` table
- gen: :ref:`generation_eia923` table
+ bf: :ref:`core_eia923__monthly_boiler_fuel` table
+ gens: :ref:`core_eia860__scd_generators` table
+ gen: :ref:`core_eia923__monthly_generation` table
freq: the (time) frequency at which the tables will be aggregated.
"""
bf = distribute_annually_reported_data_to_months_if_annual(
@@ -557,9 +557,9 @@ def scale_allocated_net_gen_fuel_by_ownership(
net_gen_fuel_alloc: table of allocated generation and fuel consumption
at the generator, prime mover, and energy source.
From :func:`allocate_gen_fuel_by_generator_energy_source`
- gens: ``generators_eia860`` table with cols: :const:``IDX_GENS``,
+ gens: ``core_eia860__scd_generators`` table with cols: :const:``IDX_GENS``,
``capacity_mw`` and ``utility_id_eia``
- own_eia860: ``ownership_eia860`` table.
+ own_eia860: ``core_eia860__scd_ownership`` table.
"""
return pudl.helpers.scale_by_ownership(
gens=pudl.helpers.date_merge(
@@ -611,7 +611,7 @@ def stack_generators(
"""Stack the generator table with a set of columns.
Args:
- gens: generators_eia860 table with cols: :py:const:`IDX_GENS` and all of the
+ gens: core_eia860__scd_generators table with cols: :py:const:`IDX_GENS` and all of the
``energy_source_code`` columns
cat_col: name of category column which will end up having the column names of
``cols_to_stack``
@@ -661,12 +661,12 @@ def associate_generator_tables(
) -> pd.DataFrame:
"""Associate the three tables needed to assign net gen and fuel to generators.
- The :ref:`generation_fuel_eia923` table's data is reported at the
- :py:const:`IDX_PM_ESC` granularity. Each generator in the :ref:`generators_eia860`
+ The :ref:`core_eia923__monthly_generation_fuel` table's data is reported at the
+ :py:const:`IDX_PM_ESC` granularity. Each generator in the :ref:`core_eia860__scd_generators`
has one ``prime_mover_code``, but potentially several ``energy_source_code``s that
are reported in several columns. We need to reshape the generators table such that
each generator has a separate record corresponding to each of its reported
- energy_source_codes, so it can be merged with the :ref:`generation_fuel_eia923`
+ energy_source_codes, so it can be merged with the :ref:`core_eia923__monthly_generation_fuel`
table. We do this using :func:``stack_generators`` employing
:func:`pd.DataFrame.stack`.
@@ -688,24 +688,24 @@ def associate_generator_tables(
more details.
There are some records in the data tables that have either ``prime_mover_code`` s or
- ``energy_source_code`` s that do no appear in the :ref:`generators_eia860` table.
+ ``energy_source_code`` s that do no appear in the :ref:`core_eia860__scd_generators` table.
We employ :func:`_allocate_unassociated_bf_records` to make sure those records are
associated.
Args:
- gens: :ref:`generators_eia860` table with cols: :py:const:`IDX_GENS` and all of
+ gens: :ref:`core_eia860__scd_generators` table with cols: :py:const:`IDX_GENS` and all of
the ``energy_source_code`` columns and expanded to the same frequency.
- gf: :ref:`generation_fuel_eia923` table with columns: :py:const:`IDX_PM_ESC` and
+ gf: :ref:`core_eia923__monthly_generation_fuel` table with columns: :py:const:`IDX_PM_ESC` and
``net_generation_mwh`` and ``fuel_consumed_mmbtu``.
- gen: :ref:`generation_eia923` table with columns: :py:const:`IDX_GENS` and
+ gen: :ref:`core_eia923__monthly_generation` table with columns: :py:const:`IDX_GENS` and
``net_generation_mwh``.
- bf: :ref:`boiler_fuel_eia923` table with columns: :py:const:`IDX_B_PM_ESC` and
+ bf: :ref:`core_eia923__monthly_boiler_fuel` table with columns: :py:const:`IDX_B_PM_ESC` and
fuel consumption columns.
- bga: :ref:`boiler_generator_assn_eia860` table.
+ bga: :ref:`core_eia860__assn_boiler_generator` table.
Returns:
table of generators with stacked energy sources and broadcasted net generation
- and fuel data from the :ref:`generation_eia923` and :ref:`generation_fuel_eia923`
+ and fuel data from the :ref:`core_eia923__monthly_generation` and :ref:`core_eia923__monthly_generation_fuel`
tables. There are many duplicate values in this output which will later be used
in the allocation process in :func:`allocate_gen_fuel_by_gen_esc` and
:func:`allocate_fuel_by_gen_esc`.
@@ -812,7 +812,7 @@ def remove_inactive_generators(gen_assoc: pd.DataFrame) -> pd.DataFrame:
Args:
gen_assoc: table of generators with stacked energy sources and broadcasted net
- generation data from the generation_eia923 and generation_fuel_eia923
+ generation data from the core_eia923__monthly_generation and core_eia923__monthly_generation_fuel
tables. Output of :func:`associate_generator_tables`.
"""
existing = gen_assoc.loc[(gen_assoc.operational_status == "existing")]
@@ -978,9 +978,9 @@ def _allocate_unassociated_pm_records(
col_w_unexpected_codes: Literal["energy_source_code", "prime_mover_code"],
data_columns: list[str],
) -> pd.DataFrame:
- """Associate unassociated :ref:`boiler_fuel_eia923` table records on idx_cols.
+ """Associate unassociated :ref:`core_eia923__monthly_boiler_fuel` table records on idx_cols.
- There are a subset of :ref:`boiler_fuel_eia923` and :ref:`generation_fuel_eia923`
+ There are a subset of :ref:`core_eia923__monthly_boiler_fuel` and :ref:`core_eia923__monthly_generation_fuel`
records which do not merge onto the stacked generator table on ``IDX_GENS_PM_ESC``
or ``ID_PM_ESC`` respectively. These records generally don't match with the set of
prime movers and energy sources in the stacked generator table. In this method, we
@@ -1001,7 +1001,7 @@ def _allocate_unassociated_pm_records(
# drop_invalid_rows will fail if there are not unassociated records)
if gen_assoc[~connected_mask].empty:
logger.info(
- "No unassociated boiler_fuel_eia923 or generation_fuel_eia923 records. "
+ "No unassociated core_eia923__monthly_boiler_fuel or core_eia923__monthly_generation_fuel records. "
"Skipping _allocate_unassociated_bf_records"
)
return gen_assoc
@@ -1102,12 +1102,12 @@ def prep_alloction_fraction(gen_assoc: pd.DataFrame) -> pd.DataFrame:
# 'capacity_mw': lambda x: x.sum(min_count=1),
# 'in_g_tbl': 'all'},)
gen_pm_fuel = (
- gen_assoc.merge( # flag if all generators exist in the generators_eia860 tbl
+ gen_assoc.merge( # flag if all generators exist in the core_eia860__scd_generators tbl
gens_gb_pm_esc[["in_g_tbl"]].all().reset_index(),
on=IDX_PM_ESC,
suffixes=("", "_all"),
)
- .merge( # flag if some generators exist in the generators_eia860 tbl
+ .merge( # flag if some generators exist in the core_eia860__scd_generators tbl
gens_gb_pm_esc[["in_g_tbl", "more_mwh_in_g_than_gf_tbl"]]
.any()
.reset_index(),
@@ -1200,14 +1200,14 @@ def allocate_gen_fuel_by_gen_esc(gen_pm_fuel: pd.DataFrame) -> pd.DataFrame:
"""Allocate net generation to generators/energy_source_code via three methods.
There are three main types of generators:
- * "all gen": generators of plants which fully report to the ``generation_eia923``
- table. This includes records that report more MWh to the ``generation_eia923``
- table than to the ``generation_fuel_eia923`` table (if we did not include these
+ * "all gen": generators of plants which fully report to the ``core_eia923__monthly_generation``
+ table. This includes records that report more MWh to the ``core_eia923__monthly_generation``
+ table than to the ``core_eia923__monthly_generation_fuel`` table (if we did not include these
records, the ).
* "some gen": generators of plants which partially report to the
- ``generation_eia923`` table.
+ ``core_eia923__monthly_generation`` table.
* "gf only": generators of plants which do not report at all to the
- ``generation_eia923`` table.
+ ``core_eia923__monthly_generation`` table.
Each different type of generator needs to be treated slightly differently,
but all will end up with a ``frac`` column that can be used to allocate
@@ -1324,11 +1324,11 @@ def allocate_fuel_by_gen_esc(gen_pm_fuel: pd.DataFrame) -> pd.DataFrame:
There are three main types of generators:
* "all bf": generators of plants which fully report to the
- boiler_fuel_eia923 table.
+ core_eia923__monthly_boiler_fuel table.
* "some bf": generators of plants which partially report to the
- boiler_fuel_eia923 table.
+ core_eia923__monthly_boiler_fuel table.
* "gf only": generators of plants which do not report at all to the
- boiler_fuel_eia923 table.
+ core_eia923__monthly_boiler_fuel table.
Each different type of generator needs to be treated slightly differently,
but all will end up with a ``frac`` column that can be used to allocate
@@ -1498,7 +1498,7 @@ def distribute_annually_reported_data_to_months_if_annual(
Note: We should be able to use the ``reporting_frequency_code`` column for the
identification of annually reported data. This currently does not work because we
assumed this was a plant-level annual attribute (and is thus stored in the
- ``plants_eia860`` table). See Issue #1933.
+ ``core_eia860__scd_plants`` table). See Issue #1933.
Args:
df: a pandas dataframe, either loaded from pudl_out.gen_original_eia923() or
@@ -1789,12 +1789,12 @@ def allocate_bf_data_to_gens(
) -> pd.DataFrame:
"""Allocates boiler fuel data to the generator level.
- Distributes boiler-level data from boiler_fuel_eia923 to the generator level based
+ Distributes boiler-level data from core_eia923__monthly_boiler_fuel to the generator level based
on the boiler-generator association table and the nameplate capacity of the
connected generators.
- Because fuel consumption in the boiler_fuel_eia923 table is reported per boiler_id,
- we must first map this data to generators using the boiler_generator_assn_eia860
+ Because fuel consumption in the core_eia923__monthly_boiler_fuel table is reported per boiler_id,
+ we must first map this data to generators using the core_eia860__assn_boiler_generator
table. For boilers that have a 1:m or m: m relationship with generators, we allocate
the reported fuel to each associated generator based on the nameplate capacity of
each generator. So if boiler "1" was associated with generator A (25 MW) and generator
@@ -1981,10 +1981,10 @@ def calc_net_gen_diff(gen_pm_fuel, idx):
def test_gen_fuel_allocation(
gen: pd.DataFrame, net_gen_alloc: pd.DataFrame, ratio: float = 0.05
) -> None:
- """Does the allocated MWh differ from the granular :ref:`generation_eia923`?
+ """Does the allocated MWh differ from the granular :ref:`core_eia923__monthly_generation`?
Args:
- gen: the ``generation_eia923`` table.
+ gen: the ``core_eia923__monthly_generation`` table.
net_gen_alloc: the allocated net generation at the :py:const:`IDX_PM_ESC` level
ratio: the tolerance
"""
@@ -2079,7 +2079,7 @@ def test_original_gf_vs_the_allocated_by_gens_gf(
if max_diff > 10 or min_diff < -5:
raise AssertionError(
f"ahhhHHhh. {data_col} has some plant-year aggregations that that "
- "allocated data that is off from the original generation_fuel_eia923 "
+ "allocated data that is off from the original core_eia923__monthly_generation_fuel "
"data by more than an accepted range of tolerance. \n"
f" Min difference: {min_diff}\n"
f" Max difference: {max_diff}"
diff --git a/src/pudl/analysis/classify_plants_ferc1.py b/src/pudl/analysis/classify_plants_ferc1.py
index 8c4c724d77..f880a3b09f 100644
--- a/src/pudl/analysis/classify_plants_ferc1.py
+++ b/src/pudl/analysis/classify_plants_ferc1.py
@@ -625,7 +625,7 @@ def fuel_by_plant_ferc1(
Args:
fuel_df: Pandas DataFrame resembling the post-transform
- result for the fuel_ferc1 table.
+ result for the core_ferc1__yearly_fuel table.
thresh: A value between 0.5 and 1.0 indicating the minimum fraction of
overall heat content that must have been provided by a fuel in a plant-year
for it to be considered the "primary" fuel for the plant in that year.
@@ -633,7 +633,7 @@ def fuel_by_plant_ferc1(
Returns:
DataFrame with a single record for each plant-year, including the columns
- required to merge it with the plants_steam_ferc1 table/DataFrame (report_year,
+ required to merge it with the core_ferc1__yearly_plants_steam table/DataFrame (report_year,
utility_id_ferc1, and plant_name) as well as totals for fuel mmbtu consumed in
that plant-year, and the cost of fuel in that year, the proportions of heat
content and fuel costs for each fuel in that year, and a column that labels the
@@ -661,7 +661,7 @@ def fuel_by_plant_ferc1(
# Calculate per-fuel derived values and add them to the DataFrame
df = (
# Really there should *not* be any duplicates here but... there's a
- # bug somewhere that introduces them into the fuel_ferc1 table.
+ # bug somewhere that introduces them into the core_ferc1__yearly_fuel table.
fuel_df[keep_cols]
.drop_duplicates()
# Calculate totals for each record based on per-unit values:
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 55165f10fa..1e1448bae0 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -54,7 +54,7 @@ def mcoe_asset_factory(
"gen": AssetIn(
key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
),
- "bga": AssetIn(key="boiler_generator_assn_eia860"),
+ "bga": AssetIn(key="core_eia860__assn_boiler_generator"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -65,7 +65,7 @@ def hr_by_unit_asset(gen: pd.DataFrame, bga: pd.DataFrame) -> pd.DataFrame:
@asset(
name=f"heat_rate_by_generator_{agg_freqs[freq]}",
ins={
- "bga": AssetIn(key="boiler_generator_assn_eia860"),
+ "bga": AssetIn(key="core_eia860__assn_boiler_generator"),
"hr_by_unit": AssetIn(key=f"heat_rate_by_unit_{agg_freqs[freq]}"),
"gens": AssetIn(key="denorm_generators_eia"),
},
@@ -182,7 +182,7 @@ def mcoe_asset(
default_value=True,
description=(
"If True, include attributes of all generators in the "
- ":ref:`generators_eia860` table, rather than just the generators "
+ ":ref:`core_eia860__scd_generators` table, rather than just the generators "
"which have records in the derived MCOE values. True by default."
),
),
@@ -668,7 +668,7 @@ def mcoe_generators(
mcoe: The MCOE dataframe outputted from the `mcoe` analysis function.
gens: The denormalized dataframe of all EIA generators.
all_gens: if True, include attributes of all generators in the
- :ref:`generators_eia860` table, rather than just the generators
+ :ref:`core_eia860__scd_generators` table, rather than just the generators
which have records in the derived MCOE values. True by default.
timeseries_fillin: if True, fill in the full timeseries for each generator in
the output dataframe. The data in the timeseries will be filled
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index e573bc0d34..03c49357e5 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -34,9 +34,9 @@
*load_assets_from_modules([pudl.transform.eia861], group_name="clean_eia861"),
*load_assets_from_modules([pudl.extract.eia923], group_name="raw_eia923"),
*load_assets_from_modules([pudl.transform.eia923], group_name="_core_eia923"),
- *load_assets_from_modules([pudl.transform.eia], group_name="norm_eia"),
+ *load_assets_from_modules([pudl.transform.eia], group_name="core_eia"),
*load_assets_from_modules([pudl.extract.ferc1], group_name="raw_ferc1"),
- *load_assets_from_modules([pudl.transform.ferc1], group_name="norm_ferc1"),
+ *load_assets_from_modules([pudl.transform.ferc1], group_name="core_ferc1"),
*load_assets_from_modules([pudl.extract.ferc714], group_name="raw_ferc714"),
*load_assets_from_modules([pudl.transform.ferc714], group_name="clean_ferc714"),
*load_assets_from_modules([pudl.output.ferc714], group_name="respondents_ferc714"),
diff --git a/src/pudl/etl/epacems_assets.py b/src/pudl/etl/epacems_assets.py
index 9b66e29531..b86fb9c644 100644
--- a/src/pudl/etl/epacems_assets.py
+++ b/src/pudl/etl/epacems_assets.py
@@ -46,7 +46,7 @@ def process_single_year(
context,
year,
epacamd_eia: pd.DataFrame,
- plants_entity_eia: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
) -> YearPartitions:
"""Process a single year of EPA CEMS data.
@@ -55,7 +55,7 @@ def process_single_year(
year: Year of data to process.
epacamd_eia: The EPA EIA crosswalk table used for harmonizing the
ORISPL code with EIA.
- plants_entity_eia: The EIA Plant entities used for aligning timezones.
+ core_eia__entity_plants: The EIA Plant entities used for aligning timezones.
"""
ds = context.resources.datastore
epacems_settings = context.resources.dataset_settings.epacems
@@ -68,7 +68,9 @@ def process_single_year(
logger.info(f"Processing EPA CEMS hourly data for {year}-{state}")
df = pudl.extract.epacems.extract(year=year, state=state, ds=ds)
if not df.empty: # If state-year combination has data
- df = pudl.transform.epacems.transform(df, epacamd_eia, plants_entity_eia)
+ df = pudl.transform.epacems.transform(
+ df, epacamd_eia, core_eia__entity_plants
+ )
table = pa.Table.from_pandas(df, schema=schema, preserve_index=False)
# Write to a directory of partitioned parquet files
@@ -110,7 +112,7 @@ def consolidate_partitions(context, partitions: list[YearPartitions]) -> None:
@graph_asset
def hourly_emissions_epacems(
- epacamd_eia_unique: pd.DataFrame, plants_entity_eia: pd.DataFrame
+ epacamd_eia_unique: pd.DataFrame, core_eia__entity_plants: pd.DataFrame
) -> None:
"""Extract, transform and load CSVs for EPA CEMS.
@@ -124,7 +126,7 @@ def hourly_emissions_epacems(
lambda year: process_single_year(
year,
epacamd_eia_unique,
- plants_entity_eia,
+ core_eia__entity_plants,
)
)
return consolidate_partitions(partitions.collect())
diff --git a/src/pudl/etl/glue_assets.py b/src/pudl/etl/glue_assets.py
index c40c02915f..c8995d5ecd 100644
--- a/src/pudl/etl/glue_assets.py
+++ b/src/pudl/etl/glue_assets.py
@@ -12,7 +12,7 @@
# TODO (bendnorman): Currently loading all glue tables. Could potentially allow users
# to load subsets of the glue tables, see: https://docs.dagster.io/concepts/assets/multi-assets#subsetting-multi-assets
# Could split out different types of glue tables into different assets. For example the cross walk table could be a separate asset
-# that way dagster doesn't think all glue tables depend on generators_entity_eia, boilers_entity_eia.
+# that way dagster doesn't think all glue tables depend on core_eia__entity_generators, core_eia__entity_boilers.
@multi_asset(
@@ -29,8 +29,8 @@ def create_glue_tables(context):
Args:
context: dagster keyword that provides access to resources and config.
- generators_entity_eia: Static generator attributes compiled from across the EIA-860 and EIA-923 data.
- boilers_entity_eia: boilers_entity_eia.
+ core_eia__entity_generators: Static generator attributes compiled from across the EIA-860 and EIA-923 data.
+ core_eia__entity_boilers: core_eia__entity_boilers.
Returns:
A dictionary of DataFrames whose keys are the names of the corresponding
@@ -82,8 +82,8 @@ def raw_epacamd_eia(context) -> pd.DataFrame:
def epacamd_eia(
context,
raw_epacamd_eia: pd.DataFrame,
- generators_entity_eia: pd.DataFrame,
- boilers_entity_eia: pd.DataFrame,
+ core_eia__entity_generators: pd.DataFrame,
+ core_eia__entity_boilers: pd.DataFrame,
) -> pd.DataFrame:
"""Clean up the EPACAMD-EIA Crosswalk file.
@@ -143,8 +143,8 @@ def epacamd_eia(
restrict the crosswalk data so the tests don't fail on foreign key
restraints.
raw_epacamd_eia: The result of running this module's extract() function.
- generators_entity_eia: The generators_entity_eia table.
- boilers_entity_eia: The boilers_entitiy_eia table.
+ core_eia__entity_generators: The core_eia__entity_generator table.
+ core_eia__entity_boilers: The core_eia__entity_boilerstable.
Returns:
A dictionary containing the cleaned EPACAMD-EIA crosswalk DataFrame.
@@ -194,13 +194,13 @@ def epacamd_eia(
)
crosswalk_clean = pd.merge(
crosswalk_clean,
- generators_entity_eia[["plant_id_eia", "generator_id"]],
+ core_eia__entity_generators[["plant_id_eia", "generator_id"]],
on=["plant_id_eia", "generator_id"],
how="inner",
)
crosswalk_clean = pd.merge(
crosswalk_clean,
- boilers_entity_eia[["plant_id_eia", "boiler_id"]],
+ core_eia__entity_boilers[["plant_id_eia", "boiler_id"]],
on=["plant_id_eia", "boiler_id"],
how="inner",
)
@@ -261,9 +261,9 @@ def correct_epa_eia_plant_id_mapping(df: pd.DataFrame) -> pd.DataFrame:
@asset(io_manager_key="pudl_sqlite_io_manager")
def epacamd_eia_subplant_ids(
epacamd_eia_unique: pd.DataFrame,
- generators_eia860: pd.DataFrame,
+ core_eia860__scd_generators: pd.DataFrame,
emissions_unit_ids_epacems: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Groups units and generators into unique subplant groups.
@@ -294,9 +294,11 @@ def epacamd_eia_subplant_ids(
# functioning (#2535) but when it is, ensure that it gets plugged into the dag
# BEFORE this step so the subplant IDs can benefit from the more fleshed out units
epacamd_eia_complete = (
- augement_crosswalk_with_generators_eia860(epacamd_eia_unique, generators_eia860)
+ augement_crosswalk_with_generators_eia860(
+ epacamd_eia_unique, core_eia860__scd_generators
+ )
.pipe(augement_crosswalk_with_epacamd_ids, emissions_unit_ids_epacems)
- .pipe(augement_crosswalk_with_bga_eia860, boiler_generator_assn_eia860)
+ .pipe(augement_crosswalk_with_bga_eia860, core_eia860__assn_boiler_generator)
)
# use graph analysis to identify subplants
subplant_ids = make_subplant_ids(epacamd_eia_complete).pipe(
@@ -347,16 +349,16 @@ def epacamd_eia_subplant_ids(
def augement_crosswalk_with_generators_eia860(
- crosswalk_clean: pd.DataFrame, generators_eia860: pd.DataFrame
+ crosswalk_clean: pd.DataFrame, core_eia860__scd_generators: pd.DataFrame
) -> pd.DataFrame:
"""Merge any plants that are missing from the EPA crosswalk but appear in EIA-860.
Args:
crosswalk_clean: transformed EPA CEMS-EIA crosswalk.
- generators_eia860: EIA860 generators table.
+ core_eia860__scd_generators: EIA860 generators table.
"""
crosswalk_clean = crosswalk_clean.merge(
- generators_eia860[["plant_id_eia", "generator_id"]].drop_duplicates(),
+ core_eia860__scd_generators[["plant_id_eia", "generator_id"]].drop_duplicates(),
how="outer",
on=["plant_id_eia", "generator_id"],
validate="m:1",
@@ -384,11 +386,11 @@ def augement_crosswalk_with_epacamd_ids(
def augement_crosswalk_with_bga_eia860(
- crosswalk_clean: pd.DataFrame, boiler_generator_assn_eia860: pd.DataFrame
+ crosswalk_clean: pd.DataFrame, core_eia860__assn_boiler_generator: pd.DataFrame
) -> pd.DataFrame:
"""Merge all EIA Unit IDs into the crosswalk."""
return crosswalk_clean.merge(
- boiler_generator_assn_eia860[
+ core_eia860__assn_boiler_generator[
["plant_id_eia", "generator_id", "unit_id_pudl"]
].drop_duplicates(),
how="outer",
diff --git a/src/pudl/extract/ferc1.py b/src/pudl/extract/ferc1.py
index b7cbd88599..bc7942ef05 100644
--- a/src/pudl/extract/ferc1.py
+++ b/src/pudl/extract/ferc1.py
@@ -99,67 +99,67 @@
logger = pudl.logging_helpers.get_logger(__name__)
TABLE_NAME_MAP_FERC1: dict[str, dict[str, str]] = {
- "fuel_ferc1": {
+ "core_ferc1__yearly_fuel": {
"dbf": "f1_fuel",
"xbrl": "steam_electric_generating_plant_statistics_large_plants_fuel_statistics_402",
},
- "plants_steam_ferc1": {
+ "core_ferc1__yearly_plants_steam": {
"dbf": "f1_steam",
"xbrl": "steam_electric_generating_plant_statistics_large_plants_402",
},
- "plants_small_ferc1": {
+ "core_ferc1__yearly_plants_small": {
"dbf": "f1_gnrt_plant",
"xbrl": "generating_plant_statistics_410",
},
- "plants_hydro_ferc1": {
+ "core_ferc1__yearly_plants_hydro": {
"dbf": "f1_hydro",
"xbrl": "hydroelectric_generating_plant_statistics_large_plants_406",
},
- "plants_pumped_storage_ferc1": {
+ "core_ferc1__yearly_plants_pumped_storage": {
"dbf": "f1_pumped_storage",
"xbrl": "pumped_storage_generating_plant_statistics_large_plants_408",
},
- "plant_in_service_ferc1": {
+ "core_ferc1__yearly_plant_in_service": {
"dbf": "f1_plant_in_srvce",
"xbrl": "electric_plant_in_service_204",
},
- "purchased_power_ferc1": {
+ "core_ferc1__yearly_purchased_power": {
"dbf": "f1_purchased_pwr",
"xbrl": "purchased_power_326",
},
- "electric_energy_sources_ferc1": {
+ "core_ferc1__yearly_electric_energy_sources": {
"dbf": "f1_elctrc_erg_acct",
"xbrl": "electric_energy_account_401a",
},
- "electric_energy_dispositions_ferc1": {
+ "core_ferc1__yearly_electric_energy_dispositions": {
"dbf": "f1_elctrc_erg_acct",
"xbrl": "electric_energy_account_401a",
},
- "utility_plant_summary_ferc1": {
+ "core_ferc1__yearly_utility_plant_summary": {
"dbf": "f1_utltyplnt_smmry",
"xbrl": "summary_of_utility_plant_and_accumulated_provisions_for_depreciation_amortization_and_depletion_200",
},
- "transmission_statistics_ferc1": {
+ "core_ferc1__yearly_transmission_statistics": {
"dbf": "f1_xmssn_line",
"xbrl": "transmission_line_statistics_422",
},
- "electric_operating_expenses_ferc1": {
+ "core_ferc1__yearly_electric_operating_expenses": {
"dbf": "f1_elc_op_mnt_expn",
"xbrl": "electric_operations_and_maintenance_expenses_320",
},
- "balance_sheet_liabilities_ferc1": {
+ "core_ferc1__yearly_balance_sheet_liabilities": {
"dbf": "f1_bal_sheet_cr",
"xbrl": "comparative_balance_sheet_liabilities_and_other_credits_110",
},
- "balance_sheet_assets_ferc1": {
+ "core_ferc1__yearly_balance_sheet_assets": {
"dbf": "f1_comp_balance_db",
"xbrl": "comparative_balance_sheet_assets_and_other_debits_110",
},
- "income_statement_ferc1": {
+ "core_ferc1__yearly_income_statement": {
"dbf": ["f1_income_stmnt", "f1_incm_stmnt_2"],
"xbrl": "statement_of_income_114",
},
- "retained_earnings_ferc1": {
+ "core_ferc1__yearly_retained_earnings": {
"dbf": "f1_retained_erng",
"xbrl": "retained_earnings_118",
},
@@ -167,27 +167,27 @@
"dbf": "f1_retained_erng",
"xbrl": "retained_earnings_appropriations_118",
},
- "depreciation_amortization_summary_ferc1": {
+ "core_ferc1__yearly_depreciation_amortization_summary": {
"dbf": "f1_dacs_epda",
"xbrl": "summary_of_depreciation_and_amortization_charges_section_a_336",
},
- "electric_plant_depreciation_changes_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_changes": {
"dbf": "f1_accumdepr_prvsn",
"xbrl": "accumulated_provision_for_depreciation_of_electric_utility_plant_changes_section_a_219",
},
- "electric_plant_depreciation_functional_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_functional": {
"dbf": "f1_accumdepr_prvsn",
"xbrl": "accumulated_provision_for_depreciation_of_electric_utility_plant_functional_classification_section_b_219",
},
- "electric_operating_revenues_ferc1": {
+ "core_ferc1__yearly_electric_operating_revenues": {
"dbf": "f1_elctrc_oper_rev",
"xbrl": "electric_operating_revenues_300",
},
- "cash_flow_ferc1": {
+ "core_ferc1__yearly_cash_flow": {
"dbf": "f1_cash_flow",
"xbrl": "statement_of_cash_flows_120",
},
- "electricity_sales_by_rate_schedule_ferc1": {
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule": {
"dbf": "f1_sales_by_sched",
"xbrl": [
"sales_of_electricity_by_rate_schedules_account_440_residential_304",
@@ -201,7 +201,7 @@
"sales_of_electricity_by_rate_schedules_account_totals_304",
],
},
- "other_regulatory_liabilities_ferc1": {
+ "core_ferc1__yearly_other_regulatory_liabilities": {
"dbf": "f1_othr_reg_liab",
"xbrl": "other_regulatory_liabilities_account_254_278",
},
diff --git a/src/pudl/glue/ferc1_eia.py b/src/pudl/glue/ferc1_eia.py
index e75f30f55d..a5319273f8 100644
--- a/src/pudl/glue/ferc1_eia.py
+++ b/src/pudl/glue/ferc1_eia.py
@@ -255,11 +255,11 @@ def get_plants_ferc1_raw_job() -> JobDefinition:
This job expects ferc1.sqlite and ferc_xbrl.sqlite databases to be populated.
"""
plant_tables = [
- "plants_hydro_ferc1",
- "plants_small_ferc1",
- "plants_pumped_storage_ferc1",
- "plants_steam_ferc1",
- "fuel_ferc1", # bc it has plants/is associated w/ the steam table
+ "core_ferc1__yearly_plants_hydro",
+ "core_ferc1__yearly_plants_small",
+ "core_ferc1__yearly_plants_pumped_storage",
+ "core_ferc1__yearly_plants_steam",
+ "core_ferc1__yearly_fuel", # bc it has plants/is associated w/ the steam table
]
@asset(ins={table_name: AssetIn() for table_name in plant_tables})
@@ -412,7 +412,7 @@ def label_utilities_ferc1_xbrl(
def get_utility_most_recent_capacity(pudl_engine) -> pd.DataFrame:
"""Calculate total generation capacity by utility in most recent reported year."""
gen_caps = pd.read_sql(
- "SELECT utility_id_eia, capacity_mw, report_date FROM generators_eia860",
+ "SELECT utility_id_eia, capacity_mw, report_date FROM core_eia860__scd_generators",
con=pudl_engine,
parse_dates=["report_date"],
)
diff --git a/src/pudl/helpers.py b/src/pudl/helpers.py
index 023921d6e6..3bbeb81bbc 100644
--- a/src/pudl/helpers.py
+++ b/src/pudl/helpers.py
@@ -464,11 +464,11 @@ def date_merge(
Args:
left: The left dataframe in the merge. Typically monthly in our use
- cases if doing a left merge E.g. ``generation_eia923``.
+ cases if doing a left merge E.g. ``core_eia923__monthly_generation``.
Must contain columns specified by ``left_date_col`` and
``on`` argument.
right: The right dataframe in the merge. Typically annual in our uses
- cases if doing a left merge E.g. ``generators_eia860``.
+ cases if doing a left merge E.g. ``core_eia860__scd_generators``.
Must contain columns specified by ``right_date_col`` and ``on`` argument.
on: The columns to merge on that are shared between both
dataframes. Typically ID columns like ``plant_id_eia``, ``generator_id``
@@ -1733,7 +1733,7 @@ def scale_by_ownership(
gens: table with records at the generator level and generator attributes
to be scaled by ownership, must have columns ``plant_id_eia``,
``generator_id``, and ``report_date``
- own_eia860: the ``ownership_eia860`` table
+ own_eia860: the ``core_eia860__scd_ownership`` table
scale_cols: a list of columns in the generator table to slice by ownership
fraction
validate: how to validate merging the ownership table onto the
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 4bd1012d13..566c99458d 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -106,7 +106,7 @@
},
"asset_type": {
"type": "string",
- "description": "Type of asset being reported to the balance_sheet_assets_ferc1 table.",
+ "description": "Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.",
},
"associated_combined_heat_power": {
"type": "boolean",
@@ -682,7 +682,7 @@
"energy_displaced_mwh": {"type": "number", "unit": "MWh"},
"energy_disposition_type": {
"type": "string",
- "description": "Type of energy disposition reported in the electric_energy_dispositions_ferc1. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
+ "description": "Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
},
"energy_efficiency_annual_actual_peak_reduction_mw": {
"type": "number",
@@ -773,7 +773,7 @@
},
"energy_source_type": {
"type": "string",
- "description": "Type of energy source reported in the electric_energy_sources_ferc1 table. There are three groups of energy sources: generation, power exchanges and transmission.",
+ "description": "Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.",
},
"energy_storage": {
"type": "boolean",
@@ -1223,7 +1223,7 @@
},
"liability_type": {
"type": "string",
- "description": "Type of liability being reported to the balance_sheet_liabilities_ferc1 table.",
+ "description": "Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.",
},
"license_id_ferc1": {
"type": "integer",
@@ -1426,7 +1426,7 @@
"description": "Net electricity generation for the specified period in megawatt-hours (MWh).",
"unit": "MWh",
# TODO: disambiguate as this column means something different in
- # generation_fuel_eia923:
+ # core_eia923__monthly_generation_fuel:
# "description": "Net generation, year to date in megawatthours (MWh). This is total electrical output net of station service. In the case of combined heat and power plants, this value is intended to include internal consumption of electricity for the purposes of a production process, as well as power put on the grid.",
},
"net_load_mwh": {
@@ -2640,7 +2640,7 @@
# TODO: Disambiguate column name. In some cases this specifically refers to
# the utility which operates a given plant or generator, but comes from the
# same set of IDs as all the utility IDs.
- # E.g. in ownership_eia860 or generators_eia860 it would be something like:
+ # E.g. in core_eia860__scd_ownership or core_eia860__scd_generators it would be something like:
# "description": "EIA-assigned identification number for the company that is responsible for the day-to-day operations of the generator.",
},
"utility_id_ferc1": {
@@ -2671,7 +2671,7 @@
"utility_owned_capacity_mw": {"type": "number", "unit": "MW"},
"utility_plant_asset_type": {
"type": "string",
- "description": "Type of utility plant asset reported in the utility_plant_summary_ferc1 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ "description": "Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
},
"utility_pobox": {"type": "string"},
"utility_type": {
@@ -2680,7 +2680,7 @@
},
"utility_type_other": {
"type": "string",
- "description": "Freeform description of type of utility reported in one of the other three other utility_type sections in the utility_plant_summary_ferc1 table. This field is reported only in the DBF reporting years (1994-2020).",
+ "description": "Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).",
},
"variable_peak_pricing": {"type": "boolean"},
"virtual_capacity_mw": {"type": "number", "unit": "MW"},
@@ -2802,7 +2802,7 @@
FIELD_METADATA_BY_RESOURCE: dict[str, dict[str, Any]] = {
"sector_consolidated_eia": {"code": {"type": "integer"}},
- "plants_hydro_ferc1": {
+ "core_ferc1__yearly_plants_hydro": {
"plant_type": {
"type": "string",
"constraints": {
@@ -2820,7 +2820,7 @@
},
}
},
- "plants_steam_ferc1": {
+ "core_ferc1__yearly_plants_steam": {
"plant_type": {
"type": "string",
"constraints": {
@@ -2856,7 +2856,7 @@
},
"technology_description": {"constraints": {"enum": set(TECH_DESCRIPTIONS)}},
},
- "transmission_statistics_ferc1": {
+ "core_ferc1__yearly_transmission_statistics": {
"capex_land": {
"description": "Cost of Land and land rights for the transmission line."
},
diff --git a/src/pudl/metadata/resources/allocate_gen_fuel.py b/src/pudl/metadata/resources/allocate_gen_fuel.py
index 5a9380d5c9..92a3089806 100644
--- a/src/pudl/metadata/resources/allocate_gen_fuel.py
+++ b/src/pudl/metadata/resources/allocate_gen_fuel.py
@@ -8,7 +8,7 @@
"distinguish between primary and secondary energy_sources for generators. "
"Net generation is allocated equally between energy source codes, so if a "
"plant has multiple generators with the same prime_mover_code but different "
- "energy source codes the generation_fuel_eia923 records will be associated "
+ "energy source codes the core_eia923__monthly_generation_fuel records will be associated "
"similarly between these two generators. Allocated net generation will still "
"be proportional to each generator's net generation or capacity."
)
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 57337cc1b8..45928553e5 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -35,7 +35,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "boilers_entity_eia": {
+ "core_eia__entity_boilers": {
"description": "Static boiler attributes compiled from the EIA-860 and EIA-923 data.",
"schema": {
"fields": [
@@ -488,7 +488,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "generators_entity_eia": {
+ "core_eia__entity_generators": {
"description": "Static generator attributes compiled from across the EIA-860 and EIA-923 data.",
"schema": {
"fields": [
@@ -547,7 +547,7 @@
"etl_group": "glue",
"field_namespace": "eia",
},
- "plants_entity_eia": {
+ "core_eia__entity_plants": {
"description": "Static plant attributes, compiled from across all EIA-860 and EIA-923 data.",
"schema": {
"fields": [
@@ -670,7 +670,7 @@
"etl_group": "glue",
"field_namespace": "eia",
},
- "utilities_entity_eia": {
+ "core_eia__entity_utilities": {
"description": "Static attributes of utilities, compiled from all EIA data.",
"schema": {
"fields": ["utility_id_eia", "utility_name_eia"],
@@ -723,7 +723,7 @@
"utility_data_nerc_eia861",
"utility_data_rto_eia861",
# Utility IDs in this table are owners, not operators, and we are
- # not yet harvesting owner_utility_id_eia from ownership_eia860.
+ # not yet harvesting owner_utility_id_eia from core_eia860__scd_ownership.
# See https://github.com/catalyst-cooperative/pudl/issues/1393
"generation_fuel_by_generator_energy_source_owner_yearly_eia923",
],
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index f7fe09210d..54e465a87b 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -2,7 +2,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "boilers_eia860": {
+ "core_eia860__scd_boilers": {
"description": (
"Annually varying boiler attributes, compiled from across all EIA-860 data."
),
@@ -104,11 +104,11 @@
"foreign_key_rules": {
"fields": [["plant_id_eia", "boiler_id", "report_date"]],
# TODO: Excluding monthly data tables since their report_date
- # values don't match up with generators_eia860, which is annual,
+ # values don't match up with core_eia860__scd_generators, which is annual,
# so non-january records violate the constraint.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
- "boiler_fuel_eia923",
+ "core_eia923__monthly_boiler_fuel",
"denorm_boiler_fuel_eia923",
"denorm_boiler_fuel_monthly_eia923",
],
@@ -118,7 +118,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "eia860",
},
- "boiler_generator_assn_eia860": {
+ "core_eia860__assn_boiler_generator": {
"description": (
"Associations between boilers and generators as reported in EIA-860 "
"Schedule 6, Part A. Augmented with various heuristics within PUDL."
@@ -142,7 +142,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "eia860",
},
- "generators_eia860": {
+ "core_eia860__scd_generators": {
"description": (
"Annually varying generator attributes compiled from across EIA-860 and "
"EIA-923 data."
@@ -223,20 +223,20 @@
"foreign_key_rules": {
"fields": [["plant_id_eia", "generator_id", "report_date"]],
# TODO: Excluding monthly data tables since their report_date
- # values don't match up with generators_eia860, which is annual,
+ # values don't match up with core_eia860__scd_generators, which is annual,
# so non-january records violate the constraint.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
- "boiler_fuel_eia923",
+ "core_eia923__monthly_boiler_fuel",
"capacity_factor_by_generator_monthly",
"denorm_generation_eia923",
"denorm_generation_monthly_eia923",
"fuel_cost_by_generator_monthly",
- "fuel_receipts_costs_eia923",
- "generation_eia923",
+ "core_eia923__monthly_fuel_receipts_costs",
+ "core_eia923__monthly_generation",
"generation_fuel_by_generator_energy_source_monthly_eia923",
"generation_fuel_by_generator_monthly_eia923",
- "generation_fuel_eia923",
+ "core_eia923__monthly_generation_fuel",
"heat_rate_by_generator_monthly",
"mcoe_monthly",
"mcoe_generators_monthly",
@@ -247,7 +247,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "eia860",
},
- "ownership_eia860": {
+ "core_eia860__scd_ownership": {
"description": (
"Generator Ownership, reported in EIA-860 Schedule 4. Includes only "
"jointly or third-party owned generators."
@@ -316,7 +316,7 @@
"sources": ["eia860"],
"etl_group": "outputs",
},
- "plants_eia860": {
+ "core_eia860__scd_plants": {
"description": (
"Annually varying plant attributes, compiled from across all EIA-860 and "
"EIA-923 data."
@@ -369,11 +369,11 @@
"foreign_key_rules": {
"fields": [["plant_id_eia", "report_date"]],
# TODO: Excluding monthly data tables since their report_date
- # values don't match up with plants_eia860, which is annual, so
+ # values don't match up with core_eia860__scd_plants, which is annual, so
# non-january records fail.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
- "boiler_fuel_eia923",
+ "core_eia923__monthly_boiler_fuel",
"denorm_boiler_fuel_eia923",
"denorm_boiler_fuel_monthly_eia923",
"denorm_fuel_receipts_costs_eia923",
@@ -384,10 +384,10 @@
"denorm_generation_fuel_combined_monthly_eia923",
"generation_fuel_by_generator_energy_source_monthly_eia923",
"generation_fuel_by_generator_monthly_eia923",
- "fuel_receipts_costs_eia923",
- "generation_eia923",
- "generation_fuel_eia923",
- "generation_fuel_nuclear_eia923",
+ "core_eia923__monthly_fuel_receipts_costs",
+ "core_eia923__monthly_generation",
+ "core_eia923__monthly_generation_fuel",
+ "core_eia923__monthly_generation_fuel_nuclear",
"heat_rate_by_unit_monthly",
"heat_rate_by_generator_monthly",
"fuel_cost_by_generator_monthly",
@@ -401,7 +401,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "eia860",
},
- "utilities_eia860": {
+ "core_eia860__scd_utilities": {
"description": (
"Annually varying utility attributes, compiled from all EIA data."
),
@@ -443,7 +443,7 @@
# ["owner_utility_id_eia", "report_date"],
],
# TODO: Excluding monthly data tables since their report_date
- # values don't match up with plants_eia860, which is annual, so
+ # values don't match up with core_eia860__scd_plants, which is annual, so
# non-january records fail.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
# NOTE: EIA-861 has not gone through harvesting / normalization yet.
@@ -468,7 +468,7 @@
"generation_fuel_by_generator_energy_source_monthly_eia923",
"generation_fuel_by_generator_monthly_eia923",
# Utility IDs in this table are owners, not operators, and we are
- # not yet harvesting owner_utility_id_eia from ownership_eia860.
+ # not yet harvesting owner_utility_id_eia from core_eia860__scd_ownership.
# See https://github.com/catalyst-cooperative/pudl/issues/1393
"generation_fuel_by_generator_energy_source_owner_yearly_eia923",
"distributed_generation_fuel_eia861",
@@ -503,7 +503,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "eia860",
},
- "emissions_control_equipment_eia860": {
+ "core_eia860__scd_emissions_control_equipment": {
"description": (
"""The cost, type, operating status, retirement date, and install year of
emissions control equipment reported to EIA. Includes control ids for sulfur dioxide
@@ -571,7 +571,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "boiler_emissions_control_equipment_assn_eia860": {
+ "core_eia860__annual_boiler_emissions_control_equipment_assn": {
"description": (
"""A table that links EIA boiler IDs to emissions control IDs for NOx, SO2,
mercury, and particulate monitoring. The relationship between the IDs is sometimes many
@@ -599,7 +599,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "boiler_cooling_assn_eia860": {
+ "core_eia860__assn_boiler_cooling": {
"description": "A table that links EIA boiler IDs to EIA cooling system IDs.",
"schema": {
"fields": [
@@ -620,7 +620,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "boiler_stack_flue_assn_eia860": {
+ "core_eia860__assn_boiler_stack_flue": {
"description": (
"""A table that links EIA boiler IDs to EIA stack and/or flue
system IDs.
diff --git a/src/pudl/metadata/resources/eia923.py b/src/pudl/metadata/resources/eia923.py
index 8e7c5b1219..8c341c61b7 100644
--- a/src/pudl/metadata/resources/eia923.py
+++ b/src/pudl/metadata/resources/eia923.py
@@ -2,7 +2,7 @@
from typing import Any
TABLE_DESCRIPTIONS: dict[str, str] = {
- "boiler_fuel_eia923": (
+ "core_eia923__monthly_boiler_fuel": (
"""EIA-923 Monthly Boiler Fuel Consumption and Emissions, from EIA-923 Schedule 3.
Reports the quantity of each type of fuel consumed by each boiler on a monthly basis, as
@@ -12,7 +12,7 @@
generation units.
This table provides better coverage of the entire fleet of generators than the
-``generation_fuel_eia923`` table, but the fuel consumption reported here is not directly
+``core_eia923__monthly_generation_fuel`` table, but the fuel consumption reported here is not directly
associated with a generator. This complicates the heat rate calculation, since the
associations between individual boilers and generators are incomplete and can be
complex.
@@ -21,7 +21,7 @@
it is reported in December.
"""
),
- "fuel_receipts_costs_eia923": (
+ "core_eia923__monthly_fuel_receipts_costs": (
"""Data describing fuel deliveries to power plants, reported in EIA-923 Schedule 2, Part A.
Each record describes an individual fuel delivery. There can be multiple deliveries of
@@ -47,13 +47,13 @@
2002-2008 via the EIA-423, and going back as far as 1972 from the FERC-423.
"""
),
- "generation_eia923": (
+ "core_eia923__monthly_generation": (
"""EIA-923 Monthly Generating Unit Net Generation. From EIA-923 Schedule 3.
Reports the net electricity generated by each reporting generator on a monthly basis.
This is the most granular information we have about how much electricity individual
generators are producing, but only about half of all the generation reported in the
-``generation_fuel_eia923`` appears in this table due to the different reporting
+``core_eia923__monthly_generation_fuel`` appears in this table due to the different reporting
requirements imposed on different types and sizes of generators.
Whenever possible, we use this generator-level net generation to estimate the heat rates
@@ -65,7 +65,7 @@
it is reported in December.
"""
),
- "generation_fuel_eia923": (
+ "core_eia923__monthly_generation_fuel": (
"""EIA-923 Monthly Generation and Fuel Consumption Time Series. From EIA-923 Schedule 3.
Monthly electricity generation and fuel consumption reported for each combination of
@@ -74,7 +74,7 @@
of fuel consumption and electricity generation for the entire generation fleet. We use
the primary fuels and prime movers reported for each generator along with their
capacities to attribute fuel consumption and generation when it isn't directly reported
-in the ``generation_eia923`` and ``boiler_fuel_eia923`` tables in order to calculate
+in the ``core_eia923__monthly_generation`` and ``core_eia923__monthly_boiler_fuel`` tables in order to calculate
capacity factors, heat rates, and the marginal cost of electricity.
The table makes a distinction between all fuel consumed and fuel consumed for
@@ -86,7 +86,7 @@
generation, and all of it is reported in December.
"""
),
- "generation_fuel_nuclear_eia923": (
+ "core_eia923__monthly_generation_fuel_nuclear": (
"""EIA-923 Monthly Generation and Fuel Consumption Time Series. From EIA-923 Schedule 3.
Monthly electricity generation and fuel consumption reported for each combination of
@@ -99,8 +99,8 @@
"generation_fuel_combined_eia923": (
"""EIA-923 Monthly Generation and Fuel Consumption Time Series. From EIA-923 Schedule 3.
-Denormalized, combined data from the ``generation_fuel_eia923`` and
-``generation_fuel_nuclear_eia923`` with nuclear generation aggregated from the nuclear
+Denormalized, combined data from the ``core_eia923__monthly_generation_fuel`` and
+``core_eia923__monthly_generation_fuel_nuclear`` with nuclear generation aggregated from the nuclear
generation unit level up to the plant prime mover level, so as to be compatible with
fossil fuel generation data.
"""
@@ -108,8 +108,8 @@
}
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "boiler_fuel_eia923": {
- "description": TABLE_DESCRIPTIONS["boiler_fuel_eia923"],
+ "core_eia923__monthly_boiler_fuel": {
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
"plant_id_eia",
@@ -138,7 +138,7 @@
"etl_group": "eia923",
},
"denorm_boiler_fuel_eia923": {
- "description": TABLE_DESCRIPTIONS["boiler_fuel_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
"report_date",
@@ -174,7 +174,7 @@
"etl_group": "outputs",
},
"denorm_boiler_fuel_yearly_eia923": {
- "description": TABLE_DESCRIPTIONS["boiler_fuel_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
"report_date",
@@ -210,7 +210,7 @@
"etl_group": "outputs",
},
"denorm_boiler_fuel_monthly_eia923": {
- "description": TABLE_DESCRIPTIONS["boiler_fuel_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
"report_date",
@@ -245,7 +245,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "coalmine_eia923": {
+ "core_eia923__entity_coalmine": {
"description": (
"""Attributes of coal mines reporting deliveries in the Fuel Receipts and Costs table, via
EIA-923 Schedule 2, Part C.
@@ -280,8 +280,8 @@
"sources": ["eia923"],
"etl_group": "eia923",
},
- "fuel_receipts_costs_eia923": {
- "description": TABLE_DESCRIPTIONS["fuel_receipts_costs_eia923"],
+ "core_eia923__monthly_fuel_receipts_costs": {
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
"plant_id_eia",
@@ -313,7 +313,7 @@
"etl_group": "eia923",
},
"denorm_fuel_receipts_costs_eia923": {
- "description": TABLE_DESCRIPTIONS["fuel_receipts_costs_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
"report_date",
@@ -359,7 +359,7 @@
"etl_group": "outputs",
},
"denorm_fuel_receipts_costs_yearly_eia923": {
- "description": TABLE_DESCRIPTIONS["fuel_receipts_costs_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
"report_date",
@@ -389,7 +389,7 @@
"etl_group": "outputs",
},
"denorm_fuel_receipts_costs_monthly_eia923": {
- "description": TABLE_DESCRIPTIONS["fuel_receipts_costs_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
"report_date",
@@ -418,8 +418,8 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "generation_eia923": {
- "description": TABLE_DESCRIPTIONS["generation_eia923"],
+ "core_eia923__monthly_generation": {
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
"plant_id_eia",
@@ -435,7 +435,7 @@
"etl_group": "eia923",
},
"denorm_generation_eia923": {
- "description": TABLE_DESCRIPTIONS["generation_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
"report_date",
@@ -457,7 +457,7 @@
"etl_group": "outputs",
},
"denorm_generation_monthly_eia923": {
- "description": TABLE_DESCRIPTIONS["generation_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
"report_date",
@@ -478,7 +478,7 @@
"etl_group": "outputs",
},
"denorm_generation_yearly_eia923": {
- "description": TABLE_DESCRIPTIONS["generation_eia923"],
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
"report_date",
@@ -498,8 +498,8 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "generation_fuel_eia923": {
- "description": TABLE_DESCRIPTIONS["generation_fuel_eia923"],
+ "core_eia923__monthly_generation_fuel": {
+ "description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation_fuel"],
"schema": {
"fields": [
"report_date",
@@ -625,8 +625,10 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "generation_fuel_nuclear_eia923": {
- "description": TABLE_DESCRIPTIONS["generation_fuel_nuclear_eia923"],
+ "core_eia923__monthly_generation_fuel_nuclear": {
+ "description": TABLE_DESCRIPTIONS[
+ "core_eia923__monthly_generation_fuel_nuclear"
+ ],
"schema": {
"fields": [
"plant_id_eia",
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index ef53d06b51..22d99de01f 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -4,7 +4,7 @@
from pudl.metadata.codes import CODE_METADATA
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "balance_sheet_assets_ferc1": {
+ "core_ferc1__yearly_balance_sheet_assets": {
"description": "Comparative Balance Sheet (Assets and Other Debits). Schedule 110.",
"schema": {
"fields": [
@@ -28,7 +28,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "balance_sheet_liabilities_ferc1": {
+ "core_ferc1__yearly_balance_sheet_liabilities": {
"description": "Comparative balance sheet (liabilities and other credits)",
"schema": {
"fields": [
@@ -52,7 +52,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "cash_flow_ferc1": {
+ "core_ferc1__yearly_cash_flow": {
"description": "The structured portion of the FERC1 cash flow table - Schedule 120.",
"schema": {
"fields": [
@@ -74,7 +74,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "depreciation_amortization_summary_ferc1": {
+ "core_ferc1__yearly_depreciation_amortization_summary": {
"description": (
"Depreciation and Amortization of Electric Plan (Account 403, 404, 405) "
"Section A: Summary of depreciation and amortization changes. "
@@ -101,7 +101,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "electric_energy_sources_ferc1": {
+ "core_ferc1__yearly_electric_energy_sources": {
"description": (
"Electric Energy Account, sources only. Schedule 401a. Amount of "
"electricity the utility obtained from each of several sources, by year."
@@ -125,7 +125,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "electric_energy_dispositions_ferc1": {
+ "core_ferc1__yearly_electric_energy_dispositions": {
"description": (
"Electric Energy Account, dispositions only. Schedule 401a. Electricity "
"utilities delived to end users, internal losses, etc."
@@ -149,7 +149,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "electric_operating_expenses_ferc1": {
+ "core_ferc1__yearly_electric_operating_expenses": {
"description": (
"Operating and maintenance costs associated with producing electricty, "
"reported in Schedule 320 of FERC Form 1."
@@ -170,7 +170,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "electric_plant_depreciation_changes_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_changes": {
"description": (
"Accumulated provision for depreciation of electric utility plant "
"(Account 108). Schedule 219 Section A: balances and changes during year."
@@ -200,7 +200,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "electric_plant_depreciation_functional_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_functional": {
"description": (
"Accumulated provision for depreciation of electric utility plant "
"(Account 108). Schedule 219 Section B: Functional plant classifications."
@@ -230,7 +230,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "electricity_sales_by_rate_schedule_ferc1": {
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule": {
"description": (
"""The pre-2021 data in this table (extracted from FoxProDB vs. XBRL) is
extremely unstructured. Where the post-2020 data (from XBRL) sorts the data
@@ -314,7 +314,7 @@
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
},
- "fuel_ferc1": {
+ "core_ferc1__yearly_fuel": {
"description": "Annual fuel cost and quantity for steam plants with a capacity of 25+ MW, internal combustion and gas-turbine plants of 10+ MW, and all nuclear plants. As reported on page 402 of FERC Form 1 and extracted from the f1_fuel table in FERC's FoxPro Database.",
"schema": {
"fields": [
@@ -335,7 +335,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "income_statement_ferc1": {
+ "core_ferc1__yearly_income_statement": {
"description": "Statement of Income. Schedule 114.",
"schema": {
"fields": [
@@ -360,7 +360,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "other_regulatory_liabilities_ferc1": {
+ "core_ferc1__yearly_other_regulatory_liabilities": {
"description": "Other regulatory liabilities, including rate order docket number.",
"schema": {
"fields": [
@@ -378,7 +378,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "plant_in_service_ferc1": {
+ "core_ferc1__yearly_plant_in_service": {
"description": (
"Balances and changes to FERC Electric Plant in Service accounts, as "
"reported on FERC Form 1, Schedule 204. Data originally from the "
@@ -428,7 +428,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "plants_hydro_ferc1": {
+ "core_ferc1__yearly_plants_hydro": {
"description": (
"Hydroelectric generating plant statistics for large plants. Large plants "
"have an installed nameplate capacity of more than 10 MW. As reported on "
@@ -480,7 +480,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "plants_pumped_storage_ferc1": {
+ "core_ferc1__yearly_plants_pumped_storage": {
"description": (
"Generating plant statistics for hydroelectric pumped storage plants with "
"an installed nameplate capacity of 10+ MW. As reported in Scheudle 408 of "
@@ -536,7 +536,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "plants_small_ferc1": {
+ "core_ferc1__yearly_plants_small": {
"description": (
"Generating plant statistics for steam plants with less than 25 MW "
"installed nameplate capacity and internal combustion plants, gas "
@@ -570,7 +570,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "plants_steam_ferc1": {
+ "core_ferc1__yearly_plants_steam": {
"description": (
"Generating plant statistics for steam plants with a capacity of 25+ MW, "
"internal combustion and gas-turbine plants of 10+ MW, and all nuclear "
@@ -637,7 +637,7 @@
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
},
- "purchased_power_ferc1": {
+ "core_ferc1__yearly_purchased_power": {
"description": (
"Purchased Power (Account 555) including power exchanges (transactions "
"involving a balancing of debits and credits for energy, capacity, etc.) "
@@ -669,7 +669,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "transmission_statistics_ferc1": {
+ "core_ferc1__yearly_transmission_statistics": {
"description": (
"Transmission Line Statistics. Schedule 422 of FERC Form 1. Information "
"describing transmission lines, the cost of lines, annual operating and "
@@ -733,7 +733,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "utility_plant_summary_ferc1": {
+ "core_ferc1__yearly_utility_plant_summary": {
"description": (
"Summary of utility plant and accumulated provisions for depreciation, "
"amortization and depletion of utilty plant assets reported annually at "
@@ -761,7 +761,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "retained_earnings_ferc1": {
+ "core_ferc1__yearly_retained_earnings": {
"description": "Retained Earnings - The structed part of schedule 118.",
"schema": {
"fields": [
@@ -795,7 +795,7 @@
"field_namespace": "ferc1",
"create_database_schema": False,
},
- "electric_operating_revenues_ferc1": {
+ "core_ferc1__yearly_electric_operating_revenues": {
"description": (
"Electric operating revenues - The structed part of schedule 300."
"There are a number of revenue_type's that do not have sales_mwh,"
diff --git a/src/pudl/metadata/resources/glue.py b/src/pudl/metadata/resources/glue.py
index fcfe802a8e..19564a4c63 100644
--- a/src/pudl/metadata/resources/glue.py
+++ b/src/pudl/metadata/resources/glue.py
@@ -55,8 +55,8 @@
make aggregation to the parent entity difficult or inappropriate.
This table inherits from the EPA's crosswalk, the ID's from EPA CAMD
-hourly_emissions_epacems table itself, the boiler_generator_assn_eia860 table and the
-generators_eia860 table. While the epacamd_eia table is the core backbone of the table,
+hourly_emissions_epacems table itself, the core_eia860__assn_boiler_generator table and the
+core_eia860__scd_generators table. While the epacamd_eia table is the core backbone of the table,
EPA CAMD id's ensure there is complete coverage of EPA CAMD reporting units. The EIA 860
table addition ensures there is also complete coverage of those units as well.
diff --git a/src/pudl/metadata/resources/mcoe.py b/src/pudl/metadata/resources/mcoe.py
index bf1b63fd56..864dd61b3e 100644
--- a/src/pudl/metadata/resources/mcoe.py
+++ b/src/pudl/metadata/resources/mcoe.py
@@ -148,10 +148,10 @@
"per MWh. These calculations are based on the allocation of net generation reported on "
"the basis of plant, prime mover and energy source to individual generators. Heat rates "
"by generator-month are estimated by using allocated estimates for per-generator net "
- "generation and fuel consumption as well as the :ref:`boiler_fuel_eia923` table, which "
+ "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
"reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
"consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
- "fuel prices are taken from the :ref:`fuel_receipts_costs_eia923` table, which only has "
+ "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
"~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
"cost estimates."
),
diff --git a/src/pudl/output/eia.py b/src/pudl/output/eia.py
index c42dfb1709..3afa1379d8 100644
--- a/src/pudl/output/eia.py
+++ b/src/pudl/output/eia.py
@@ -13,15 +13,15 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_utilities_eia(
- utilities_entity_eia: pd.DataFrame,
- utilities_eia860: pd.DataFrame,
+ core_eia__entity_utilities: pd.DataFrame,
+ core_eia860__scd_utilities: pd.DataFrame,
utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Utilities table.
Args:
- utilities_entity_eia: EIA utility entity table.
- utilities_eia860: EIA 860 annual utility table.
+ core_eia__entity_utilities: EIA utility entity table.
+ core_eia860__scd_utilities: EIA 860 annual utility table.
utilities_eia: Associations between EIA utilities and pudl utility IDs.
Returns:
@@ -29,7 +29,10 @@ def denorm_utilities_eia(
"""
utilities_eia = utilities_eia[["utility_id_eia", "utility_id_pudl"]]
out_df = pd.merge(
- utilities_entity_eia, utilities_eia860, how="left", on=["utility_id_eia"]
+ core_eia__entity_utilities,
+ core_eia860__scd_utilities,
+ how="left",
+ on=["utility_id_eia"],
)
out_df = pd.merge(out_df, utilities_eia, how="left", on=["utility_id_eia"])
out_df = out_df.assign(report_date=lambda x: pd.to_datetime(x.report_date)).dropna(
@@ -47,30 +50,35 @@ def denorm_utilities_eia(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plants_eia(
- plants_entity_eia: pd.DataFrame,
- plants_eia860: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
+ core_eia860__scd_plants: pd.DataFrame,
plants_eia: pd.DataFrame,
utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Plants tables.
Args:
- plants_entity_eia: EIA plant entity table.
- plants_eia860: EIA 860 annual plant attribute table.
+ core_eia__entity_plants: EIA plant entity table.
+ core_eia860__scd_plants: EIA 860 annual plant attribute table.
plants_eia: Associations between EIA plants and pudl utility IDs.
utilities_eia: EIA utility ID table.
Returns:
A DataFrame containing plant attributes from EIA Forms 860 and 923
"""
- plants_eia860 = plants_eia860.assign(
+ core_eia860__scd_plants = core_eia860__scd_plants.assign(
report_date=lambda x: pd.to_datetime(x.report_date)
)
plants_eia = plants_eia[["plant_id_eia", "plant_id_pudl"]]
out_df = (
- pd.merge(plants_entity_eia, plants_eia860, how="left", on=["plant_id_eia"])
+ pd.merge(
+ core_eia__entity_plants,
+ core_eia860__scd_plants,
+ how="left",
+ on=["plant_id_eia"],
+ )
.merge(plants_eia, how="left", on=["plant_id_eia"])
.merge(utilities_eia, how="left", on=["utility_id_eia"])
.dropna(subset=["report_date", "plant_id_eia"])
@@ -102,21 +110,21 @@ def denorm_plants_eia(
)
def denorm_generators_eia(
context,
- generators_eia860: pd.DataFrame,
- generators_entity_eia: pd.DataFrame,
- plants_entity_eia: pd.DataFrame,
+ core_eia860__scd_generators: pd.DataFrame,
+ core_eia__entity_generators: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Utilities table.
Args:
context: A Dagster context object.
- generators_eia860: EIA 860 annual generator table.
- generators_entity_eia: EIA generators entity table.
- plants_entity_eia: EIA plant entity table.
+ core_eia860__scd_generators: EIA 860 annual generator table.
+ core_eia__entity_generators: EIA generators entity table.
+ core_eia__entity_plants: EIA plant entity table.
denorm_plants_utilities_eia: Denormalized plant_utility EIA ID table.
- boiler_generator_assn_eia860: Associations between EIA boiler and generator IDs.
+ core_eia860__assn_boiler_generator: Associations between EIA boiler and generator IDs.
Returns:
A DataFrame containing all the fields of the EIA 860 Utilities table.
@@ -124,11 +132,14 @@ def denorm_generators_eia(
# Almost all the info we need will come from here.
out_df = pd.merge(
- generators_eia860, plants_entity_eia, how="left", on=["plant_id_eia"]
+ core_eia860__scd_generators,
+ core_eia__entity_plants,
+ how="left",
+ on=["plant_id_eia"],
)
out_df = pd.merge(
out_df,
- generators_entity_eia,
+ core_eia__entity_generators,
how="left",
on=["plant_id_eia", "generator_id"],
)
@@ -145,7 +156,7 @@ def denorm_generators_eia(
# Pull the BGA table and make it unit-generator only:
out_df = pd.merge(
out_df,
- boiler_generator_assn_eia860[
+ core_eia860__assn_boiler_generator[
[
"report_date",
"plant_id_eia",
@@ -206,11 +217,11 @@ def denorm_generators_eia(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_boilers_eia(
- boilers_eia860: pd.DataFrame,
- boilers_entity_eia: pd.DataFrame,
- plants_entity_eia: pd.DataFrame,
+ core_eia860__scd_boilers: pd.DataFrame,
+ core_eia__entity_boilers: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields reported in the EIA boilers tables.
@@ -220,21 +231,24 @@ def denorm_boilers_eia(
sources.
Arguments:
- boilers_eia860: EIA 860 annual boiler table.
- boilers_entity_eia: EIA boiler entity table.
- plants_entity_eia: EIA plant entity table.
+ core_eia860__scd_boilers: EIA 860 annual boiler table.
+ core_eia__entity_boilers: EIA boiler entity table.
+ core_eia__entity_plants: EIA plant entity table.
denorm_plants_utilities_eia: Denormalized plant_utility EIA ID table.
- boiler_generator_assn_eia860: Associations between EIA boiler and generator IDs.
+ core_eia860__assn_boiler_generator: Associations between EIA boiler and generator IDs.
Returns:
A DataFrame containing boiler attributes from EIA 860.
"""
out_df = pd.merge(
- boilers_eia860, plants_entity_eia, how="left", on=["plant_id_eia"]
+ core_eia860__scd_boilers,
+ core_eia__entity_plants,
+ how="left",
+ on=["plant_id_eia"],
)
out_df = pd.merge(
- out_df, boilers_entity_eia, how="left", on=["plant_id_eia", "boiler_id"]
+ out_df, core_eia__entity_boilers, how="left", on=["plant_id_eia", "boiler_id"]
)
out_df.report_date = pd.to_datetime(out_df.report_date)
@@ -251,7 +265,7 @@ def denorm_boilers_eia(
# Pull the BGA table and make it unit-boiler only:
out_df = pd.merge(
out_df,
- boiler_generator_assn_eia860[
+ core_eia860__assn_boiler_generator[
[
"report_date",
"plant_id_eia",
@@ -531,7 +545,7 @@ def fill_generator_technology_description(gens_df: pd.DataFrame) -> pd.DataFrame
``technology_description`` associated with them.
Args:
- gens_df: A generators_eia860 dataframe containing at least the columns
+ gens_df: A core_eia860__scd_generators dataframe containing at least the columns
``report_date``, ``plant_id_eia``, ``generator_id``,
``energy_source_code_1``, and ``technology_description``.
@@ -644,10 +658,10 @@ def assign_unit_ids(gens_df: pd.DataFrame) -> pd.DataFrame:
# units, we give each generator their own unit ID. We do the same for
# internal combustion and simple-cycle gas combustion turbines.
.pipe(assign_single_gen_unit_ids, prime_mover_codes=["CC", "CS", "GT", "IC"])
- # Nuclear units don't report in boiler_fuel_eia923 or generation_eia923
- # Their fuel consumption is reported as mmbtu in generation_fuel_eia923
- # Their net generation also only shows up in generation_fuel_eia923
- # The generation_fuel_eia923 table records a "nuclear_unit_id" which
+ # Nuclear units don't report in core_eia923__monthly_boiler_fuel or core_eia923__monthly_generation
+ # Their fuel consumption is reported as mmbtu in core_eia923__monthly_generation_fuel
+ # Their net generation also only shows up in core_eia923__monthly_generation_fuel
+ # The core_eia923__monthly_generation_fuel table records a "nuclear_unit_id" which
# appears to be the same as the associated generator_id. However, we
# can't use that as a unit_id_pudl since it might have a collision with
# other already assigned unit_id_pudl values in the same plant for
@@ -663,7 +677,7 @@ def assign_unit_ids(gens_df: pd.DataFrame) -> pd.DataFrame:
# In these next 4 assignments, we lump together all steam turbine (ST)
# generators that have a consistent simplified fuel_type_code_pudl
# across all years within a given plant into the same unit, since we
- # won't be able to distinguish them in the generation_fuel_eia923
+ # won't be able to distinguish them in the core_eia923__monthly_generation_fuel
# table. This will lump together solid fuels like BIT, LIG, SUB, PC etc.
# under "coal". There are a few cases in which a generator has truly
# changed its fuel type, e.g. coal-to-gas conversions but these are
@@ -773,7 +787,7 @@ def fill_unit_ids(gens_df: pd.DataFrame) -> pd.DataFrame:
too, which seems like too much deep muddling.
Args:
- gens_df: An generators_eia860 dataframe, which must
+ gens_df: An core_eia860__scd_generators dataframe, which must
contain columns: report_date, plant_id_eia, generator_id,
unit_id_pudl, bga_source.
@@ -812,7 +826,7 @@ def max_unit_id_by_plant(gens_df: pd.DataFrame) -> pd.DataFrame:
generators and units still available in the dataframe!
Args:
- gens_df: A generators_eia860 dataframe containing at
+ gens_df: A core_eia860__scd_generators dataframe containing at
least the columns plant_id_eia and unit_id_pudl.
Returns:
diff --git a/src/pudl/output/eia860.py b/src/pudl/output/eia860.py
index a21d99182b..cab6b90c2f 100644
--- a/src/pudl/output/eia860.py
+++ b/src/pudl/output/eia860.py
@@ -9,16 +9,14 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_ownership_eia860(
denorm_plants_utilities_eia: pd.DataFrame,
- ownership_eia860: pd.DataFrame,
+ core_eia860__scd_ownership: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized version of the EIA 860 ownership table.
- TODO: Convert to SQL view?
-
Args:
denorm_plants_utilities_eia: Denormalized table containing plant and utility
names and IDs.
- ownership_eia860: EIA 860 ownership table.
+ core_eia860__scd_ownership: EIA 860 ownership table.
Returns:
A denormalized version of the EIA 860 ownership table.
@@ -35,7 +33,10 @@ def denorm_ownership_eia860(
],
]
own_df = pd.merge(
- ownership_eia860, pu_df, on=["report_date", "plant_id_eia"], how="left"
+ core_eia860__scd_ownership,
+ pu_df,
+ on=["report_date", "plant_id_eia"],
+ how="left",
).dropna(
subset=["report_date", "plant_id_eia", "generator_id", "owner_utility_id_eia"]
)
@@ -58,13 +59,13 @@ def denorm_ownership_eia860(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_emissions_control_equipment_eia860(
- emissions_control_equipment_eia860: pd.DataFrame,
+ core_eia860__scd_emissions_control_equipment: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized version of the EIA 860 emission control equipment table.
Args:
- emissions_control_equipment_eia860: EIA 860 emissions control equipment table.
+ core_eia860__scd_emissions_control_equipment: EIA 860 emissions control equipment table.
denorm_plants_utilities_eia: Denormalized table containing plant and utility
names and IDs.
@@ -87,7 +88,7 @@ def denorm_emissions_control_equipment_eia860(
columns=["report_date"]
)
emce_df = pd.merge(
- emissions_control_equipment_eia860,
+ core_eia860__scd_emissions_control_equipment,
pu_df,
on=["report_year", "plant_id_eia"],
how="left",
diff --git a/src/pudl/output/eia923.py b/src/pudl/output/eia923.py
index daecbef9a1..8cd19e19c2 100644
--- a/src/pudl/output/eia923.py
+++ b/src/pudl/output/eia923.py
@@ -131,28 +131,28 @@ def _fill_fuel_costs_by_state(
#####################################################################################
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_generation_eia923(
- generation_eia923: pd.DataFrame,
+ core_eia923__monthly_generation: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
- """Denormalize the :ref:`generation_eia923` table."""
+ """Denormalize the :ref:`core_eia923__monthly_generation` table."""
return denorm_by_gen(
- generation_eia923,
+ core_eia923__monthly_generation,
pu=denorm_plants_utilities_eia,
- bga=boiler_generator_assn_eia860,
+ bga=core_eia860__assn_boiler_generator,
)
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_generation_fuel_combined_eia923(
- generation_fuel_eia923: pd.DataFrame,
- generation_fuel_nuclear_eia923: pd.DataFrame,
+ core_eia923__monthly_generation_fuel: pd.DataFrame,
+ core_eia923__monthly_generation_fuel_nuclear: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
"""Denormalize the `generation_fuel_combined_eia923` table.
- This asset first combines the :ref:`generation_fuel_eia923` and
- :ref:`generation_fuel_nuclear_eia923` into a single table with a uniform primary
+ This asset first combines the :ref:`core_eia923__monthly_generation_fuel` and
+ :ref:`core_eia923__monthly_generation_fuel_nuclear` into a single table with a uniform primary
key (consolidating multiple nuclear unit IDs into a single plant record) and then
denormalizes it by merging in some addition plant and utility level columns.
@@ -179,11 +179,11 @@ def denorm_generation_fuel_combined_eia923(
# Rather than enumerating all of the non-data columns, identify them by process of
# elimination, in case they change in the future.
non_data_cols = list(
- set(generation_fuel_nuclear_eia923.columns)
+ set(core_eia923__monthly_generation_fuel_nuclear.columns)
- set(primary_key + sum_cols + other_cols)
)
- gfn_gb = generation_fuel_nuclear_eia923.groupby(primary_key)
+ gfn_gb = core_eia923__monthly_generation_fuel_nuclear.groupby(primary_key)
# Ensure that all non-data columns are homogeneous within groups
if not (gfn_gb[non_data_cols].nunique() == 1).all(axis=None):
raise ValueError(
@@ -208,7 +208,7 @@ def denorm_generation_fuel_combined_eia923(
)
).reset_index()
gf = (
- pd.concat([gfn_agg, generation_fuel_eia923])
+ pd.concat([gfn_agg, core_eia923__monthly_generation_fuel])
.sort_values(primary_key)
.reset_index(drop=True)
)
@@ -217,23 +217,23 @@ def denorm_generation_fuel_combined_eia923(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_boiler_fuel_eia923(
- boiler_fuel_eia923: pd.DataFrame,
+ core_eia923__monthly_boiler_fuel: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
- """Denormalize the :ref:`boiler_fuel_eia923` table.
+ """Denormalize the :ref:`core_eia923__monthly_boiler_fuel` table.
The total heat content is also calculated as it's useful in its own right and
required later to calculate average heat content per unit of fuel.
"""
- boiler_fuel_eia923["fuel_consumed_mmbtu"] = (
- boiler_fuel_eia923["fuel_consumed_units"]
- * boiler_fuel_eia923["fuel_mmbtu_per_unit"]
+ core_eia923__monthly_boiler_fuel["fuel_consumed_mmbtu"] = (
+ core_eia923__monthly_boiler_fuel["fuel_consumed_units"]
+ * core_eia923__monthly_boiler_fuel["fuel_mmbtu_per_unit"]
)
return denorm_by_boil(
- boiler_fuel_eia923,
+ core_eia923__monthly_boiler_fuel,
pu=denorm_plants_utilities_eia,
- bga=boiler_generator_assn_eia860,
+ bga=core_eia860__assn_boiler_generator,
)
@@ -257,19 +257,21 @@ def denorm_boiler_fuel_eia923(
)
def denorm_fuel_receipts_costs_eia923(
context,
- fuel_receipts_costs_eia923: pd.DataFrame,
- coalmine_eia923: pd.DataFrame,
+ core_eia923__monthly_fuel_receipts_costs: pd.DataFrame,
+ core_eia923__entity_coalmine: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
state_average_fuel_costs_eia: pd.DataFrame,
- plants_entity_eia: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
) -> pd.DataFrame:
- """Denormalize the :ref:`fuel_receipts_costs_eia923` table."""
- coalmine_eia923 = coalmine_eia923.drop(columns=["data_maturity"])
- plant_states = plants_entity_eia[["plant_id_eia", "state"]]
+ """Denormalize the :ref:`core_eia923__monthly_fuel_receipts_costs` table."""
+ core_eia923__entity_coalmine = core_eia923__entity_coalmine.drop(
+ columns=["data_maturity"]
+ )
+ plant_states = core_eia__entity_plants[["plant_id_eia", "state"]]
frc_df = (
pd.merge(
- fuel_receipts_costs_eia923,
- coalmine_eia923.rename(
+ core_eia923__monthly_fuel_receipts_costs,
+ core_eia923__entity_coalmine.rename(
columns={
"state": "mine_state",
"county_id_fips": "coalmine_county_id_fips",
@@ -331,9 +333,9 @@ def time_aggregated_eia923_asset_factory(
def generation_agg_eia923(
denorm_generation_eia923: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
- """Aggregate :ref:`generation_eia923` monthly or annually."""
+ """Aggregate :ref:`denorm_generation_eia923` monthly or annually."""
return (
# Create a date index for grouping based on freq
denorm_generation_eia923.set_index(
@@ -348,7 +350,7 @@ def generation_agg_eia923(
.pipe(
denorm_by_gen,
pu=denorm_plants_utilities_eia,
- bga=boiler_generator_assn_eia860,
+ bga=core_eia860__assn_boiler_generator,
)
)
@@ -427,9 +429,9 @@ def generation_fuel_combined_agg_eia923(
def boiler_fuel_agg_eia923(
denorm_boiler_fuel_eia923: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
- boiler_generator_assn_eia860: pd.DataFrame,
+ core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
- """Aggregate :ref:`boiler_fuel_eia923` monthly or annually."""
+ """Aggregate :ref:`core_eia923__monthly_boiler_fuel` monthly or annually."""
# In order to calculate the weighted average sulfur
# content and ash content we need to calculate these totals.
return (
@@ -472,7 +474,7 @@ def boiler_fuel_agg_eia923(
.pipe(
denorm_by_boil,
pu=denorm_plants_utilities_eia,
- bga=boiler_generator_assn_eia860,
+ bga=core_eia860__assn_boiler_generator,
)
)
@@ -485,7 +487,7 @@ def fuel_receipts_costs_agg_eia923(
denorm_fuel_receipts_costs_eia923: pd.DataFrame,
denorm_plants_utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
- """Aggregate the :ref:`fuel_receipts_costs_eia923` table monthly or annually."""
+ """Aggregate the :ref:`core_eia923__monthly_fuel_receipts_costs` table monthly or annually."""
return (
denorm_fuel_receipts_costs_eia923.set_index(
pd.DatetimeIndex(denorm_fuel_receipts_costs_eia923.report_date)
diff --git a/src/pudl/output/eia_bulk_elec.py b/src/pudl/output/eia_bulk_elec.py
index e8b39c7c89..789503a3c7 100644
--- a/src/pudl/output/eia_bulk_elec.py
+++ b/src/pudl/output/eia_bulk_elec.py
@@ -14,7 +14,7 @@ def state_average_fuel_costs_eia(
"""Get state-level average fuel costs from EIA's bulk electricity data.
This data is used to fill in missing fuel prices in the
- :ref:`fuel_receipts_costs_eia923` table. It was created as a drop-in replacement
+ :ref:`core_eia923__monthly_fuel_receipts_costs` table. It was created as a drop-in replacement
for data we were previously obtaining from EIA's unreliable API.
"""
aggregates = fuel_receipts_costs_aggs_eia.loc[
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 965e70cd16..57b4eb50d0 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -19,7 +19,8 @@ def denorm_plants_utilities_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plants_steam_ferc1(
- denorm_plants_utilities_ferc1: pd.DataFrame, plants_steam_ferc1: pd.DataFrame
+ denorm_plants_utilities_ferc1: pd.DataFrame,
+ core_ferc1__yearly_plants_steam: pd.DataFrame,
) -> pd.DataFrame:
"""Select and joins some useful fields from the FERC Form 1 steam table.
@@ -32,13 +33,13 @@ def denorm_plants_steam_ferc1(
Args:
denorm_plants_utilities_ferc1: Denormalized dataframe of FERC Form 1 plants and
utilities data.
- plants_steam_ferc1: The normalized FERC Form 1 steam table.
+ core_ferc1__yearly_plants_steam: The normalized FERC Form 1 steam table.
Returns:
A DataFrame containing useful fields from the FERC Form 1 steam table.
"""
steam_df = (
- plants_steam_ferc1.merge(
+ core_ferc1__yearly_plants_steam.merge(
denorm_plants_utilities_ferc1,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -73,11 +74,12 @@ def denorm_plants_steam_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plants_small_ferc1(
- plants_small_ferc1: pd.DataFrame, denorm_plants_utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_plants_small: pd.DataFrame,
+ denorm_plants_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 small plants."""
plants_small_df = (
- plants_small_ferc1.merge(
+ core_ferc1__yearly_plants_small.merge(
denorm_plants_utilities_ferc1,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -109,11 +111,12 @@ def denorm_plants_small_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plants_hydro_ferc1(
- plants_hydro_ferc1: pd.DataFrame, denorm_plants_utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_plants_hydro: pd.DataFrame,
+ denorm_plants_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 hydro plants."""
plants_hydro_df = (
- plants_hydro_ferc1.merge(
+ core_ferc1__yearly_plants_hydro.merge(
denorm_plants_utilities_ferc1,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -139,12 +142,12 @@ def denorm_plants_hydro_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plants_pumped_storage_ferc1(
- plants_pumped_storage_ferc1: pd.DataFrame,
+ core_ferc1__yearly_plants_pumped_storage: pd.DataFrame,
denorm_plants_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Pumped Storage plant data."""
pumped_storage_df = (
- plants_pumped_storage_ferc1.merge(
+ core_ferc1__yearly_plants_pumped_storage.merge(
denorm_plants_utilities_ferc1,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -170,7 +173,7 @@ def denorm_plants_pumped_storage_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_fuel_ferc1(
- fuel_ferc1: pd.DataFrame, denorm_plants_utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_fuel: pd.DataFrame, denorm_plants_utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe related to FERC Form 1 fuel information.
@@ -190,7 +193,7 @@ def denorm_fuel_ferc1(
information.
"""
fuel_df = (
- fuel_ferc1.assign(
+ core_ferc1__yearly_fuel.assign(
fuel_consumed_mmbtu=lambda x: x["fuel_consumed_units"]
* x["fuel_mmbtu_per_unit"],
fuel_consumed_total_cost=lambda x: x["fuel_consumed_units"]
@@ -217,10 +220,10 @@ def denorm_fuel_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_purchased_power_ferc1(
- purchased_power_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_purchased_power: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- purchased_power_df = purchased_power_ferc1.merge(
+ purchased_power_df = core_ferc1__yearly_purchased_power.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -238,10 +241,12 @@ def denorm_purchased_power_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plant_in_service_ferc1(
- plant_in_service_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_plant_in_service: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Electric Plant in Service data."""
- pis_df = plant_in_service_ferc1.merge(utilities_ferc1, on="utility_id_ferc1").pipe(
+ pis_df = core_ferc1__yearly_plant_in_service.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
pudl.helpers.organize_cols,
[
"report_year",
@@ -256,11 +261,11 @@ def denorm_plant_in_service_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_balance_sheet_assets_ferc1(
- balance_sheet_assets_ferc1: pd.DataFrame,
+ core_ferc1__yearly_balance_sheet_assets: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance sheet assets data."""
- denorm_balance_sheet_assets_ferc1 = balance_sheet_assets_ferc1.merge(
+ denorm_balance_sheet_assets_ferc1 = core_ferc1__yearly_balance_sheet_assets.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -278,31 +283,34 @@ def denorm_balance_sheet_assets_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_balance_sheet_liabilities_ferc1(
- balance_sheet_liabilities_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_balance_sheet_liabilities: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance_sheet liabilities data."""
- denorm_balance_sheet_liabilities_ferc1 = balance_sheet_liabilities_ferc1.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "liability_type",
- ],
+ denorm_balance_sheet_liabilities_ferc1 = (
+ core_ferc1__yearly_balance_sheet_liabilities.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "liability_type",
+ ],
+ )
)
return denorm_balance_sheet_liabilities_ferc1
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_cash_flow_ferc1(
- cash_flow_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_cash_flow: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 cash flow data."""
- denorm_cash_flow_ferc1 = cash_flow_ferc1.merge(
+ denorm_cash_flow_ferc1 = core_ferc1__yearly_cash_flow.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -320,11 +328,12 @@ def denorm_cash_flow_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_depreciation_amortization_summary_ferc1(
- depreciation_amortization_summary_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_depreciation_amortization_summary: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 depreciation amortization data."""
denorm_depreciation_amortization_summary_ferc1 = (
- depreciation_amortization_summary_ferc1.merge(
+ core_ferc1__yearly_depreciation_amortization_summary.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -344,11 +353,12 @@ def denorm_depreciation_amortization_summary_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_energy_dispositions_ferc1(
- electric_energy_dispositions_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_electric_energy_dispositions: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 energy dispositions data."""
denorm_electric_energy_dispositions_ferc1 = (
- electric_energy_dispositions_ferc1.merge(
+ core_ferc1__yearly_electric_energy_dispositions.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -367,75 +377,84 @@ def denorm_electric_energy_dispositions_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_energy_sources_ferc1(
- electric_energy_sources_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_electric_energy_sources: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_energy_sources_ferc1 = electric_energy_sources_ferc1.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "energy_source_type",
- ],
+ denorm_electric_energy_sources_ferc1 = (
+ core_ferc1__yearly_electric_energy_sources.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "energy_source_type",
+ ],
+ )
)
return denorm_electric_energy_sources_ferc1
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_operating_expenses_ferc1(
- electric_operating_expenses_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_electric_operating_expenses: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_operating_expenses_ferc1 = electric_operating_expenses_ferc1.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "expense_type",
- ],
+ denorm_electric_operating_expenses_ferc1 = (
+ core_ferc1__yearly_electric_operating_expenses.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "expense_type",
+ ],
+ )
)
return denorm_electric_operating_expenses_ferc1
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_operating_revenues_ferc1(
- electric_operating_revenues_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_electric_operating_revenues: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_operating_revenues_ferc1 = electric_operating_revenues_ferc1.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "revenue_type",
- ],
+ denorm_electric_operating_revenues_ferc1 = (
+ core_ferc1__yearly_electric_operating_revenues.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "revenue_type",
+ ],
+ )
)
return denorm_electric_operating_revenues_ferc1
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_plant_depreciation_changes_ferc1(
- electric_plant_depreciation_changes_ferc1: pd.DataFrame,
+ core_ferc1__yearly_electric_plant_depreciation_changes: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_plant_depreciation_changes_ferc1 = (
- electric_plant_depreciation_changes_ferc1.merge(
+ core_ferc1__yearly_electric_plant_depreciation_changes.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -456,12 +475,12 @@ def denorm_electric_plant_depreciation_changes_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_plant_depreciation_functional_ferc1(
- electric_plant_depreciation_functional_ferc1: pd.DataFrame,
+ core_ferc1__yearly_electric_plant_depreciation_functional: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_plant_depreciation_functional_ferc1 = (
- electric_plant_depreciation_functional_ferc1.merge(
+ core_ferc1__yearly_electric_plant_depreciation_functional.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -482,12 +501,12 @@ def denorm_electric_plant_depreciation_functional_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electricity_sales_by_rate_schedule_ferc1(
- electricity_sales_by_rate_schedule_ferc1: pd.DataFrame,
+ core_ferc1__yearly_electricity_sales_by_rate_schedule: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electricity_sales_by_rate_schedule_ferc1 = (
- electricity_sales_by_rate_schedule_ferc1.merge(
+ core_ferc1__yearly_electricity_sales_by_rate_schedule.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -505,10 +524,10 @@ def denorm_electricity_sales_by_rate_schedule_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_income_statement_ferc1(
- income_statement_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_income_statement: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_income_statement_ferc1 = income_statement_ferc1.merge(
+ denorm_income_statement_ferc1 = core_ferc1__yearly_income_statement.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -527,11 +546,12 @@ def denorm_income_statement_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_other_regulatory_liabilities_ferc1(
- other_regulatory_liabilities_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_other_regulatory_liabilities: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_other_regulatory_liabilities_ferc1 = (
- other_regulatory_liabilities_ferc1.merge(
+ core_ferc1__yearly_other_regulatory_liabilities.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -548,10 +568,10 @@ def denorm_other_regulatory_liabilities_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_retained_earnings_ferc1(
- retained_earnings_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_retained_earnings: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_retained_earnings_ferc1 = retained_earnings_ferc1.merge(
+ denorm_retained_earnings_ferc1 = core_ferc1__yearly_retained_earnings.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -569,29 +589,33 @@ def denorm_retained_earnings_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_transmission_statistics_ferc1(
- transmission_statistics_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_transmission_statistics: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_transmission_statistics_ferc1 = transmission_statistics_ferc1.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- ],
+ denorm_transmission_statistics_ferc1 = (
+ core_ferc1__yearly_transmission_statistics.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ ],
+ )
)
return denorm_transmission_statistics_ferc1
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_utility_plant_summary_ferc1(
- utility_plant_summary_ferc1: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_utility_plant_summary: pd.DataFrame,
+ utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_utility_plant_summary_ferc1 = utility_plant_summary_ferc1.merge(
+ denorm_utility_plant_summary_ferc1 = core_ferc1__yearly_utility_plant_summary.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -671,7 +695,7 @@ def denorm_plants_all_ferc1(
)
def denorm_fuel_by_plant_ferc1(
context,
- fuel_ferc1: pd.DataFrame,
+ core_ferc1__yearly_fuel: pd.DataFrame,
denorm_plants_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Summarize FERC fuel data by plant for output.
@@ -684,7 +708,7 @@ def denorm_fuel_by_plant_ferc1(
Args:
context: Dagster context object
- fuel_ferc1: Normalized FERC fuel table.
+ core_ferc1__yearly_fuel: Normalized FERC fuel table.
denorm_plants_utilities_ferc1: Denormalized table of FERC1 plant & utility IDs.
Returns:
@@ -703,7 +727,9 @@ def drop_other_fuel_types(df):
# The existing function expects `fuel_type_code_pudl` to be an object, rather than
# a category. This is a legacy of pre-dagster code, and we convert here to prevent
# further retooling in the code-base.
- fuel_ferc1["fuel_type_code_pudl"] = fuel_ferc1["fuel_type_code_pudl"].astype(str)
+ core_ferc1__yearly_fuel["fuel_type_code_pudl"] = core_ferc1__yearly_fuel[
+ "fuel_type_code_pudl"
+ ].astype(str)
fuel_categories = list(
pudl.transform.ferc1.FuelFerc1TableTransformer()
@@ -712,7 +738,7 @@ def drop_other_fuel_types(df):
)
fbp_df = (
- fuel_ferc1.pipe(drop_other_fuel_types)
+ core_ferc1__yearly_fuel.pipe(drop_other_fuel_types)
.pipe(
pudl.analysis.classify_plants_ferc1.fuel_by_plant_ferc1,
fuel_categories=fuel_categories,
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 806d018ec2..12e6428b54 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -77,9 +77,9 @@ def __init__(
data with state-fuel averages from EIA's bulk electricity data.
roll_fuel_cost: if True, apply a rolling average to a subset of
output table's columns (currently only ``fuel_cost_per_mmbtu``
- for the ``fuel_receipts_costs_eia923`` table.)
+ for the ``core_eia923__monthly_fuel_receipts_costs`` table.)
fill_net_gen: if True, use the net generation from the
- generation_fuel_eia923 - which is reported at the
+ core_eia923__monthly_generation_fuel - which is reported at the
plant/fuel/prime mover level and re-allocated to generators in
``mcoe()``, ``capacity_factor()`` and ``heat_rate_by_unit()``.
fill_tech_desc: If True, fill the technology_description
@@ -167,12 +167,12 @@ def _register_output_methods(self: Self):
"denorm_plants_utilities_eia": "pu_eia860",
# eia860 (denormalized, data primarily from EIA-860)
"denorm_ownership_eia860": "own_eia860",
- "boiler_generator_assn_eia860": "bga_eia860",
+ "core_eia860__assn_boiler_generator": "bga_eia860",
"denorm_emissions_control_equipment_eia860": "denorm_emissions_control_equipment_eia860",
- "boiler_emissions_control_equipment_assn_eia860": "boiler_emissions_control_equipment_assn_eia860",
- "emissions_control_equipment_eia860": "emissions_control_equipment_eia860",
- "boiler_stack_flue_assn_eia860": "boiler_stack_flue_assn_eia860",
- "boiler_cooling_assn_eia860": "boiler_cooling_assn_eia860",
+ "core_eia860__annual_boiler_emissions_control_equipment_assn": "boiler_emissions_control_equipment_assn_eia860",
+ "core_eia860__scd_emissions_control_equipment": "emissions_control_equipment_eia860",
+ "core_eia860__assn_boiler_stack_flue": "boiler_stack_flue_assn_eia860",
+ "core_eia860__assn_boiler_cooling": "boiler_cooling_assn_eia860",
# eia861 (clean)
"service_territory_eia861": "service_territory_eia861",
"sales_eia861": "sales_eia861",
@@ -370,14 +370,14 @@ def gen_eia923(self: Self, update: bool = False) -> pd.DataFrame:
"""Pull EIA 923 net generation data by generator.
Net generation is reported in two seperate tables in EIA 923: in the
- generation_eia923 and generation_fuel_eia923 tables. While the
- generation_fuel_eia923 table is more complete (the generation_eia923
- table includes only ~55% of the reported MWhs), the generation_eia923
+ core_eia923__monthly_generation and core_eia923__monthly_generation_fuel tables. While the
+ core_eia923__monthly_generation_fuel table is more complete (the core_eia923__monthly_generation
+ table includes only ~55% of the reported MWhs), the core_eia923__monthly_generation
table is more granular (it is reported at the generator level).
- This method either grabs the generation_eia923 table that is reported
+ This method either grabs the core_eia923__monthly_generation table that is reported
by generator, or allocates net generation from the
- generation_fuel_eia923 table to the generator level.
+ core_eia923__monthly_generation_fuel table to the generator level.
Args:
update: Ignored. Retained for backwards compatibility only.
diff --git a/src/pudl/transform/eia.py b/src/pudl/transform/eia.py
index a551db3339..2cf4677272 100644
--- a/src/pudl/transform/eia.py
+++ b/src/pudl/transform/eia.py
@@ -340,7 +340,7 @@ def _compile_all_entity_records(
# encode the compiled options!
compiled_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource(f"{entity.value}_eia860")
+ .get_resource(f"core_eia860__scd_{entity.value}")
.encode(compiled_df)
)
return compiled_df
@@ -566,9 +566,9 @@ def harvest_entity_tables( # noqa: C901
# Apply standard PUDL data types to the new entity tables:
pkg = Package.from_resource_ids()
- entity_res = pkg.get_resource(f"{entity.value}_entity_eia")
+ entity_res = pkg.get_resource(f"core_eia__entity_{entity.value}")
entity_df = apply_pudl_dtypes(entity_df, group="eia").pipe(entity_res.encode)
- annual_res = pkg.get_resource(f"{entity.value}_eia860")
+ annual_res = pkg.get_resource(f"core_eia860__scd_{entity.value}")
annual_df = apply_pudl_dtypes(annual_df, group="eia").pipe(annual_res.encode)
if entity == EiaEntity.PLANTS:
@@ -606,7 +606,9 @@ def harvest_entity_tables( # noqa: C901
required_resource_keys={"dataset_settings"},
io_manager_key="pudl_sqlite_io_manager",
)
-def boiler_generator_assn_eia860(context, **clean_dfs) -> pd.DataFrame: # noqa: C901
+def core_eia860__assn_boiler_generator(
+ context, **clean_dfs
+) -> pd.DataFrame: # noqa: C901
"""Creates a set of more complete boiler generator associations.
Creates a unique unit_id_pudl for each collection of boilers and generators
@@ -657,7 +659,7 @@ def boiler_generator_assn_eia860(context, **clean_dfs) -> pd.DataFrame: # noqa:
logger.info("Inferring complete EIA boiler-generator associations.")
logger.debug(f"{clean_dfs.keys()=}")
- # grab the generation_eia923 table, group annually, generate a new tag
+ # grab the core_eia923__monthly_generation table, group annually, generate a new tag
gen_eia923 = clean_dfs["_core_eia923__generation"]
gen_eia923 = (
gen_eia923.set_index(pd.DatetimeIndex(gen_eia923.report_date))
@@ -1152,15 +1154,15 @@ def harvested_entity_asset_factory(
"_core_eia860__utilities",
"_core_eia860__emissions_control_equipment",
"_core_eia860__boiler_emissions_control_equipment_assn",
- "_core_eia860__boiler_cooling_assn",
- "_core_eia860__boiler_stack_flue_assn",
+ "_core_eia860__boiler_cooling",
+ "_core_eia860__boiler_stack_flue",
)
@multi_asset(
ins={table_name: AssetIn() for table_name in harvestable_assets},
outs={
- f"{entity.value}_entity_eia": AssetOut(io_manager_key=io_manager_key),
- f"{entity.value}_eia860": AssetOut(io_manager_key=io_manager_key),
+ f"core_eia__entity_{entity.value}": AssetOut(io_manager_key=io_manager_key),
+ f"core_eia860__scd_{entity.value}": AssetOut(io_manager_key=io_manager_key),
},
config_schema={
"debug": Field(
@@ -1186,8 +1188,8 @@ def harvested_entity(context, **clean_dfs):
)
return (
- Output(output_name=f"{entity.value}_entity_eia", value=entity_df),
- Output(output_name=f"{entity.value}_eia860", value=annual_df),
+ Output(output_name=f"core_eia__entity_{entity.value}", value=entity_df),
+ Output(output_name=f"core_eia860__scd_{entity.value}", value=annual_df),
)
return harvested_entity
@@ -1204,11 +1206,11 @@ def finished_eia_asset_factory(
) -> AssetsDefinition:
"""An asset factory for finished EIA tables."""
# TODO (bendnorman): Create a more graceful function for parsing table name
- table_name_parts = table_name.split("_")
- dataset = table_name_parts[-1]
- table_name_no_dataset = "_".join(table_name_parts[:-1])
+ table_name_parts = table_name.split("__")
+ dataset = table_name_parts[0].replace("core_", "")
+ table_name_no_asset_type = "_".join(table_name_parts[-1].split("_")[1:])
- _core_table_name = f"_core_{dataset}__{table_name_no_dataset}"
+ _core_table_name = f"_core_{dataset}__{table_name_no_asset_type}"
@asset(
ins={_core_table_name: AssetIn()},
@@ -1227,16 +1229,16 @@ def finished_eia_asset(**kwargs) -> pd.DataFrame:
finished_eia_assets = [
finished_eia_asset_factory(table_name, io_manager_key="pudl_sqlite_io_manager")
for table_name in [
- "boiler_fuel_eia923",
- "coalmine_eia923",
- "fuel_receipts_costs_eia923",
- "generation_eia923",
- "generation_fuel_eia923",
- "generation_fuel_nuclear_eia923",
- "ownership_eia860",
- "emissions_control_equipment_eia860",
- "boiler_emissions_control_equipment_assn_eia860",
- "boiler_cooling_assn_eia860",
- "boiler_stack_flue_assn_eia860",
+ "core_eia923__monthly_boiler_fuel",
+ "core_eia923__entity_coalmine",
+ "core_eia923__monthly_fuel_receipts_costs",
+ "core_eia923__monthly_generation",
+ "core_eia923__monthly_generation_fuel",
+ "core_eia923__monthly_generation_fuel_nuclear",
+ "core_eia860__scd_ownership",
+ "core_eia860__scd_emissions_control_equipment",
+ "core_eia860__annual_boiler_emissions_control_equipment_assn",
+ "core_eia860__assn_boiler_cooling",
+ "core_eia860__assn_boiler_stack_flue",
]
]
diff --git a/src/pudl/transform/eia860.py b/src/pudl/transform/eia860.py
index ba68c00f05..3118820fc6 100644
--- a/src/pudl/transform/eia860.py
+++ b/src/pudl/transform/eia860.py
@@ -25,10 +25,10 @@ def _core_eia860__ownership(raw_eia860__ownership: pd.DataFrame) -> pd.DataFrame
reporting.
Args:
- raw_eia860__ownership: The raw ``ownership_eia860`` dataframe.
+ raw_eia860__ownership: The raw ``raw_eia860__ownership`` dataframe.
Returns:
- Cleaned ``ownership_eia860`` dataframe ready for harvesting.
+ Cleaned ``_core_eia860__ownership`` dataframe ready for harvesting.
"""
# Preiminary clean and get rid of unecessary 'year' column
own_df = (
@@ -95,7 +95,7 @@ def _core_eia860__ownership(raw_eia860__ownership: pd.DataFrame) -> pd.DataFrame
remaining_dupes = own_df[own_df.duplicated(subset=own_pk, keep=False)]
if not remaining_dupes.empty:
raise ValueError(
- f"Duplicate ownership slices found in ownership_eia860: {remaining_dupes}"
+ f"Duplicate ownership slices found in _core_eia860__ownership: {remaining_dupes}"
)
# Remove a couple of records known to have (literal) "nan" values in the
@@ -121,7 +121,9 @@ def _core_eia860__ownership(raw_eia860__ownership: pd.DataFrame) -> pd.DataFrame
own_df = own_df[~mask]
if not (nulls := own_df[own_df.generator_id == ""]).empty:
- logger.warning(f"Found records with null IDs in ownership_eia860: {nulls}")
+ logger.warning(
+ f"Found records with null IDs in _core_eia860__ownership: {nulls}"
+ )
# In 2010 there are several hundred utilities that appear to be incorrectly
# reporting the owner_utility_id_eia value *also* in the utility_id_eia
# column. This results in duplicate operator IDs associated with a given
@@ -150,7 +152,7 @@ def _core_eia860__ownership(raw_eia860__ownership: pd.DataFrame) -> pd.DataFrame
own_df.loc[single_owner_operator, "utility_id_eia"] = pd.NA
own_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("ownership_eia860")
+ .get_resource("core_eia860__scd_ownership")
.encode(own_df)
)
# CN is an invalid political subdivision code used by a few respondents to indicate
@@ -213,7 +215,7 @@ def _core_eia860__generators(
raw_eia860__generator: The raw ``raw_eia860__generator`` dataframe.
Returns:
- Cleaned ``generators_eia860`` dataframe ready for harvesting.
+ Cleaned ``_core_eia860__generators`` dataframe ready for harvesting.
"""
# Groupby objects were creating chained assignment warning that is N/A
pd.options.mode.chained_assignment = None
@@ -332,7 +334,7 @@ def _core_eia860__generators(
gens_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("generators_eia860")
+ .get_resource("core_eia860__scd_generators")
.encode(gens_df)
)
@@ -376,9 +378,9 @@ def _core_eia860__plants(raw_eia860__plant: pd.DataFrame) -> pd.DataFrame:
raw_eia860__plant: The raw ``raw_eia860__plant`` dataframe.
Returns:
- Cleaned ``plants_eia860`` dataframe ready for harvesting.
+ Cleaned ``_core_eia860__plants`` dataframe ready for harvesting.
"""
- # Populating the 'plants_eia860' table
+ # Populating the '_core_eia860__plants' table
p_df = (
raw_eia860__plant.pipe(pudl.helpers.fix_eia_na)
.astype({"zip_code": str})
@@ -435,7 +437,7 @@ def _core_eia860__plants(raw_eia860__plant: pd.DataFrame) -> pd.DataFrame:
p_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("plants_eia860")
+ .get_resource("core_eia860__scd_plants")
.encode(p_df)
)
@@ -459,9 +461,9 @@ def _core_eia860__boiler_generator_assn(
spreadsheets they distribute.
Returns:
- Cleaned ``boiler_generator_assn_eia860`` dataframe ready for harvesting.
+ Cleaned ``_core_eia860__boiler_generator_assn`` dataframe ready for harvesting.
"""
- # Populating the 'generators_eia860' table
+ # Populating the 'core_eia860__scd_generators' table
b_g_df = raw_eia860__boiler_generator_assn
b_g_df = pudl.helpers.convert_to_date(b_g_df)
@@ -470,7 +472,7 @@ def _core_eia860__boiler_generator_assn(
b_g_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("boiler_generator_assn_eia860")
+ .get_resource("core_eia860__assn_boiler_generator")
.encode(b_g_df)
)
@@ -495,9 +497,9 @@ def _core_eia860__utilities(raw_eia860__utility: pd.DataFrame) -> pd.DataFrame:
raw_eia860__utility: The raw ``raw_eia860__utility`` dataframe.
Returns:
- Cleaned ``utilities_eia860`` dataframe ready for harvesting.
+ Cleaned ``_core_eia860__utilities`` dataframe ready for harvesting.
"""
- # Populating the 'utilities_eia860' table
+ # Populating the '_core_eia860__utilities' table
u_df = raw_eia860__utility
# Replace empty strings, whitespace, and '.' fields with real NA values
@@ -587,7 +589,7 @@ def _core_eia860__boilers(
Returns:
pandas.DataFrame: the transformed boilers table
"""
- # Populating the 'boilers_eia860' table
+ # Populating the 'core_eia860__scd_boilers' table
b_df = raw_eia860__boiler_info
ecs = raw_eia860__emission_control_strategies
@@ -761,7 +763,7 @@ def _core_eia860__boilers(
b_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("boilers_eia860")
+ .get_resource("core_eia860__scd_boilers")
.encode(b_df)
)
@@ -885,7 +887,7 @@ def _core_eia860__emissions_control_equipment(
emce_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("emissions_control_equipment_eia860")
+ .get_resource("core_eia860__scd_emissions_control_equipment")
.encode(emce_df)
)
@@ -973,7 +975,7 @@ def _core_eia860__boiler_emissions_control_equipment_assn(
@asset
-def _core_eia860__boiler_cooling_assn(
+def _core_eia860__boiler_cooling(
raw_eia860__boiler_cooling: pd.DataFrame,
) -> pd.DataFrame:
"""Pull and transform the EIA 860 boiler to cooler ID table.
@@ -998,7 +1000,7 @@ def _core_eia860__boiler_cooling_assn(
@asset
-def _core_eia860__boiler_stack_flue_assn(
+def _core_eia860__boiler_stack_flue(
raw_eia860__boiler_stack_flue: pd.DataFrame,
) -> pd.DataFrame:
"""Pull and transform the EIA 860 boiler to stack flue ID table.
diff --git a/src/pudl/transform/eia923.py b/src/pudl/transform/eia923.py
index 5f7f12bc24..583cb0163b 100644
--- a/src/pudl/transform/eia923.py
+++ b/src/pudl/transform/eia923.py
@@ -85,7 +85,7 @@ def _get_plant_nuclear_unit_id_map(nuc_fuel: pd.DataFrame) -> dict[int, str]:
def _backfill_nuclear_unit_id(nuc_fuel: pd.DataFrame) -> pd.DataFrame:
"""Backfill 2001 and 2002 nuclear_unit_id for plants with one nuclear unit.
- 2001 and 2002 generation_fuel_eia923 records do not include nuclear_unit_id which is
+ 2001 and 2002 core_eia923__monthly_generation_fuel records do not include nuclear_unit_id which is
required for the primary key of nuclear_unit_fuel_eia923. We backfill this field for
plants with one nuclear unit. nuclear_unit_id is filled with 'UNK' if the
nuclear_unit_id can't be recovered.
@@ -158,7 +158,7 @@ def _get_plant_prime_mover_map(gen_fuel: pd.DataFrame) -> dict[int, str]:
def _backfill_prime_mover_code(gen_fuel: pd.DataFrame) -> pd.DataFrame:
"""Backfill 2001 and 2002 prime_mover_code for plants with one prime mover.
- 2001 and 2002 generation_fuel_eia923 records do not include prime_mover_code
+ 2001 and 2002 core_eia923__monthly_generation_fuel records do not include prime_mover_code
which is required for the primary key. We backfill this field for plants
with one prime mover. prime_mover_code is set to 'UNK' if future plants
have multiple prime movers.
@@ -254,7 +254,7 @@ def _clean_gen_fuel_energy_sources(gen_fuel: pd.DataFrame) -> pd.DataFrame:
}
)
# plant 10204 should be waste heat instead of other. Fixes a mismatch between energy
- # source # codes reported in generators_eia860 and the boiler_fuel_eia860 tables.
+ # source # codes reported in core_eia860__scd_generators and the boiler_fuel_eia860 tables.
gen_fuel.loc[
(gen_fuel["plant_id_eia"] == 10204) & (gen_fuel["energy_source_code"] == "OTH"),
"energy_source_code",
@@ -426,11 +426,11 @@ def _yearly_to_monthly_records(df: pd.DataFrame) -> pd.DataFrame:
def _coalmine_cleanup(cmi_df: pd.DataFrame) -> pd.DataFrame:
- """Clean up the coalmine_eia923 table.
+ """Clean up the core_eia923__entity_coalmine table.
- This function does most of the coalmine_eia923 table transformation. It is separate
+ This function does most of the core_eia923__entity_coalmine table transformation. It is separate
from the coalmine() transform function because of the peculiar way that we are
- normalizing the ref:`fuel_receipts_costs_eia923` table.
+ normalizing the ref:`core_eia923__monthly_fuel_receipts_costs` table.
All of the coalmine information is originally coming from the EIA
fuel_receipts_costs spreadsheet, but it really belongs in its own table. We strip it
@@ -484,7 +484,7 @@ def _coalmine_cleanup(cmi_df: pd.DataFrame) -> pd.DataFrame:
cmi_df["county_id_fips"] = cmi_df["state_id_fips"] + cmi_df["county_id_fips"]
cmi_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("coalmine_eia923")
+ .get_resource("core_eia923__entity_coalmine")
.encode(cmi_df)
)
return cmi_df
@@ -559,7 +559,7 @@ def plants_eia923(eia923_dfs, eia923_transformed_dfs):
def gen_fuel_nuclear(gen_fuel_nuke: pd.DataFrame) -> pd.DataFrame:
- """Transforms the generation_fuel_nuclear_eia923 table.
+ """Transforms the core_eia923__monthly_generation_fuel_nuclear table.
Transformations include:
@@ -597,7 +597,7 @@ def gen_fuel_nuclear(gen_fuel_nuke: pd.DataFrame) -> pd.DataFrame:
},
)
def _core_eia_923__generation_fuel_eia923(raw_eia923__generation_fuel: pd.DataFrame):
- """Transforms the generation_fuel_eia923 table.
+ """Transforms the raw_eia923__generation_fuel table.
Transformations include:
@@ -616,13 +616,13 @@ def _core_eia_923__generation_fuel_eia923(raw_eia923__generation_fuel: pd.DataFr
raw_eia923__generation_fuel: The raw ``raw_eia923__generation_fuel`` dataframe.
Returns:
- _core_eia923__generation_fuel: Cleaned ``generation_fuel_eia923`` dataframe ready for harvesting.
- _core_eia923__generation_fuel_nuclear: Cleaned ``generation_fuel_nuclear_eia923`` dataframe ready for harvesting.
+ _core_eia923__generation_fuel: Cleaned ``eia923__generation_fuel`` dataframe ready for harvesting.
+ _core_eia923__generation_fuel_nuclear: Cleaned ``eia923__generation_fuel_nuclear`` dataframe ready for harvesting.
"""
# This needs to be a copy of what we're passed in so we can edit it.
gen_fuel = raw_eia923__generation_fuel
- # Drop fields we're not inserting into the generation_fuel_eia923 table.
+ # Drop fields we're not inserting into the _core_eia923__generation_fuel table.
cols_to_drop = [
"combined_heat_power",
"plant_name_eia",
@@ -663,7 +663,7 @@ def _core_eia_923__generation_fuel_eia923(raw_eia923__generation_fuel: pd.DataFr
gen_fuel = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("generation_fuel_eia923")
+ .get_resource("core_eia923__monthly_generation_fuel")
.encode(gen_fuel)
)
@@ -747,7 +747,7 @@ def _map_prime_mover_sets(prime_mover_set: np.ndarray) -> str:
def _aggregate_duplicate_boiler_fuel_keys(boiler_fuel_df: pd.DataFrame) -> pd.DataFrame:
"""Combine boiler_fuel rows with duplicate keys by aggregating them.
- Boiler_fuel_eia923 contains a few records with duplicate keys, mostly caused by
+ core_eia923__monthly_boiler_fuel contains a few records with duplicate keys, mostly caused by
CA and CT parts of combined cycle plants being mapped to the same boiler ID.
This is most likely a data entry error. See GitHub issue #852
@@ -816,7 +816,7 @@ def _aggregate_duplicate_boiler_fuel_keys(boiler_fuel_df: pd.DataFrame) -> pd.Da
@asset
def _core_eia923__boiler_fuel(raw_eia923__boiler_fuel: pd.DataFrame) -> pd.DataFrame:
- """Transforms the boiler_fuel_eia923 table.
+ """Transforms the core_eia923__monthly_boiler_fuel table.
Transformations include:
@@ -831,7 +831,7 @@ def _core_eia923__boiler_fuel(raw_eia923__boiler_fuel: pd.DataFrame) -> pd.DataF
raw_eia923__boiler_fuel: The raw ``raw_eia923__boiler_fuel`` dataframe.
Returns:
- Cleaned ``boiler_fuel_eia923`` dataframe ready for harvesting.
+ Cleaned ``core_eia923__monthly_boiler_fuel`` dataframe ready for harvesting.
"""
bf_df = raw_eia923__boiler_fuel
@@ -867,7 +867,7 @@ def _core_eia923__boiler_fuel(raw_eia923__boiler_fuel: pd.DataFrame) -> pd.DataF
bf_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("boiler_fuel_eia923")
+ .get_resource("core_eia923__monthly_boiler_fuel")
.encode(bf_df)
)
@@ -885,7 +885,7 @@ def _core_eia923__boiler_fuel(raw_eia923__boiler_fuel: pd.DataFrame) -> pd.DataF
def remove_duplicate_pks_boiler_fuel_eia923(bf: pd.DataFrame) -> pd.DataFrame:
- """Deduplicate on primary keys for :ref:`boiler_fuel_eia923`.
+ """Deduplicate on primary keys for :ref:`core_eia923__monthly_boiler_fuel`.
There are a relatively small number of records ~5% from the boiler fuel table that
have duplicate records based on what we believe is this table's primary keys.
@@ -903,7 +903,7 @@ def remove_duplicate_pks_boiler_fuel_eia923(bf: pd.DataFrame) -> pd.DataFrame:
"""
pk = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("boiler_fuel_eia923")
+ .get_resource("core_eia923__monthly_boiler_fuel")
.schema.primary_key
)
@@ -930,7 +930,7 @@ def remove_duplicate_pks_boiler_fuel_eia923(bf: pd.DataFrame) -> pd.DataFrame:
]
).empty:
raise AssertionError(
- f"There are ({len(pk_dupes)}) boiler_fuel_eia923 records with "
+ f"There are ({len(pk_dupes)}) core_eia923__monthly_boiler_fuel records with "
"duplicate primary keys after cleaning - expected 0."
)
return pd.concat([bf[~pk_dupe_mask], bf_no_null_pks_dupes])
@@ -938,7 +938,7 @@ def remove_duplicate_pks_boiler_fuel_eia923(bf: pd.DataFrame) -> pd.DataFrame:
@asset
def _core_eia923__generation(raw_eia923__generator: pd.DataFrame) -> pd.DataFrame:
- """Transforms the generation_eia923 table.
+ """Transforms the EIA 923 generation table.
Transformations include:
@@ -951,7 +951,7 @@ def _core_eia923__generation(raw_eia923__generator: pd.DataFrame) -> pd.DataFram
raw_eia923__generator: The raw ``raw_eia923__generator`` dataframe.
Returns:
- Cleaned ``generation_eia923`` dataframe ready for harvesting.
+ Cleaned ``_core_eia923__generation`` dataframe ready for harvesting.
"""
gen_df = (
raw_eia923__generator.dropna(subset=["generator_id"])
@@ -995,7 +995,7 @@ def _core_eia923__generation(raw_eia923__generator: pd.DataFrame) -> pd.DataFram
gen_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("generation_eia923")
+ .get_resource("core_eia923__monthly_generation")
.encode(gen_df)
)
@@ -1006,7 +1006,7 @@ def _core_eia923__generation(raw_eia923__generator: pd.DataFrame) -> pd.DataFram
def _core_eia923__coalmine(
raw_eia923__fuel_receipts_costs: pd.DataFrame,
) -> pd.DataFrame:
- """Transforms the coalmine_eia923 table.
+ """Transforms the raw_eia923__fuel_receipts_costs table.
Transformations include:
@@ -1015,10 +1015,10 @@ def _core_eia923__coalmine(
Args:
raw_eia923__fuel_receipts_costs: raw precursor to the
- :ref:`fuel_receipts_costs_eia923` table.
+ :ref:`core_eia923__monthly_fuel_receipts_costs` table.
Returns:
- Cleaned ``coalmine_eia923`` dataframe ready for harvesting.
+ Cleaned ``_core_eia923__coalmine`` dataframe ready for harvesting.
"""
# These are the columns that we want to keep from FRC for the
# coal mine info table.
@@ -1076,7 +1076,7 @@ def _core_eia923__coalmine(
cmi_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("coalmine_eia923")
+ .get_resource("core_eia923__entity_coalmine")
.encode(cmi_df)
)
@@ -1087,7 +1087,7 @@ def _core_eia923__coalmine(
def _core_eia923__fuel_receipts_costs(
raw_eia923__fuel_receipts_costs: pd.DataFrame, _core_eia923__coalmine: pd.DataFrame
) -> pd.DataFrame:
- """Transforms the fuel_receipts_costs_eia923 dataframe.
+ """Transforms the eia923__fuel_receipts_costs dataframe.
Transformations include:
@@ -1101,14 +1101,14 @@ def _core_eia923__fuel_receipts_costs(
Args:
raw_eia923__fuel_receipts_costs: The raw ``raw_eia923__fuel_receipts_costs`` dataframe.
- _core_eia923__coalmine: The cleaned pre-harvest ``coalmine_eia923`` dataframe.
+ _core_eia923__coalmine: The cleaned pre-harvest EIA 923 coal mine dataframe.
Returns:
- Cleaned ``fuel_receipts_costs_eia923`` dataframe ready for harvesting.
+ Cleaned ``eia923__fuel_receipts_costs`` dataframe ready for harvesting.
"""
frc_df = raw_eia923__fuel_receipts_costs
- # Drop fields we're not inserting into the fuel_receipts_costs_eia923
+ # Drop fields we're not inserting into the eia923__fuel_receipts_costs
# table.
cols_to_drop = [
"plant_name_eia",
@@ -1135,7 +1135,7 @@ def _core_eia923__fuel_receipts_costs(
)
# This type/naming cleanup function is separated out so that we can be
- # sure it is applied exactly the same both when the coalmine_eia923 table
+ # sure it is applied exactly the same both when the core_eia923__entity_coalmine table
# is populated, and here (since we need them to be identical for the
# following merge)
frc_df = (
@@ -1202,7 +1202,7 @@ def _core_eia923__fuel_receipts_costs(
)
frc_df = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("fuel_receipts_costs_eia923")
+ .get_resource("core_eia923__monthly_fuel_receipts_costs")
.encode(frc_df)
)
frc_df["fuel_type_code_pudl"] = frc_df.energy_source_code.map(
diff --git a/src/pudl/transform/epacems.py b/src/pudl/transform/epacems.py
index e1c0bd656f..51e170744f 100644
--- a/src/pudl/transform/epacems.py
+++ b/src/pudl/transform/epacems.py
@@ -105,7 +105,7 @@ def convert_to_utc(df: pd.DataFrame, plant_utc_offset: pd.DataFrame) -> pd.DataF
on="plant_id_eia",
)
- # Some of the timezones in the plants_entity_eia table may be missing,
+ # Some of the timezones in the core_eia__entity_plants table may be missing,
# but none of the CEMS plants should be.
if df["utc_offset"].isna().any():
missing_plants = df.loc[df["utc_offset"].isna(), "plant_id_eia"].unique()
@@ -128,7 +128,7 @@ def convert_to_utc(df: pd.DataFrame, plant_utc_offset: pd.DataFrame) -> pd.DataF
return df
-def _load_plant_utc_offset(plants_entity_eia: pd.DataFrame) -> pd.DataFrame:
+def _load_plant_utc_offset(core_eia__entity_plants: pd.DataFrame) -> pd.DataFrame:
"""Load the UTC offset each EIA plant.
CEMS times don't change for DST, so we get the UTC offset by using the
@@ -139,9 +139,9 @@ def _load_plant_utc_offset(plants_entity_eia: pd.DataFrame) -> pd.DataFrame:
an existing PUDL DB.
Returns:
- Dataframe of applicable timezones taken from the plants_entity_eia table.
+ Dataframe of applicable timezones taken from the core_eia__entity_plants table.
"""
- timezones = plants_entity_eia[["plant_id_eia", "timezone"]].copy().dropna()
+ timezones = core_eia__entity_plants[["plant_id_eia", "timezone"]].copy().dropna()
jan1 = datetime.datetime(2011, 1, 1) # year doesn't matter
timezones["utc_offset"] = timezones["timezone"].apply(
lambda tz: pytz.timezone(tz).localize(jan1).utcoffset()
@@ -174,7 +174,7 @@ def correct_gross_load_mw(df: pd.DataFrame) -> pd.DataFrame:
def transform(
raw_df: pd.DataFrame,
epacamd_eia: pd.DataFrame,
- plants_entity_eia: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
) -> pd.DataFrame:
"""Transform EPA CEMS hourly data and ready it for export to Parquet.
@@ -192,7 +192,8 @@ def transform(
.pipe(remove_leading_zeros_from_numeric_strings, "emissions_unit_id_epa")
.pipe(harmonize_eia_epa_orispl, epacamd_eia)
.pipe(
- convert_to_utc, plant_utc_offset=_load_plant_utc_offset(plants_entity_eia)
+ convert_to_utc,
+ plant_utc_offset=_load_plant_utc_offset(core_eia__entity_plants),
)
.pipe(correct_gross_load_mw)
.pipe(apply_pudl_dtypes, group="epacems")
diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py
index f9ceb95cfc..308d25e0c2 100644
--- a/src/pudl/transform/ferc1.py
+++ b/src/pudl/transform/ferc1.py
@@ -128,35 +128,41 @@ class TableIdFerc1(enum.Enum):
Package. But this works for now.
"""
- FUEL_FERC1 = "fuel_ferc1"
- PLANTS_STEAM_FERC1 = "plants_steam_ferc1"
- PLANTS_HYDRO_FERC1 = "plants_hydro_ferc1"
- PLANTS_SMALL_FERC1 = "plants_small_ferc1"
- PLANTS_PUMPED_STORAGE_FERC1 = "plants_pumped_storage_ferc1"
- PLANT_IN_SERVICE_FERC1 = "plant_in_service_ferc1"
- PURCHASED_POWER_FERC1 = "purchased_power_ferc1"
- TRANSMISSION_STATISTICS_FERC1 = "transmission_statistics_ferc1"
- ELECTRIC_ENERGY_SOURCES_FERC1 = "electric_energy_sources_ferc1"
- ELECTRIC_ENERGY_DISPOSITIONS_FERC1 = "electric_energy_dispositions_ferc1"
- UTILITY_PLANT_SUMMARY_FERC1 = "utility_plant_summary_ferc1"
- ELECTRIC_OPERATING_EXPENSES_FERC1 = "electric_operating_expenses_ferc1"
- BALANCE_SHEET_LIABILITIES = "balance_sheet_liabilities_ferc1"
- DEPRECIATION_AMORTIZATION_SUMMARY_FERC1 = "depreciation_amortization_summary_ferc1"
- BALANCE_SHEET_ASSETS_FERC1 = "balance_sheet_assets_ferc1"
- RETAINED_EARNINGS_FERC1 = "retained_earnings_ferc1"
- INCOME_STATEMENT_FERC1 = "income_statement_ferc1"
+ FUEL_FERC1 = "core_ferc1__yearly_fuel"
+ PLANTS_STEAM_FERC1 = "core_ferc1__yearly_plants_steam"
+ PLANTS_HYDRO_FERC1 = "core_ferc1__yearly_plants_hydro"
+ PLANTS_SMALL_FERC1 = "core_ferc1__yearly_plants_small"
+ PLANTS_PUMPED_STORAGE_FERC1 = "core_ferc1__yearly_plants_pumped_storage"
+ PLANT_IN_SERVICE_FERC1 = "core_ferc1__yearly_plant_in_service"
+ PURCHASED_POWER_FERC1 = "core_ferc1__yearly_purchased_power"
+ TRANSMISSION_STATISTICS_FERC1 = "core_ferc1__yearly_transmission_statistics"
+ ELECTRIC_ENERGY_SOURCES_FERC1 = "core_ferc1__yearly_electric_energy_sources"
+ ELECTRIC_ENERGY_DISPOSITIONS_FERC1 = (
+ "core_ferc1__yearly_electric_energy_dispositions"
+ )
+ UTILITY_PLANT_SUMMARY_FERC1 = "core_ferc1__yearly_utility_plant_summary"
+ ELECTRIC_OPERATING_EXPENSES_FERC1 = "core_ferc1__yearly_electric_operating_expenses"
+ BALANCE_SHEET_LIABILITIES = "core_ferc1__yearly_balance_sheet_liabilities"
+ DEPRECIATION_AMORTIZATION_SUMMARY_FERC1 = (
+ "core_ferc1__yearly_depreciation_amortization_summary"
+ )
+ BALANCE_SHEET_ASSETS_FERC1 = "core_ferc1__yearly_balance_sheet_assets"
+ RETAINED_EARNINGS_FERC1 = "core_ferc1__yearly_retained_earnings"
+ INCOME_STATEMENT_FERC1 = "core_ferc1__yearly_income_statement"
ELECTRIC_PLANT_DEPRECIATION_CHANGES_FERC1 = (
- "electric_plant_depreciation_changes_ferc1"
+ "core_ferc1__yearly_electric_plant_depreciation_changes"
)
- ELECTRIC_OPERATING_REVENUES_FERC1 = "electric_operating_revenues_ferc1"
+ ELECTRIC_OPERATING_REVENUES_FERC1 = "core_ferc1__yearly_electric_operating_revenues"
ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1 = (
- "electric_plant_depreciation_functional_ferc1"
+ "core_ferc1__yearly_electric_plant_depreciation_functional"
)
- CASH_FLOW_FERC1 = "cash_flow_ferc1"
+ CASH_FLOW_FERC1 = "core_ferc1__yearly_cash_flow"
ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1 = (
- "electricity_sales_by_rate_schedule_ferc1"
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule"
+ )
+ OTHER_REGULATORY_LIABILITIES_FERC1 = (
+ "core_ferc1__yearly_other_regulatory_liabilities"
)
- OTHER_REGULATORY_LIABILITIES_FERC1 = "other_regulatory_liabilities_ferc1"
################################################################################
@@ -277,7 +283,7 @@ def wide_to_tidy(df: pd.DataFrame, params: WideToTidy) -> pd.DataFrame:
required for that aggregation are added later.
For table that have a internal relationship between the values in the
- ``params.value_types``, such as the :ref:`plant_in_service_ferc1` table, this also
+ ``params.value_types``, such as the :ref:`core_ferc1__yearly_plant_in_service` table, this also
enables aggregation across columns to calculate the ending balance based on the
starting balance and all of the reported changes.
"""
@@ -1471,7 +1477,7 @@ def apply_xbrl_calculation_fixes(
calculated_fields_to_fix: dict[
TableIdFerc1, dict # [xbrl_factoid_name, list[calc_component_fix]]
] = {
- "income_statement_ferc1": {
+ "core_ferc1__yearly_income_statement": {
"income_before_extraordinary_items": [
{
"calc_component_to_replace": {},
@@ -1503,10 +1509,10 @@ def apply_xbrl_calculation_fixes(
}
],
},
- "electric_operating_revenues_ferc1": {
+ "core_ferc1__yearly_electric_operating_revenues": {
"sales_to_ultimate_consumers": [
# Replace commercial_and_industrial_sales which is reported in
- # electricity_sales_by_rate_schedule_ferc1 with two components
+ # core_ferc1__yearly_electricity_sales_by_rate_schedule with two components
# (small_or_commercial_sales... and large_or_industrial_sales...)
# from this table which should sum to the same amount as the value
# being replaced.
@@ -1515,7 +1521,7 @@ def apply_xbrl_calculation_fixes(
"name": "commercial_and_industrial_sales",
"weight": 1.0,
"source_tables": [
- "electricity_sales_by_rate_schedule_ferc1"
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule"
],
},
"calc_component_new": {
@@ -1532,7 +1538,7 @@ def apply_xbrl_calculation_fixes(
},
],
},
- "electric_operating_expenses_ferc1": {
+ "core_ferc1__yearly_electric_operating_expenses": {
# This table has two factoids that have sub-components that are
# calculations themselves and both the sub-component calculated values
# AND the sub-sub-components. So we're removing the specific sub-sub-
@@ -1553,9 +1559,9 @@ def apply_xbrl_calculation_fixes(
"name": "operation_supervision_and_engineering_expense",
"weight": 1.0,
"source_tables": [
- "plants_steam_ferc1",
- "plants_hydro_ferc1",
- "plants_pumped_storage_ferc1",
+ "core_ferc1__yearly_plants_steam",
+ "core_ferc1__yearly_plants_hydro",
+ "core_ferc1__yearly_plants_pumped_storage",
],
},
"calc_component_new": {},
@@ -1684,9 +1690,9 @@ def apply_xbrl_calculation_fixes(
"name": "operation_supervision_and_engineering_expense",
"weight": 1.0,
"source_tables": [
- "plants_steam_ferc1",
- "plants_hydro_ferc1",
- "plants_pumped_storage_ferc1",
+ "core_ferc1__yearly_plants_steam",
+ "core_ferc1__yearly_plants_hydro",
+ "core_ferc1__yearly_plants_pumped_storage",
],
},
"calc_component_new": {},
@@ -1781,7 +1787,7 @@ def apply_xbrl_calculation_fixes(
},
],
},
- "utility_plant_summary_ferc1": {
+ "core_ferc1__yearly_utility_plant_summary": {
"accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility": [
{
"calc_component_to_replace": {
@@ -1793,7 +1799,7 @@ def apply_xbrl_calculation_fixes(
}
],
},
- "balance_sheet_assets_ferc1": {
+ "core_ferc1__yearly_balance_sheet_assets": {
"nuclear_fuel_net": [
{
"calc_component_to_replace": {
@@ -1829,7 +1835,7 @@ def apply_xbrl_calculation_fixes(
},
],
},
- "balance_sheet_liabilities_ferc1": {
+ "core_ferc1__yearly_balance_sheet_liabilities": {
"deferred_credits": [
{
"calc_component_to_replace": {},
@@ -1840,7 +1846,7 @@ def apply_xbrl_calculation_fixes(
},
],
},
- "retained_earnings_ferc1": {
+ "core_ferc1__yearly_retained_earnings": {
"appropriated_retained_earnings_including_reserve_amortization": [
{
"calc_component_to_replace": {},
@@ -1962,7 +1968,7 @@ def apply_xbrl_calculation_fixes(
},
],
},
- "electric_plant_depreciation_functional_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_functional": {
# We use this name for the calculation but it gets renamed in
# `process_xbrl_metadata` to total.
"accumulated_provision_for_depreciation_of_electric_utility_plant": [
@@ -2031,7 +2037,7 @@ def apply_xbrl_calculation_fixes(
},
],
},
- "electric_plant_depreciation_changes_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_changes": {
"ending_balance": [
{
"calc_component_to_replace": {},
@@ -2651,10 +2657,10 @@ def reconcile_table_calculations(
class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`fuel_ferc1` table.
+ """A table transformer specific to the :ref:`core_ferc1__yearly_fuel` table.
- The :ref:`fuel_ferc1` table reports data about fuel consumed by large thermal power
- plants in the :ref:`plants_steam_ferc1` table. Each record in the steam table is
+ The :ref:`core_ferc1__yearly_fuel` table reports data about fuel consumed by large thermal power
+ plants in the :ref:`core_ferc1__yearly_plants_steam` table. Each record in the steam table is
typically associated with several records in the fuel table, with each fuel record
reporting data for a particular type of fuel consumed by that plant over the course
of a year. The fuel table presents several challenges.
@@ -2710,7 +2716,7 @@ class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
- """Table specific transforms for fuel_ferc1.
+ """Table specific transforms for core_ferc1__yearly_fuel.
Args:
df: Pre-processed, concatenated XBRL and DBF data.
@@ -2747,7 +2753,7 @@ def process_dbf(self, raw_dbf: pd.DataFrame) -> pd.DataFrame:
def process_xbrl(
self, raw_xbrl_instant: pd.DataFrame, raw_xbrl_duration: pd.DataFrame
) -> pd.DataFrame:
- """Special pre-concat treatment of the :ref:`fuel_ferc1` table.
+ """Special pre-concat treatment of the :ref:`core_ferc1__yearly_fuel` table.
We have to do most of the transformation before the DBF and XBRL data have been
concatenated because the fuel type column is part of the primary key and it is
@@ -2943,7 +2949,7 @@ def drop_total_rows(self, df: pd.DataFrame) -> pd.DataFrame:
* have no identifiable fuel units
* DO report a value for MMBTU / MWh (heat rate)
- In the case of the fuel_ferc1 table, we drop any row where all the data columns
+ In the case of the core_ferc1__yearly_fuel table, we drop any row where all the data columns
are null AND there's a non-null value in the ``fuel_mmbtu_per_mwh`` column, as
it typically indicates a "total" row for a plant. We also require a null value
for the fuel_units and an "other" value for the fuel type.
@@ -2982,7 +2988,7 @@ def drop_invalid_rows(
class PlantsSteamFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for the :ref:`plants_steam_ferc1` table."""
+ """Transformer class for the :ref:`core_ferc1__yearly_plants_steam` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_STEAM_FERC1
@@ -2990,14 +2996,14 @@ class PlantsSteamFerc1TableTransformer(Ferc1AbstractTableTransformer):
def transform_main(
self, df: pd.DataFrame, transformed_fuel: pd.DataFrame
) -> pd.DataFrame:
- """Perform table transformations for the :ref:`plants_steam_ferc1` table.
+ """Perform table transformations for the :ref:`core_ferc1__yearly_plants_steam` table.
Note that this method has a non-standard call signature, since the
- :ref:`plants_steam_ferc1` table depends on the :ref:`fuel_ferc1` table.
+ :ref:`core_ferc1__yearly_plants_steam` table depends on the :ref:`core_ferc1__yearly_fuel` table.
Args:
df: The pre-processed steam plants table.
- transformed_fuel: The fully transformed :ref:`fuel_ferc1` table. This is
+ transformed_fuel: The fully transformed :ref:`core_ferc1__yearly_fuel` table. This is
required because fuel consumption information is used to help link
steam plant records together across years using
:func:`plants_steam_assign_plant_ids`
@@ -3052,7 +3058,7 @@ def transform(
class PlantsHydroFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`plants_hydro_ferc1` table."""
+ """A table transformer specific to the :ref:`core_ferc1__yearly_plants_hydro` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_HYDRO_FERC1
@@ -3099,13 +3105,13 @@ def targeted_drop_duplicates(self, df):
class PlantsPumpedStorageFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`plants_pumped_storage_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_plants_pumped_storage` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_PUMPED_STORAGE_FERC1
class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`purchased_power_ferc1` table.
+ """Transformer class for :ref:`core_ferc1__yearly_purchased_power` table.
This table has data about inter-utility power purchases into the PUDL DB. This
includes how much electricty was purchased, how much it cost, and who it was
@@ -3119,7 +3125,7 @@ class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
class PlantInServiceFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A transformer for the :ref:`plant_in_service_ferc1` table."""
+ """A transformer for the :ref:`core_ferc1__yearly_plant_in_service` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANT_IN_SERVICE_FERC1
has_unique_record_ids: bool = False
@@ -3292,13 +3298,13 @@ def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
class PlantsSmallFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`plants_small_ferc1` table."""
+ """A table transformer specific to the :ref:`core_ferc1__yearly_plants_small` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_SMALL_FERC1
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
- """Table specific transforms for plants_small_ferc1.
+ """Table specific transforms for core_ferc1__yearly_plants_small.
Params:
df: Pre-processed, concatenated XBRL and DBF data.
@@ -4211,14 +4217,14 @@ def spot_fix_rows(self, df: pd.DataFrame) -> pd.DataFrame:
class TransmissionStatisticsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer for the :ref:`transmission_statistics_ferc1` table."""
+ """A table transformer for the :ref:`core_ferc1__yearly_transmission_statistics` table."""
table_id: TableIdFerc1 = TableIdFerc1.TRANSMISSION_STATISTICS_FERC1
has_unique_record_ids: bool = False
class ElectricEnergySourcesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`electric_energy_sources_ferc1` table.
+ """Transformer class for :ref:`core_ferc1__yearly_electric_energy_sources` table.
The raw DBF and XBRL table will be split up into two tables. This transformer
generates the sources of electricity for utilities, dropping the information about
@@ -4232,14 +4238,14 @@ class ElectricEnergySourcesFerc1TableTransformer(Ferc1AbstractTableTransformer):
class ElectricEnergyDispositionsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`electric_energy_dispositions_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_electric_energy_dispositions` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_ENERGY_DISPOSITIONS_FERC1
has_unique_record_ids: bool = False
class UtilityPlantSummaryFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`utility_plant_summary_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_utility_plant_summary` table."""
table_id: TableIdFerc1 = TableIdFerc1.UTILITY_PLANT_SUMMARY_FERC1
has_unique_record_ids: bool = False
@@ -4412,21 +4418,21 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
class BalanceSheetLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`balance_sheet_liabilities_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_balance_sheet_liabilities` table."""
table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_LIABILITIES
has_unique_record_ids: bool = False
class BalanceSheetAssetsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`balance_sheet_assets_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_balance_sheet_assets` table."""
table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_ASSETS_FERC1
has_unique_record_ids: bool = False
class IncomeStatementFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for the :ref:`income_statement_ferc1` table."""
+ """Transformer class for the :ref:`core_ferc1__yearly_income_statement` table."""
table_id: TableIdFerc1 = TableIdFerc1.INCOME_STATEMENT_FERC1
has_unique_record_ids: bool = False
@@ -4484,7 +4490,7 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
class RetainedEarningsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`retained_earnings_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_retained_earnings` table."""
table_id: TableIdFerc1 = TableIdFerc1.RETAINED_EARNINGS_FERC1
has_unique_record_ids: bool = False
@@ -4769,7 +4775,7 @@ def deduplicate_xbrl_factoid_xbrl_metadata(self, tbl_meta) -> pd.DataFrame:
column.
Note: This is **almost** the same as the method for
- :ref:`electric_operating_revenues_ferc1`. If we wanted to lean into this
+ :ref:`core_ferc1__yearly_electric_operating_revenues`. If we wanted to lean into this
version of deduplication more generally this might be a fine way start to an
abstraction, but ideally we wouldn't need to dedupe this at all and instead
enable metadata for every value column from :meth:`wide_to_tidy`.
@@ -4798,7 +4804,7 @@ def deduplicate_xbrl_factoid_xbrl_metadata(self, tbl_meta) -> pd.DataFrame:
class DepreciationAmortizationSummaryFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transformer class for :ref:`depreciation_amortization_summary_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_depreciation_amortization_summary` table."""
table_id: TableIdFerc1 = TableIdFerc1.DEPRECIATION_AMORTIZATION_SUMMARY_FERC1
has_unique_record_ids: bool = False
@@ -4826,7 +4832,7 @@ def process_xbrl_metadata(self, xbrl_metadata_json) -> pd.DataFrame:
class ElectricPlantDepreciationChangesFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transformer class for :ref:`electric_plant_depreciation_changes_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_electric_plant_depreciation_changes` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_PLANT_DEPRECIATION_CHANGES_FERC1
has_unique_record_ids: bool = False
@@ -4892,7 +4898,7 @@ def process_instant_xbrl(self, df: pd.DataFrame) -> pd.DataFrame:
class ElectricPlantDepreciationFunctionalFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transformer for :ref:`electric_plant_depreciation_functional_ferc1` table."""
+ """Transformer for :ref:`core_ferc1__yearly_electric_plant_depreciation_functional` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1
has_unique_record_ids: bool = False
@@ -4940,7 +4946,7 @@ def process_instant_xbrl(self, df: pd.DataFrame) -> pd.DataFrame:
class ElectricOperatingExpensesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`electric_operating_expenses_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_electric_operating_expenses` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_OPERATING_EXPENSES_FERC1
has_unique_record_ids: bool = False
@@ -4968,7 +4974,7 @@ def process_dbf(self, raw_dbf: pd.DataFrame) -> pd.DataFrame:
class ElectricOperatingRevenuesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`electric_operating_revenues_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_electric_operating_revenues` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_OPERATING_REVENUES_FERC1
has_unique_record_ids: bool = False
@@ -5033,7 +5039,7 @@ def targeted_drop_duplicates(self, df):
class CashFlowFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transform class for :ref:`cash_flow_ferc1` table."""
+ """Transform class for :ref:`core_ferc1__yearly_cash_flow` table."""
table_id: TableIdFerc1 = TableIdFerc1.CASH_FLOW_FERC1
has_unique_record_ids: bool = False
@@ -5139,7 +5145,7 @@ def process_xbrl_metadata(self, xbrl_metadata_json) -> pd.DataFrame:
class ElectricitySalesByRateScheduleFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transform class for :ref:`electricity_sales_by_rate_schedule_ferc1` table."""
+ """Transform class for :ref:`core_ferc1__yearly_electricity_sales_by_rate_schedule` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1
has_unique_record_ids: bool = False
@@ -5195,35 +5201,35 @@ def process_xbrl(
class OtherRegulatoryLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`other_regulatory_liabilities_ferc1` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_other_regulatory_liabilities` table."""
table_id: TableIdFerc1 = TableIdFerc1.OTHER_REGULATORY_LIABILITIES_FERC1
has_unique_record_ids = False
FERC1_TFR_CLASSES: Mapping[str, type[Ferc1AbstractTableTransformer]] = {
- "fuel_ferc1": FuelFerc1TableTransformer,
- "plants_small_ferc1": PlantsSmallFerc1TableTransformer,
- "plants_hydro_ferc1": PlantsHydroFerc1TableTransformer,
- "plant_in_service_ferc1": PlantInServiceFerc1TableTransformer,
- "plants_pumped_storage_ferc1": PlantsPumpedStorageFerc1TableTransformer,
- "transmission_statistics_ferc1": TransmissionStatisticsFerc1TableTransformer,
- "purchased_power_ferc1": PurchasedPowerFerc1TableTransformer,
- "electric_energy_sources_ferc1": ElectricEnergySourcesFerc1TableTransformer,
- "electric_energy_dispositions_ferc1": ElectricEnergyDispositionsFerc1TableTransformer,
- "utility_plant_summary_ferc1": UtilityPlantSummaryFerc1TableTransformer,
- "electric_operating_expenses_ferc1": ElectricOperatingExpensesFerc1TableTransformer,
- "balance_sheet_liabilities_ferc1": BalanceSheetLiabilitiesFerc1TableTransformer,
- "depreciation_amortization_summary_ferc1": DepreciationAmortizationSummaryFerc1TableTransformer,
- "balance_sheet_assets_ferc1": BalanceSheetAssetsFerc1TableTransformer,
- "income_statement_ferc1": IncomeStatementFerc1TableTransformer,
- "electric_plant_depreciation_changes_ferc1": ElectricPlantDepreciationChangesFerc1TableTransformer,
- "electric_plant_depreciation_functional_ferc1": ElectricPlantDepreciationFunctionalFerc1TableTransformer,
- "retained_earnings_ferc1": RetainedEarningsFerc1TableTransformer,
- "electric_operating_revenues_ferc1": ElectricOperatingRevenuesFerc1TableTransformer,
- "cash_flow_ferc1": CashFlowFerc1TableTransformer,
- "electricity_sales_by_rate_schedule_ferc1": ElectricitySalesByRateScheduleFerc1TableTransformer,
- "other_regulatory_liabilities_ferc1": OtherRegulatoryLiabilitiesFerc1TableTransformer,
+ "core_ferc1__yearly_fuel": FuelFerc1TableTransformer,
+ "core_ferc1__yearly_plants_small": PlantsSmallFerc1TableTransformer,
+ "core_ferc1__yearly_plants_hydro": PlantsHydroFerc1TableTransformer,
+ "core_ferc1__yearly_plant_in_service": PlantInServiceFerc1TableTransformer,
+ "core_ferc1__yearly_plants_pumped_storage": PlantsPumpedStorageFerc1TableTransformer,
+ "core_ferc1__yearly_transmission_statistics": TransmissionStatisticsFerc1TableTransformer,
+ "core_ferc1__yearly_purchased_power": PurchasedPowerFerc1TableTransformer,
+ "core_ferc1__yearly_electric_energy_sources": ElectricEnergySourcesFerc1TableTransformer,
+ "core_ferc1__yearly_electric_energy_dispositions": ElectricEnergyDispositionsFerc1TableTransformer,
+ "core_ferc1__yearly_utility_plant_summary": UtilityPlantSummaryFerc1TableTransformer,
+ "core_ferc1__yearly_electric_operating_expenses": ElectricOperatingExpensesFerc1TableTransformer,
+ "core_ferc1__yearly_balance_sheet_liabilities": BalanceSheetLiabilitiesFerc1TableTransformer,
+ "core_ferc1__yearly_depreciation_amortization_summary": DepreciationAmortizationSummaryFerc1TableTransformer,
+ "core_ferc1__yearly_balance_sheet_assets": BalanceSheetAssetsFerc1TableTransformer,
+ "core_ferc1__yearly_income_statement": IncomeStatementFerc1TableTransformer,
+ "core_ferc1__yearly_electric_plant_depreciation_changes": ElectricPlantDepreciationChangesFerc1TableTransformer,
+ "core_ferc1__yearly_electric_plant_depreciation_functional": ElectricPlantDepreciationFunctionalFerc1TableTransformer,
+ "core_ferc1__yearly_retained_earnings": RetainedEarningsFerc1TableTransformer,
+ "core_ferc1__yearly_electric_operating_revenues": ElectricOperatingRevenuesFerc1TableTransformer,
+ "core_ferc1__yearly_cash_flow": CashFlowFerc1TableTransformer,
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule": ElectricitySalesByRateScheduleFerc1TableTransformer,
+ "core_ferc1__yearly_other_regulatory_liabilities": OtherRegulatoryLiabilitiesFerc1TableTransformer,
}
@@ -5239,7 +5245,7 @@ def ferc1_transform_asset_factory(
This is a convenient way to create assets for tables that only depend on raw dbf,
raw xbrl instant and duration tables and xbrl metadata. For tables with additional
upstream dependencies, create a stand alone asset using an asset decorator. See
- the plants_steam_ferc1 asset.
+ the core_ferc1__yearly_plants_steam asset.
Args:
table_name: The name of the table to create an asset for.
@@ -5327,7 +5333,7 @@ def create_ferc1_transform_assets() -> list[AssetsDefinition]:
for table_name, tfr_class in FERC1_TFR_CLASSES.items():
# Bespoke exception. fuel must come before steam b/c fuel proportions are used to
# aid in FERC plant ID assignment.
- if table_name != "plants_steam_ferc1":
+ if table_name != "core_ferc1__yearly_plants_steam":
assets.append(ferc1_transform_asset_factory(table_name, tfr_class))
return assets
@@ -5336,31 +5342,31 @@ def create_ferc1_transform_assets() -> list[AssetsDefinition]:
@asset(io_manager_key="pudl_sqlite_io_manager")
-def plants_steam_ferc1(
+def core_ferc1__yearly_plants_steam(
clean_xbrl_metadata_json: dict[str, dict[str, list[dict[str, Any]]]],
raw_ferc1_dbf__f1_steam: pd.DataFrame,
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration: pd.DataFrame,
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant: pd.DataFrame,
- fuel_ferc1: pd.DataFrame,
+ core_ferc1__yearly_fuel: pd.DataFrame,
) -> pd.DataFrame:
- """Create the clean plants_steam_ferc1 table.
+ """Create the clean core_ferc1__yearly_plants_steam table.
Args:
clean_xbrl_metadata_json: XBRL metadata json for all tables.
raw_ferc1_dbf__f1_steam: Raw f1_steam table.
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration: raw XBRL duration table.
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant: raw XBRL instant table.
- fuel_ferc1: Transformed fuel_ferc1 table.
+ core_ferc1__yearly_fuel: Transformed core_ferc1__yearly_fuel table.
Returns:
- Clean plants_steam_ferc1 table.
+ Clean core_ferc1__yearly_plants_steam table.
"""
df = PlantsSteamFerc1TableTransformer(
- xbrl_metadata_json=clean_xbrl_metadata_json["plants_steam_ferc1"]
+ xbrl_metadata_json=clean_xbrl_metadata_json["core_ferc1__yearly_plants_steam"]
).transform(
raw_dbf=raw_ferc1_dbf__f1_steam,
raw_xbrl_instant=raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant,
raw_xbrl_duration=raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration,
- transformed_fuel=fuel_ferc1,
+ transformed_fuel=core_ferc1__yearly_fuel,
)
return convert_cols_dtypes(df, data_source="ferc1")
diff --git a/src/pudl/transform/params/__init__.py b/src/pudl/transform/params/__init__.py
index f0d5474238..e12c28d8b6 100644
--- a/src/pudl/transform/params/__init__.py
+++ b/src/pudl/transform/params/__init__.py
@@ -4,7 +4,7 @@
``ferc1`` or ``eia923``) and must define a dictionary named ``TRANSFORM_PARAMS``.
This dictionary is a nested data structure with 2 or 3 levels of keys:
-* The first level has keys that table names (e.g. ``plants_steam_ferc1``).
+* The first level has keys that table names (e.g. ``core_ferc1__yearly_plants_steam``).
* The second level has keys that are the names of transform functions (e.g.
``convert_units``).
* In the case of transform functions that operate on a single column and implement the
diff --git a/src/pudl/transform/params/ferc1.py b/src/pudl/transform/params/ferc1.py
index 5536e9ea5c..bb1e415c82 100644
--- a/src/pudl/transform/params/ferc1.py
+++ b/src/pudl/transform/params/ferc1.py
@@ -2155,7 +2155,7 @@
# Fully assembled set of FERC 1 transformation parameters
##############################################################################
TRANSFORM_PARAMS = {
- "fuel_ferc1": {
+ "core_ferc1__yearly_fuel": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2241,7 +2241,7 @@
},
],
},
- "plants_steam_ferc1": {
+ "core_ferc1__yearly_plants_steam": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2399,7 +2399,7 @@
},
],
},
- "plants_hydro_ferc1": {
+ "core_ferc1__yearly_plants_hydro": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2537,7 +2537,7 @@
},
],
},
- "plants_small_ferc1": {
+ "core_ferc1__yearly_plants_small": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2635,7 +2635,7 @@
},
],
},
- "plant_in_service_ferc1": {
+ "core_ferc1__yearly_plant_in_service": {
"rename_columns_ferc1": {
"xbrl": {
"columns": {
@@ -2725,7 +2725,7 @@
"align_row_numbers_dbf": {"dbf_table_names": ["f1_plant_in_srvce"]},
"reconcile_table_calculations": {"column_to_check": "ending_balance"},
},
- "plants_pumped_storage_ferc1": {
+ "core_ferc1__yearly_plants_pumped_storage": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2870,7 +2870,7 @@
},
],
},
- "purchased_power_ferc1": {
+ "core_ferc1__yearly_purchased_power": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2948,7 +2948,7 @@
}
],
},
- "transmission_statistics_ferc1": {
+ "core_ferc1__yearly_transmission_statistics": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3030,7 +3030,7 @@
}
],
},
- "electric_energy_sources_ferc1": {
+ "core_ferc1__yearly_electric_energy_sources": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3107,7 +3107,7 @@
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_elctrc_erg_acct"]},
},
- "electric_energy_dispositions_ferc1": {
+ "core_ferc1__yearly_electric_energy_dispositions": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3172,7 +3172,7 @@
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_elctrc_erg_acct"]},
},
- "utility_plant_summary_ferc1": {
+ "core_ferc1__yearly_utility_plant_summary": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3325,7 +3325,7 @@
"subtotal_column": "utility_type",
},
},
- "balance_sheet_assets_ferc1": {
+ "core_ferc1__yearly_balance_sheet_assets": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3366,7 +3366,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["ending_balance", "starting_balance"],
- "table_name": "balance_sheet_assets_ferc1",
+ "table_name": "core_ferc1__yearly_balance_sheet_assets",
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_comp_balance_db"]},
"merge_xbrl_metadata": {
@@ -3375,7 +3375,7 @@
},
"reconcile_table_calculations": {"column_to_check": "ending_balance"},
},
- "balance_sheet_liabilities_ferc1": {
+ "core_ferc1__yearly_balance_sheet_liabilities": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3418,7 +3418,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["ending_balance", "starting_balance"],
- "table_name": "balance_sheet_liabilities_ferc1",
+ "table_name": "core_ferc1__yearly_balance_sheet_liabilities",
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_bal_sheet_cr"]},
"merge_xbrl_metadata": {
@@ -3427,7 +3427,7 @@
},
"reconcile_table_calculations": {"column_to_check": "ending_balance"},
},
- "depreciation_amortization_summary_ferc1": {
+ "core_ferc1__yearly_depreciation_amortization_summary": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3501,7 +3501,7 @@
"subtotal_column": "plant_function",
},
},
- "electric_operating_revenues_ferc1": {
+ "core_ferc1__yearly_electric_operating_revenues": {
"rename_columns_ferc1": {
"duration_xbrl": {
"columns": {
@@ -3632,7 +3632,7 @@
],
"reconcile_table_calculations": {"column_to_check": "dollar_value"},
},
- "retained_earnings_ferc1": {
+ "core_ferc1__yearly_retained_earnings": {
"rename_columns_ferc1": {
"duration_xbrl": {
"columns": {
@@ -3711,7 +3711,7 @@
"calculation_tolerance": 0.08,
},
},
- "income_statement_ferc1": {
+ "core_ferc1__yearly_income_statement": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3843,7 +3843,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["dollar_value"],
- "table_name": "income_statement_ferc1",
+ "table_name": "core_ferc1__yearly_income_statement",
},
"align_row_numbers_dbf": {
"dbf_table_names": ["f1_income_stmnt", "f1_incm_stmnt_2"]
@@ -3876,7 +3876,7 @@
"subtotal_column": "utility_type",
},
},
- "electric_plant_depreciation_changes_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_changes": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3979,7 +3979,7 @@
"subtotal_column": "depreciation_type",
},
},
- "electric_plant_depreciation_functional_ferc1": {
+ "core_ferc1__yearly_electric_plant_depreciation_functional": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4080,7 +4080,7 @@
"subtotal_column": "plant_status",
},
},
- "cash_flow_ferc1": {
+ "core_ferc1__yearly_cash_flow": {
"rename_columns_ferc1": {
"instant_xbrl": {
"columns": {
@@ -4201,7 +4201,7 @@
"on": "amount_type",
},
},
- "electric_operating_expenses_ferc1": {
+ "core_ferc1__yearly_electric_operating_expenses": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4418,7 +4418,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["dollar_value"],
- "table_name": "electric_operating_expenses_ferc1",
+ "table_name": "core_ferc1__yearly_electric_operating_expenses",
},
"merge_xbrl_metadata": {
"rename_columns": {"xbrl_factoid": "expense_type"},
@@ -4426,7 +4426,7 @@
},
"reconcile_table_calculations": {"column_to_check": "dollar_value"},
},
- "other_regulatory_liabilities_ferc1": {
+ "core_ferc1__yearly_other_regulatory_liabilities": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4474,7 +4474,7 @@
},
],
},
- "electricity_sales_by_rate_schedule_ferc1": {
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
diff --git a/src/pudl/validate.py b/src/pudl/validate.py
index 3fe248f680..a7ca67793c 100644
--- a/src/pudl/validate.py
+++ b/src/pudl/validate.py
@@ -655,7 +655,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
###############################################################################
-plants_steam_ferc1_capacity = [
+core_ferc1__yearly_plants_steam_capacity = [
{
"title": "All Plant Capacity",
"query": "",
@@ -678,7 +678,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-plants_steam_ferc1_expenses = [
+core_ferc1__yearly_plants_steam_expenses = [
{
"title": "Capital Expenses (median)",
"query": "",
@@ -741,7 +741,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-plants_steam_ferc1_capacity_ratios = [
+core_ferc1__yearly_plants_steam_capacity_ratios = [
{
"title": "Capacity Factor (Tails)",
"query": "capacity_factor>0.05",
@@ -844,7 +844,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-plants_steam_ferc1_connected_hours = [
+core_ferc1__yearly_plants_steam_connected_hours = [
{ # Currently failing b/c ~10% of plants have way more than 8760 hours...
"title": "Plant Hours Connected (min/max)",
"query": "",
@@ -857,7 +857,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-plants_steam_ferc1_self = [
+core_ferc1__yearly_plants_steam_self = [
{
"title": "All Plant Capacity",
"query": "",
diff --git a/test/integration/datasette_metadata_test.py b/test/integration/datasette_metadata_test.py
index dfd0f0838f..978cacafec 100644
--- a/test/integration/datasette_metadata_test.py
+++ b/test/integration/datasette_metadata_test.py
@@ -38,7 +38,7 @@ def test_datasette_metadata_to_yml(ferc1_engine_xbrl):
== "https://github.com/catalyst-cooperative/pudl"
)
assert (
- parsed_metadata["databases"]["pudl"]["tables"]["plants_entity_eia"][
+ parsed_metadata["databases"]["pudl"]["tables"]["core_eia__entity_plants"][
"label_column"
]
== "plant_name_eia"
diff --git a/test/integration/etl_test.py b/test/integration/etl_test.py
index 613834f8df..ff2b3193ff 100644
--- a/test/integration/etl_test.py
+++ b/test/integration/etl_test.py
@@ -45,13 +45,15 @@ def test_ferc1_xbrl2sqlite(ferc1_engine_xbrl, ferc1_xbrl_taxonomy_metadata):
# Has the metadata we've read in from JSON contain a long list of entities?
assert isinstance(ferc1_xbrl_taxonomy_metadata, dict) # nosec: B101
- assert "plants_steam_ferc1" in ferc1_xbrl_taxonomy_metadata.keys() # nosec: B101
+ assert (
+ "core_ferc1__yearly_plants_steam" in ferc1_xbrl_taxonomy_metadata.keys()
+ ) # nosec: B101
assert len(ferc1_xbrl_taxonomy_metadata) > 10 # nosec: B101
assert len(ferc1_xbrl_taxonomy_metadata) < 100 # nosec: B101
# Can we normalize that list of entities and find data in it that we expect?
df = pd.json_normalize(
- ferc1_xbrl_taxonomy_metadata["plant_in_service_ferc1"]["instant"]
+ ferc1_xbrl_taxonomy_metadata["core_ferc1__yearly_plant_in_service"]["instant"]
)
assert ( # nosec: B101
df.loc[
diff --git a/test/integration/output_test.py b/test/integration/output_test.py
index 9439d405dd..602ebc25ce 100644
--- a/test/integration/output_test.py
+++ b/test/integration/output_test.py
@@ -47,15 +47,15 @@ def test_nuclear_fraction(fast_out, df_name, expected_nuke_fraction, tolerance):
"df_name",
[
"pu_ferc1",
- "fuel_ferc1",
- "plants_steam_ferc1",
+ "core_ferc1__yearly_fuel",
+ "core_ferc1__yearly_plants_steam",
"fbp_ferc1",
"plants_all_ferc1",
- "plants_hydro_ferc1",
- "plants_pumped_storage_ferc1",
- "plants_small_ferc1",
- "purchased_power_ferc1",
- "plant_in_service_ferc1",
+ "core_ferc1__yearly_plants_hydro",
+ "core_ferc1__yearly_plants_pumped_storage",
+ "core_ferc1__yearly_plants_small",
+ "core_ferc1__yearly_purchased_power",
+ "core_ferc1__yearly_plant_in_service",
],
)
def test_ferc1_outputs(fast_out, df_name):
diff --git a/test/unit/harvest_test.py b/test/unit/harvest_test.py
index 6b6a158b3e..07488ed193 100644
--- a/test/unit/harvest_test.py
+++ b/test/unit/harvest_test.py
@@ -179,7 +179,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
),
],
),
- generation_eia923=pd.DataFrame(
+ core_eia923__monthly_generation=pd.DataFrame(
columns=[
"plant_id_eia",
"generator_id",
@@ -204,7 +204,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(3, "1", "2018-12-01", -494.0, "ST", "T", "SOCO"),
],
),
- generators_eia860=pd.DataFrame(
+ core_eia860__scd_generators=pd.DataFrame(
columns=[
"plant_id_eia",
"generator_id",
@@ -223,7 +223,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(3, "2", "2018-01-01", 50, "ST", 195, "Alabama Power Co", "B", "AL"),
],
),
- boiler_generator_assn_eia860=pd.DataFrame(
+ core_eia860__assn_boiler_generator=pd.DataFrame(
columns=["plant_id_eia", "generator_id", "report_year", "boiler_id"],
data=[
(3, "1", "2018-01-01", "1ST"),
@@ -279,7 +279,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
},
},
{
- "name": "generators_eia860",
+ "name": "core_eia860__scd_generators",
"harvest": {"harvest": True},
"schema": {
"fields": ["plant_id_eia", "generator_id", "report_year", "capacity_mw"],
@@ -303,7 +303,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
},
},
{
- "name": "generation_eia923",
+ "name": "core_eia923__monthly_generation",
"harvest": {"harvest": False},
"schema": {
"fields": [
@@ -324,7 +324,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
},
},
{
- "name": "boiler_generator_assn_eia860",
+ "name": "core_eia860__assn_boiler_generator",
"harvest": {"harvest": True},
"schema": {
"fields": ["plant_id_eia", "generator_id", "report_year", "boiler_id"],
@@ -359,7 +359,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(4, "b", np.nan, np.nan),
],
),
- generators_eia860=pd.DataFrame(
+ core_eia860__scd_generators=pd.DataFrame(
columns=["plant_id_eia", "generator_id", "report_year", "capacity_mw"],
data=[
(3, "1", "2017-01-01", 153.1),
@@ -387,7 +387,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(3989, "2018-01-01", "CO", "Boulder"),
],
),
- generation_eia923=pd.DataFrame(
+ core_eia923__monthly_generation=pd.DataFrame(
columns=["plant_id_eia", "generator_id", "report_month", "net_generation_mwh"],
data=[
(3, "1", "2018-01-01", 10738.0),
@@ -414,7 +414,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(3989, "2018-01-01", "CO", "Boulder", 66666),
],
),
- boiler_generator_assn_eia860=pd.DataFrame(
+ core_eia860__assn_boiler_generator=pd.DataFrame(
columns=["plant_id_eia", "generator_id", "report_year", "boiler_id"],
data=[
(3, "1", "2018-01-01", "1ST"),
diff --git a/test/unit/transform/ferc1_test.py b/test/unit/transform/ferc1_test.py
index ad3e5fc676..69960ded41 100644
--- a/test/unit/transform/ferc1_test.py
+++ b/test/unit/transform/ferc1_test.py
@@ -281,7 +281,8 @@ def test_drop_duplicate_rows_dbf():
)
)
params = DropDuplicateRowsDbf(
- table_name="balance_sheet_assets_ferc1", data_columns=["data_col1", "data_col2"]
+ table_name="core_ferc1__yearly_balance_sheet_assets",
+ data_columns=["data_col1", "data_col2"],
)
df_out = drop_duplicate_rows_dbf(df, params=params).reset_index(drop=True)
df_expected = pd.read_csv(
diff --git a/test/unit/transform/glue_test.py b/test/unit/transform/glue_test.py
index 5be88015f7..a2f454a2a1 100644
--- a/test/unit/transform/glue_test.py
+++ b/test/unit/transform/glue_test.py
@@ -78,9 +78,9 @@ def test_epacamd_eia_subplant_ids():
epacamd_eia_subplant_ids_got = glue_assets.epacamd_eia_subplant_ids(
epacamd_eia_unique=epacamd_eia_test,
- generators_eia860=generators_entity_eia_test,
+ core_eia860__scd_generators=generators_entity_eia_test,
emissions_unit_ids_epacems=emissions_unit_ids_epacems_test,
- boiler_generator_assn_eia860=boiler_generator_assn_eia860_test,
+ core_eia860__assn_boiler_generator=boiler_generator_assn_eia860_test,
)
pd.testing.assert_frame_equal(
diff --git a/test/validate/eia860_test.py b/test/validate/eia860_test.py
index 0009e477ff..68614c2311 100644
--- a/test/validate/eia860_test.py
+++ b/test/validate/eia860_test.py
@@ -189,7 +189,7 @@ def test_nuclear_units_are_generators(pudl_out_eia, live_dbs):
# Drop all nuclear units that don't have a nuclear_unit_id.
all_nuke_gf = (
pd.read_sql(
- "generation_fuel_nuclear_eia923",
+ "core_eia923__monthly_generation_fuel_nuclear",
pudl_out_eia.pudl_engine,
columns=[
"plant_id_eia",
diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py
index 8febad37ea..b7e25b8089 100644
--- a/test/validate/eia_test.py
+++ b/test/validate/eia_test.py
@@ -108,22 +108,25 @@ def test_minmax_rows(
@pytest.mark.parametrize(
"df_name,unique_subset",
[
- ("bf_eia923", Resource.from_id("boiler_fuel_eia923").schema.primary_key),
+ (
+ "bf_eia923",
+ Resource.from_id("core_eia923__monthly_boiler_fuel").schema.primary_key,
+ ),
(
"bga_eia860",
- Resource.from_id("boiler_generator_assn_eia860").schema.primary_key,
+ Resource.from_id("core_eia860__assn_boiler_generator").schema.primary_key,
),
(
"boil_eia860",
- Resource.from_id("boilers_eia860").schema.primary_key,
+ Resource.from_id("core_eia860__scd_boilers").schema.primary_key,
),
(
"gen_eia923",
- Resource.from_id("generation_eia923").schema.primary_key,
+ Resource.from_id("core_eia923__monthly_generation").schema.primary_key,
),
(
"gens_eia860",
- Resource.from_id("generators_eia860").schema.primary_key,
+ Resource.from_id("core_eia860__scd_generators").schema.primary_key,
),
(
"gf_eia923",
@@ -133,11 +136,11 @@ def test_minmax_rows(
),
(
"own_eia860",
- Resource.from_id("ownership_eia860").schema.primary_key,
+ Resource.from_id("core_eia860__scd_ownership").schema.primary_key,
),
(
"plants_eia860",
- Resource.from_id("plants_eia860").schema.primary_key,
+ Resource.from_id("core_eia860__scd_plants").schema.primary_key,
),
(
"pu_eia860",
@@ -145,7 +148,7 @@ def test_minmax_rows(
),
(
"utils_eia860",
- Resource.from_id("utilities_eia860").schema.primary_key,
+ Resource.from_id("core_eia860__scd_utilities").schema.primary_key,
),
(
"denorm_emissions_control_equipment_eia860",
@@ -156,24 +159,32 @@ def test_minmax_rows(
),
),
(
- "emissions_control_equipment_eia860",
- (Resource.from_id("emissions_control_equipment_eia860").schema.primary_key),
+ "core_eia860__scd_emissions_control_equipment",
+ (
+ Resource.from_id(
+ "core_eia860__scd_emissions_control_equipment"
+ ).schema.primary_key
+ ),
),
(
"boiler_emissions_control_equipment_assn_eia860",
(
Resource.from_id(
- "boiler_emissions_control_equipment_assn_eia860"
+ "core_eia860__annual_boiler_emissions_control_equipment_assn"
).schema.primary_key
),
),
(
"boiler_cooling_assn_eia860",
- (Resource.from_id("boiler_cooling_assn_eia860").schema.primary_key),
+ (Resource.from_id("core_eia860__assn_boiler_cooling").schema.primary_key),
),
(
"boiler_stack_flue_assn_eia860",
- (Resource.from_id("boiler_stack_flue_assn_eia860").schema.primary_key),
+ (
+ Resource.from_id(
+ "core_eia860__assn_boiler_stack_flue"
+ ).schema.primary_key
+ ),
),
],
)
diff --git a/test/validate/ferc1_test.py b/test/validate/ferc1_test.py
index 5e49a7f0c6..f83eec9991 100644
--- a/test/validate/ferc1_test.py
+++ b/test/validate/ferc1_test.py
@@ -18,24 +18,24 @@
# unique record ID. But we should parameterize the has_unique_record_ids class
# attributes in the FERC classes.
non_unique_record_id_tables = [
- "plant_in_service_ferc1",
- "purchased_power_ferc1",
- "electric_energy_sources_ferc1",
- "electric_energy_dispositions_ferc1",
- "utility_plant_summary_ferc1",
- "transmission_statistics_ferc1",
- "balance_sheet_liabilities_ferc1",
- "balance_sheet_assets_ferc1",
- "income_statement_ferc1",
- "depreciation_amortization_summary_ferc1",
- "electric_plant_depreciation_changes_ferc1",
- "electric_plant_depreciation_functional_ferc1",
- "electric_operating_expenses_ferc1",
- "cash_flow_ferc1",
- "retained_earnings_ferc1",
- "electric_operating_revenues_ferc1",
- "other_regulatory_liabilities_ferc1",
- "electricity_sales_by_rate_schedule_ferc1",
+ "core_ferc1__yearly_plant_in_service",
+ "core_ferc1__yearly_purchased_power",
+ "core_ferc1__yearly_electric_energy_sources",
+ "core_ferc1__yearly_electric_energy_dispositions",
+ "core_ferc1__yearly_utility_plant_summary",
+ "core_ferc1__yearly_transmission_statistics",
+ "core_ferc1__yearly_balance_sheet_liabilities",
+ "core_ferc1__yearly_balance_sheet_assets",
+ "core_ferc1__yearly_income_statement",
+ "core_ferc1__yearly_depreciation_amortization_summary",
+ "core_ferc1__yearly_electric_plant_depreciation_changes",
+ "core_ferc1__yearly_electric_plant_depreciation_functional",
+ "core_ferc1__yearly_electric_operating_expenses",
+ "core_ferc1__yearly_cash_flow",
+ "core_ferc1__yearly_retained_earnings",
+ "core_ferc1__yearly_electric_operating_revenues",
+ "core_ferc1__yearly_other_regulatory_liabilities",
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule",
]
unique_record_tables = [
t
@@ -61,15 +61,15 @@ def test_record_id_dupes(pudl_engine, table_name):
"df_name,cols",
[
("fbp_ferc1", "all"),
- ("fuel_ferc1", "all"),
- ("plant_in_service_ferc1", "all"),
+ ("core_ferc1__yearly_fuel", "all"),
+ ("core_ferc1__yearly_plant_in_service", "all"),
("plants_all_ferc1", "all"),
- ("plants_hydro_ferc1", "all"),
- ("plants_pumped_storage_ferc1", "all"),
- ("plants_small_ferc1", "all"),
- ("plants_steam_ferc1", "all"),
+ ("core_ferc1__yearly_plants_hydro", "all"),
+ ("core_ferc1__yearly_plants_pumped_storage", "all"),
+ ("core_ferc1__yearly_plants_small", "all"),
+ ("core_ferc1__yearly_plants_steam", "all"),
("pu_ferc1", "all"),
- ("purchased_power_ferc1", "all"),
+ ("core_ferc1__yearly_purchased_power", "all"),
],
)
def test_no_null_cols_ferc1(pudl_out_ferc1, live_dbs, cols, df_name):
@@ -85,15 +85,15 @@ def test_no_null_cols_ferc1(pudl_out_ferc1, live_dbs, cols, df_name):
"df_name,expected_rows",
[
("fbp_ferc1", 25_421),
- ("fuel_ferc1", 48_841),
- ("plant_in_service_ferc1", 311_986),
+ ("core_ferc1__yearly_fuel", 48_841),
+ ("core_ferc1__yearly_plant_in_service", 311_986),
("plants_all_ferc1", 54_284),
- ("plants_hydro_ferc1", 6_796),
- ("plants_pumped_storage_ferc1", 544),
- ("plants_small_ferc1", 16_235),
- ("plants_steam_ferc1", 30_709),
+ ("core_ferc1__yearly_plants_hydro", 6_796),
+ ("core_ferc1__yearly_plants_pumped_storage", 544),
+ ("core_ferc1__yearly_plants_small", 16_235),
+ ("core_ferc1__yearly_plants_steam", 30_709),
("pu_ferc1", 7_425),
- ("purchased_power_ferc1", 197_523),
+ ("core_ferc1__yearly_purchased_power", 197_523),
],
)
def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
@@ -127,7 +127,7 @@ def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
("pu_ferc1", ["utility_id_ferc1", "plant_name_ferc1"]),
("fbp_ferc1", ["report_year", "utility_id_ferc1", "plant_name_ferc1"]),
(
- "plants_hydro_ferc1",
+ "core_ferc1__yearly_plants_hydro",
[
"report_year",
"utility_id_ferc1",
@@ -136,7 +136,7 @@ def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
],
),
(
- "plants_pumped_storage_ferc1",
+ "core_ferc1__yearly_plants_pumped_storage",
[
"report_year",
"utility_id_ferc1",
@@ -145,7 +145,7 @@ def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
],
),
(
- "plant_in_service_ferc1",
+ "core_ferc1__yearly_plant_in_service",
["report_year", "utility_id_ferc1", "ferc_account_label"],
),
],
diff --git a/test/validate/fuel_ferc1_test.py b/test/validate/fuel_ferc1_test.py
index 646e6763a0..9644ba98be 100644
--- a/test/validate/fuel_ferc1_test.py
+++ b/test/validate/fuel_ferc1_test.py
@@ -50,7 +50,7 @@ def test_fuel_ferc1_trivial(pudl_out_ferc1):
],
)
def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
- """Test distributions of reported plants_steam_ferc1 columns."""
+ """Test distributions of reported core_ferc1__yearly_plants_steam columns."""
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
for case in cases:
diff --git a/test/validate/plants_steam_ferc1_test.py b/test/validate/plants_steam_ferc1_test.py
index 9b485a4782..17a04b5eca 100644
--- a/test/validate/plants_steam_ferc1_test.py
+++ b/test/validate/plants_steam_ferc1_test.py
@@ -17,18 +17,20 @@
@pytest.mark.parametrize(
"cases",
[
- pytest.param(pv.plants_steam_ferc1_capacity, id="capacity"),
- pytest.param(pv.plants_steam_ferc1_expenses, id="expenses"),
- pytest.param(pv.plants_steam_ferc1_capacity_ratios, id="capacity_ratios"),
+ pytest.param(pv.core_ferc1__yearly_plants_steam_capacity, id="capacity"),
+ pytest.param(pv.core_ferc1__yearly_plants_steam_expenses, id="expenses"),
pytest.param(
- pv.plants_steam_ferc1_connected_hours,
+ pv.core_ferc1__yearly_plants_steam_capacity_ratios, id="capacity_ratios"
+ ),
+ pytest.param(
+ pv.core_ferc1__yearly_plants_steam_connected_hours,
id="connected_hours",
marks=pytest.mark.xfail(reason="FERC 1 data reporting errors."),
),
],
)
def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
- """Test distributions of reported plants_steam_ferc1 columns."""
+ """Test distributions of reported core_ferc1__yearly_plants_steam columns."""
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
validate_df = pd.read_sql(
@@ -57,7 +59,7 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
peak_demand_ratio=lambda x: x.peak_demand_mw / x.capacity_mw,
capability_ratio=lambda x: x.plant_capability_mw / x.capacity_mw,
)
- for args in pv.plants_steam_ferc1_self:
+ for args in pv.core_ferc1__yearly_plants_steam_self:
pudl.validate.vs_self(validate_df, **args)
From 2bb53f5104686d80615c614135f4bdf1f9804be2 Mon Sep 17 00:00:00 2001
From: thinky
Date: Thu, 7 Sep 2023 15:32:47 -0400
Subject: [PATCH 05/70] Fix integration tests
---
src/pudl/metadata/classes.py | 4 ++--
test/integration/output_test.py | 14 +++++++-------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py
index eef0f44f9f..a45899ea29 100644
--- a/src/pudl/metadata/classes.py
+++ b/src/pudl/metadata/classes.py
@@ -1929,10 +1929,10 @@ class DatasetteMetadata(Base):
resources: list[Resource] = Package.from_resource_ids().resources
xbrl_resources: dict[str, list[Resource]] = {}
label_columns: dict[str, str] = {
- "plants_entity_eia": "plant_name_eia",
+ "core_eia__entity_plants": "plant_name_eia",
"plants_ferc1": "plant_name_ferc1",
"plants_pudl": "plant_name_pudl",
- "utilities_entity_eia": "utility_name_eia",
+ "core_eia__entity_utilities": "utility_name_eia",
"utilities_ferc1": "utility_name_ferc1",
"utilities_pudl": "utility_name_pudl",
}
diff --git a/test/integration/output_test.py b/test/integration/output_test.py
index 602ebc25ce..9439d405dd 100644
--- a/test/integration/output_test.py
+++ b/test/integration/output_test.py
@@ -47,15 +47,15 @@ def test_nuclear_fraction(fast_out, df_name, expected_nuke_fraction, tolerance):
"df_name",
[
"pu_ferc1",
- "core_ferc1__yearly_fuel",
- "core_ferc1__yearly_plants_steam",
+ "fuel_ferc1",
+ "plants_steam_ferc1",
"fbp_ferc1",
"plants_all_ferc1",
- "core_ferc1__yearly_plants_hydro",
- "core_ferc1__yearly_plants_pumped_storage",
- "core_ferc1__yearly_plants_small",
- "core_ferc1__yearly_purchased_power",
- "core_ferc1__yearly_plant_in_service",
+ "plants_hydro_ferc1",
+ "plants_pumped_storage_ferc1",
+ "plants_small_ferc1",
+ "purchased_power_ferc1",
+ "plant_in_service_ferc1",
],
)
def test_ferc1_outputs(fast_out, df_name):
From 0cd5e9d993740d41e5c3f69b33a326fa596e2315 Mon Sep 17 00:00:00 2001
From: thinky
Date: Thu, 7 Sep 2023 15:40:50 -0400
Subject: [PATCH 06/70] Fix alembic
---
....py => 947f3413295c_rename_core_assets.py} | 2340 ++++++++---------
1 file changed, 1170 insertions(+), 1170 deletions(-)
rename migrations/versions/{de730f77e8c3_rename_static_tables.py => 947f3413295c_rename_core_assets.py} (92%)
diff --git a/migrations/versions/de730f77e8c3_rename_static_tables.py b/migrations/versions/947f3413295c_rename_core_assets.py
similarity index 92%
rename from migrations/versions/de730f77e8c3_rename_static_tables.py
rename to migrations/versions/947f3413295c_rename_core_assets.py
index 6aa5b85436..b92d7366e0 100644
--- a/migrations/versions/de730f77e8c3_rename_static_tables.py
+++ b/migrations/versions/947f3413295c_rename_core_assets.py
@@ -1,8 +1,8 @@
-"""Rename static tables
+"""rename core assets
-Revision ID: de730f77e8c3
+Revision ID: 947f3413295c
Revises:
-Create Date: 2023-08-30 15:45:30.233356
+Create Date: 2023-09-07 15:39:22.138031
"""
from alembic import op
@@ -10,7 +10,7 @@
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
-revision = 'de730f77e8c3'
+revision = '947f3413295c'
down_revision = None
branch_labels = None
depends_on = None
@@ -237,10 +237,23 @@ def upgrade() -> None:
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
)
- op.create_table('core_ferc1__codes_accounts',
- sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
- sa.Column('ferc_account_description', sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc1__codes_accounts'))
+ op.create_table('core_eia__entity_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_eia__entity_plants'))
+ )
+ op.create_table('core_eia__entity_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
)
op.create_table('core_ferc1__codes_power_purchase_types',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
@@ -248,6 +261,11 @@ def upgrade() -> None:
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
)
+ op.create_table('core_ferc__codes_accounts',
+ sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
+ sa.Column('ferc_account_description', sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc__codes_accounts'))
+ )
op.create_table('core_pudl__codes_data_maturities',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
@@ -263,13 +281,13 @@ def upgrade() -> None:
op.create_table('core_pudl__codes_subdivisions',
sa.Column('country_code', sa.Enum('USA', 'CAN'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
- sa.Column('subdivision_code', sa.Enum('AK', 'MB', 'OR', 'WA', 'AS', 'DC', 'DE', 'ME', 'MT', 'AR', 'QC', 'WI', 'UT', 'VI', 'RI', 'OH', 'IN', 'NJ', 'NU', 'TX', 'VT', 'NL', 'NS', 'OK', 'NC', 'BC', 'NV', 'AL', 'LA', 'CO', 'NH', 'CT', 'AB', 'MA', 'NB', 'YT', 'SC', 'WY', 'FL', 'KY', 'ND', 'NT', 'WV', 'MO', 'NM', 'NY', 'PA', 'PE', 'TN', 'VA', 'CA', 'AZ', 'ON', 'PR', 'IL', 'MN', 'MS', 'KS', 'HI', 'GU', 'NE', 'SD', 'IA', 'ID', 'MD', 'SK', 'MP', 'GA', 'MI'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_code', sa.Enum('ME', 'WV', 'LA', 'AR', 'AZ', 'MA', 'NU', 'TX', 'WY', 'AB', 'MO', 'OR', 'DC', 'NC', 'SD', 'PE', 'NL', 'GU', 'IA', 'MS', 'NM', 'FL', 'HI', 'NJ', 'DE', 'SC', 'VA', 'MN', 'YT', 'KS', 'ON', 'SK', 'PR', 'ND', 'NB', 'ID', 'IL', 'RI', 'KY', 'MI', 'BC', 'GA', 'VT', 'OK', 'TN', 'MT', 'IN', 'CT', 'NT', 'VI', 'MB', 'WI', 'QC', 'CO', 'NY', 'CA', 'AS', 'OH', 'AL', 'NH', 'UT', 'NE', 'MP', 'NV', 'WA', 'MD', 'PA', 'AK', 'NS'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
- sa.Column('division_code_us_census', sa.Enum('WNC', 'SAT', 'NEW', 'PCN', 'MAT', 'PCC', 'ESC', 'WSC', 'ENC', 'MTN'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('division_code_us_census', sa.Enum('MTN', 'WSC', 'WNC', 'ESC', 'NEW', 'MAT', 'PCC', 'ENC', 'PCN', 'SAT'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
@@ -292,19 +310,6 @@ def upgrade() -> None:
sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_fuel_receipts_costs_aggs_eia'))
)
- op.create_table('plants_entity_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_plants_entity_eia'))
- )
op.create_table('plants_pudl',
sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
@@ -323,11 +328,6 @@ def upgrade() -> None:
sa.Column('eia_code', sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_respondent_id_ferc714'))
)
- op.create_table('utilities_entity_eia',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_utilities_entity_eia'))
- )
op.create_table('utilities_pudl',
sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
@@ -359,16 +359,58 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_advanced_metering_infrastructure_eia861_data_maturity_core_pudl__codes_data_maturities')),
sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_advanced_metering_infrastructure_eia861'))
)
- op.create_table('boilers_entity_eia',
+ op.create_table('core_eia860__scd_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_boilers_entity_eia_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_boilers_entity_eia_plant_id_eia_plants_entity_eia')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_boilers_entity_eia'))
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_core_eia860__scd_emissions_control_equipment'))
+ )
+ op.create_table('core_eia860__scd_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
)
- op.create_table('coalmine_eia923',
+ op.create_table('core_eia923__entity_coalmine',
sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
@@ -376,9 +418,85 @@ def upgrade() -> None:
sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_coalmine_eia923_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_coalmine_eia923_mine_type_code_core_eia__codes_coalmine_types')),
- sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_coalmine_eia923'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel_nuclear',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
+ )
+ op.create_table('core_eia__entity_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
+ )
+ op.create_table('core_eia__entity_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
)
op.create_table('demand_hourly_pa_ferc714',
sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
@@ -495,9 +613,9 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_eia_plants_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_denorm_emissions_control_equipment_eia860'))
)
@@ -542,11 +660,11 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_plants_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_core_eia__entity_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_utilities_pudl'))
)
op.create_table('denorm_fuel_receipts_costs_monthly_eia923',
@@ -570,9 +688,9 @@ def upgrade() -> None:
sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
sa.Column('moisture_content_pct', sa.Float(), nullable=True),
sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_plants_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_core_eia__entity_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_utilities_pudl'))
)
op.create_table('denorm_generation_fuel_combined_eia923',
@@ -597,10 +715,10 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_eia_plants_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_eia_core_eia__entity_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_eia923'))
)
@@ -622,10 +740,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_plants_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_core_eia__entity_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_monthly_eia923'))
)
@@ -691,27 +809,6 @@ def upgrade() -> None:
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_dynamic_pricing_eia861_data_maturity_core_pudl__codes_data_maturities'))
)
- op.create_table('emissions_control_equipment_eia860',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_emissions_control_equipment_eia860_plant_id_eia_plants_entity_eia')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_emissions_control_equipment_eia860'))
- )
op.create_table('energy_efficiency_eia861',
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
@@ -749,73 +846,6 @@ def upgrade() -> None:
sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['respondent_id_ferc714.respondent_id_ferc714'], name=op.f('fk_fipsified_respondents_ferc714_respondent_id_ferc714_respondent_id_ferc714'))
)
- op.create_table('generation_fuel_eia923',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generation_fuel_eia923_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_generation_fuel_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_generation_fuel_eia923_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_generation_fuel_eia923'))
- )
- op.create_table('generation_fuel_nuclear_eia923',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generation_fuel_nuclear_eia923_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_nuclear_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_generation_fuel_nuclear_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_generation_fuel_nuclear_eia923_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_nuclear_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_generation_fuel_nuclear_eia923'))
- )
- op.create_table('generators_entity_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_generators_entity_eia_plant_id_eia_plants_entity_eia')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_generators_entity_eia'))
- )
op.create_table('green_pricing_eia861',
sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
@@ -837,7 +867,7 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_heat_rate_by_unit_monthly_plant_id_eia_plants_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_heat_rate_by_unit_monthly_plant_id_eia_core_eia__entity_plants')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk_heat_rate_by_unit_monthly'))
)
op.create_table('mergers_eia861',
@@ -1039,36 +1069,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_utilities_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_utilities_eia'))
)
- op.create_table('utilities_eia860',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utilities_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_utilities_eia860_utility_id_eia_utilities_entity_eia')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_utilities_eia860'))
- )
op.create_table('utilities_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
@@ -1123,48 +1123,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_utility_plant_assn_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_utility_plant_assn'))
)
- op.create_table('balance_sheet_assets_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the balance_sheet_assets_ferc1 table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_balance_sheet_assets_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_balance_sheet_assets_ferc1'))
- )
- op.create_table('balance_sheet_liabilities_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the balance_sheet_liabilities_ferc1 table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_balance_sheet_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_balance_sheet_liabilities_ferc1'))
- )
- op.create_table('boiler_fuel_eia923',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_boiler_fuel_eia923_plant_id_eia_boilers_entity_eia')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_boiler_fuel_eia923'))
- )
op.create_table('capacity_factor_by_generator_monthly',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -1172,176 +1130,197 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_capacity_factor_by_generator_monthly_plant_id_eia_generators_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_capacity_factor_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_capacity_factor_by_generator_monthly'))
)
- op.create_table('cash_flow_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
- sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_cash_flow_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_cash_flow_ferc1'))
- )
- op.create_table('denorm_balance_sheet_assets_ferc1',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the balance_sheet_assets_ferc1 table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_denorm_balance_sheet_assets_ferc1'))
- )
- op.create_table('denorm_balance_sheet_liabilities_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the balance_sheet_liabilities_ferc1 table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_denorm_balance_sheet_liabilities_ferc1'))
- )
- op.create_table('denorm_boiler_fuel_eia923',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ op.create_table('core_eia860__scd_plants',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_plants'))
+ )
+ op.create_table('core_eia923__monthly_boiler_fuel',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_eia_boilers_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_eia_utilities_entity_eia')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_eia923'))
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_core_eia923__monthly_boiler_fuel'))
)
- op.create_table('denorm_boiler_fuel_monthly_eia923',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ op.create_table('core_eia923__monthly_fuel_receipts_costs',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_boilers_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_utilities_entity_eia')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_monthly_eia923'))
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_id_pudl'], ['core_eia923__entity_coalmine.mine_id_pudl'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia923__monthly_generation',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
)
- op.create_table('denorm_cash_flow_ferc1',
+ op.create_table('core_ferc1__yearly_balance_sheet_assets',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_liabilities',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities'))
+ )
+ op.create_table('core_ferc1__yearly_cash_flow',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_denorm_cash_flow_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flow_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flow'))
)
- op.create_table('denorm_depreciation_amortization_summary_ferc1',
+ op.create_table('core_ferc1__yearly_depreciation_amortization_summary',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_denorm_depreciation_amortization_summary_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_amortization_summary'))
)
- op.create_table('denorm_electric_energy_dispositions_ferc1',
+ op.create_table('core_ferc1__yearly_electric_energy_dispositions',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the electric_energy_dispositions_ferc1. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_denorm_electric_energy_dispositions_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_electric_energy_dispositions'))
)
- op.create_table('denorm_electric_energy_sources_ferc1',
+ op.create_table('core_ferc1__yearly_electric_energy_sources',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the electric_energy_sources_ferc1 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_denorm_electric_energy_sources_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_electric_energy_sources'))
)
- op.create_table('denorm_electric_operating_expenses_ferc1',
+ op.create_table('core_ferc1__yearly_electric_operating_expenses',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_denorm_electric_operating_expenses_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_electric_operating_expenses'))
)
- op.create_table('denorm_electric_operating_revenues_ferc1',
+ op.create_table('core_ferc1__yearly_electric_operating_revenues',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
@@ -1350,14 +1329,11 @@ def upgrade() -> None:
sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_denorm_electric_operating_revenues_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_electric_operating_revenues'))
)
- op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
+ op.create_table('core_ferc1__yearly_electric_plant_depreciation_changes',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
@@ -1367,14 +1343,11 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_denorm_electric_plant_depreciation_changes_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_changes'))
)
- op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
+ op.create_table('core_ferc1__yearly_electric_plant_depreciation_functional',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
@@ -1384,14 +1357,11 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_denorm_electric_plant_depreciation_functional_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_functional'))
)
- op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
+ op.create_table('core_ferc1__yearly_electricity_sales_by_rate_schedule',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
@@ -1402,50 +1372,11 @@ def upgrade() -> None:
sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_utilities_pudl'))
- )
- op.create_table('denorm_generation_eia923',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generation_eia923_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_denorm_generation_eia923_plant_id_eia_generators_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_eia923_utility_id_eia_utilities_entity_eia')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_eia923_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_eia923'))
- )
- op.create_table('denorm_generation_monthly_eia923',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_eia_generators_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_eia_utilities_entity_eia')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_monthly_eia923'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_utilities_ferc1'))
)
- op.create_table('denorm_income_statement_ferc1',
+ op.create_table('core_ferc1__yearly_income_statement',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
@@ -1453,14 +1384,11 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_denorm_income_statement_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statement_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statement'))
)
- op.create_table('denorm_other_regulatory_liabilities_ferc1',
+ op.create_table('core_ferc1__yearly_other_regulatory_liabilities',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
@@ -1468,55 +1396,46 @@ def upgrade() -> None:
sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_utilities_ferc1'))
)
- op.create_table('denorm_plant_in_service_ferc1',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ op.create_table('core_ferc1__yearly_plant_in_service',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_denorm_plant_in_service_ferc1'))
- )
- op.create_table('denorm_purchased_power_ferc1',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service'))
+ )
+ op.create_table('core_ferc1__yearly_purchased_power',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_utility_id_ferc1_utilities_ferc1'))
)
- op.create_table('denorm_retained_earnings_ferc1',
+ op.create_table('core_ferc1__yearly_retained_earnings',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
@@ -1525,15 +1444,12 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_denorm_retained_earnings_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings'))
)
- op.create_table('denorm_transmission_statistics_ferc1',
+ op.create_table('core_ferc1__yearly_transmission_statistics',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
@@ -1544,108 +1460,183 @@ def upgrade() -> None:
sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_statistics_utility_id_ferc1_utilities_ferc1'))
)
- op.create_table('denorm_utilities_eia',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ op.create_table('core_ferc1__yearly_utility_plant_summary',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary'))
+ )
+ op.create_table('denorm_balance_sheet_assets_ferc1',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_denorm_balance_sheet_assets_ferc1'))
+ )
+ op.create_table('denorm_balance_sheet_liabilities_ferc1',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_denorm_balance_sheet_liabilities_ferc1'))
+ )
+ op.create_table('denorm_boiler_fuel_eia923',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_eia923'))
+ )
+ op.create_table('denorm_boiler_fuel_monthly_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_utilities_eia_utility_id_eia_utilities_eia860')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utilities_eia_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_denorm_utilities_eia'))
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_monthly_eia923'))
)
- op.create_table('denorm_utility_plant_summary_ferc1',
+ op.create_table('denorm_cash_flow_ferc1',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the utility_plant_summary_ferc1 table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the utility_plant_summary_ferc1 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_denorm_utility_plant_summary_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_denorm_cash_flow_ferc1'))
)
- op.create_table('depreciation_amortization_summary_ferc1',
+ op.create_table('denorm_depreciation_amortization_summary_ferc1',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_depreciation_amortization_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_depreciation_amortization_summary_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_denorm_depreciation_amortization_summary_ferc1'))
)
- op.create_table('electric_energy_dispositions_ferc1',
+ op.create_table('denorm_electric_energy_dispositions_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the electric_energy_dispositions_ferc1. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electric_energy_dispositions_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_electric_energy_dispositions_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_denorm_electric_energy_dispositions_ferc1'))
)
- op.create_table('electric_energy_sources_ferc1',
+ op.create_table('denorm_electric_energy_sources_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the electric_energy_sources_ferc1 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electric_energy_sources_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_electric_energy_sources_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_denorm_electric_energy_sources_ferc1'))
)
- op.create_table('electric_operating_expenses_ferc1',
+ op.create_table('denorm_electric_operating_expenses_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electric_operating_expenses_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_electric_operating_expenses_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_denorm_electric_operating_expenses_ferc1'))
)
- op.create_table('electric_operating_revenues_ferc1',
+ op.create_table('denorm_electric_operating_revenues_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
@@ -1654,11 +1645,14 @@ def upgrade() -> None:
sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electric_operating_revenues_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_electric_operating_revenues_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_denorm_electric_operating_revenues_ferc1'))
)
- op.create_table('electric_plant_depreciation_changes_ferc1',
+ op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
@@ -1668,11 +1662,14 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_electric_plant_depreciation_changes_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_denorm_electric_plant_depreciation_changes_ferc1'))
)
- op.create_table('electric_plant_depreciation_functional_ferc1',
+ op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
@@ -1682,11 +1679,14 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_electric_plant_depreciation_functional_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_denorm_electric_plant_depreciation_functional_ferc1'))
)
- op.create_table('electricity_sales_by_rate_schedule_ferc1',
+ op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
@@ -1697,81 +1697,238 @@ def upgrade() -> None:
sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_utilities_ferc1'))
- )
- op.create_table('epacamd_eia',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_epacamd_eia_plant_id_eia_boilers_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_epacamd_eia_plant_id_eia_generators_entity_eia'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_utilities_pudl'))
)
- op.create_table('fuel_cost_by_generator_monthly',
+ op.create_table('denorm_generation_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generation_eia923_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_denorm_generation_eia923_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_eia923_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_eia923_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_eia923'))
+ )
+ op.create_table('denorm_generation_monthly_eia923',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_eia_generators_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_eia_utilities_entity_eia')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_monthly'))
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_monthly_eia923'))
)
- op.create_table('fuel_receipts_costs_eia923',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
- sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
- sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
- sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ op.create_table('denorm_income_statement_ferc1',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_denorm_income_statement_ferc1'))
+ )
+ op.create_table('denorm_other_regulatory_liabilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('denorm_plant_in_service_ferc1',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_denorm_plant_in_service_ferc1'))
+ )
+ op.create_table('denorm_purchased_power_ferc1',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('denorm_retained_earnings_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_denorm_retained_earnings_ferc1'))
+ )
+ op.create_table('denorm_transmission_statistics_ferc1',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('denorm_utilities_eia',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['mine_id_pudl'], ['coalmine_eia923.mine_id_pudl'], name=op.f('fk_fuel_receipts_costs_eia923_mine_id_pudl_coalmine_eia923')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_fuel_receipts_costs_eia923_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
- )
- op.create_table('generation_eia923',
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_utilities_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utilities_eia_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_denorm_utilities_eia'))
+ )
+ op.create_table('denorm_utility_plant_summary_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_denorm_utility_plant_summary_ferc1'))
+ )
+ op.create_table('epacamd_eia',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
+ )
+ op.create_table('fuel_cost_by_generator_monthly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generation_eia923_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generation_eia923_plant_id_eia_generators_entity_eia')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_generation_eia923'))
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_monthly'))
)
op.create_table('generation_fuel_by_generator_energy_source_monthly_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -1784,7 +1941,7 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_generators_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_core_eia__entity_generators')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_generation_fuel_by_generator_energy_source_monthly_eia923'))
)
@@ -1801,9 +1958,9 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_generators_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_core_eia__entity_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_generation_fuel_by_generator_monthly_eia923'))
)
@@ -1816,23 +1973,10 @@ def upgrade() -> None:
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_heat_rate_by_generator_monthly_plant_id_eia_generators_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_heat_rate_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_heat_rate_by_generator_monthly_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_heat_rate_by_generator_monthly'))
)
- op.create_table('income_statement_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_income_statement_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_income_statement_ferc1'))
- )
op.create_table('mcoe_generators_monthly',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
@@ -1861,10 +2005,10 @@ def upgrade() -> None:
sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_mcoe_generators_monthly_plant_id_eia_generators_entity_eia')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_mcoe_generators_monthly_plant_id_eia_core_eia__entity_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_monthly_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['utilities_entity_eia.utility_id_eia'], name=op.f('fk_mcoe_generators_monthly_utility_id_eia_utilities_entity_eia')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_mcoe_generators_monthly_utility_id_eia_core_eia__entity_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_monthly_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_monthly'))
)
@@ -1875,154 +2019,22 @@ def upgrade() -> None:
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_mcoe_monthly_plant_id_eia_generators_entity_eia')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_monthly'))
- )
- op.create_table('other_regulatory_liabilities_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
- sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_other_regulatory_liabilities_ferc1_utility_id_ferc1_utilities_ferc1'))
- )
- op.create_table('plant_in_service_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_plant_in_service_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_plant_in_service_ferc1'))
- )
- op.create_table('plants_eia860',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
- sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
- sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
- sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
- sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
- sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
- sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
- sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
- sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
- sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
- sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
- sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
- sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
- sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
- sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
- sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
- sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_plants_eia860_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_plants_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['plants_entity_eia.plant_id_eia'], name=op.f('fk_plants_eia860_plant_id_eia_plants_entity_eia')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_plants_eia860_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_plants_eia860_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_plants_eia860_utility_id_eia_utilities_eia860')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_plants_eia860'))
- )
- op.create_table('plants_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_plants_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_plants_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_plants_ferc1'))
- )
- op.create_table('purchased_power_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
- sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
- sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
- sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
- sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1'))
- )
- op.create_table('retained_earnings_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_retained_earnings_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_retained_earnings_ferc1'))
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_mcoe_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_monthly'))
)
- op.create_table('transmission_statistics_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
- sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
- sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
- sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
- sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
- sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
- sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
- sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
- sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_transmission_statistics_ferc1_utility_id_ferc1_utilities_ferc1'))
+ op.create_table('plants_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_plants_ferc1_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_plants_ferc1_utility_id_ferc1_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_plants_ferc1'))
)
op.create_table('utilities_ferc1_dbf',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -2036,19 +2048,7 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_utilities_ferc1_xbrl_utility_id_ferc1_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_utilities_ferc1_xbrl'))
)
- op.create_table('utility_plant_summary_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the utility_plant_summary_ferc1 table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the utility_plant_summary_ferc1 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_utility_plant_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_utility_plant_summary_ferc1'))
- )
- op.create_table('boilers_eia860',
+ op.create_table('core_eia860__scd_boilers',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -2140,59 +2140,316 @@ def upgrade() -> None:
sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_boilers_eia860_boiler_fuel_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_boilers_eia860_boiler_status_core_eia__codes_boiler_status')),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_boilers_eia860_boiler_type_core_eia__codes_boiler_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boilers_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_boilers_eia860_firing_type_1_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_boilers_eia860_firing_type_2_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_boilers_eia860_firing_type_3_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_boilers_eia860_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_boilers_eia860_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_boilers_eia860_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_boilers_eia860_nox_control_status_code_core_eia__codes_nox_control_status')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_boilers_eia860_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['boilers_entity_eia.plant_id_eia', 'boilers_entity_eia.boiler_id'], name=op.f('fk_boilers_eia860_plant_id_eia_boilers_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_boilers_eia860_plant_id_eia_plants_eia860')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_mercury_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_nox_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_particulate_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_boilers_eia860_regulation_so2_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_boilers_eia860_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_boilers_eia860_unit_nox_core_eia__codes_nox_units')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_boilers_eia860_unit_particulate_core_eia__codes_particulate_units')),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_boilers_eia860_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_boilers_eia860_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_boilers_eia860'))
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_core_eia860__scd_boilers'))
+ )
+ op.create_table('core_eia860__scd_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia860__scd_generators'))
+ )
+ op.create_table('core_ferc1__yearly_fuel',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_fuel_utility_id_ferc1_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_hydro',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('plant_type', sa.Enum('run_of_river', 'na_category', 'storage', 'hydro', 'run_of_river_with_storage'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_hydro_utility_id_ferc1_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_pumped_storage',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_small',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_small_utility_id_ferc1_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_steam',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Enum('solar_thermal', 'combined_cycle', 'photovoltaic', 'geothermal', 'combustion_turbine', 'internal_combustion', 'wind', 'steam', 'nuclear', 'na_category'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_plants_ferc1'))
)
op.create_table('denorm_fuel_by_plant_ferc1',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -2263,9 +2520,9 @@ def upgrade() -> None:
sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
sa.Column('moisture_content_pct', sa.Float(), nullable=True),
sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_eia_plants_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_eia_core_eia860__scd_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_pudl_utilities_pudl'))
)
op.create_table('denorm_generation_fuel_combined_yearly_eia923',
@@ -2286,10 +2543,10 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_plants_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_core_eia860__scd_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_yearly_eia923'))
)
@@ -2434,11 +2691,11 @@ def upgrade() -> None:
sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_denorm_plants_eia_plant_id_eia_plants_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_plants_eia_plant_id_eia_core_eia860__scd_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_eia_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_plants_eia_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_plants_eia_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_denorm_plants_eia'))
)
@@ -2639,9 +2896,9 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_denorm_plants_utilities_eia_plant_id_eia_plants_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_plants_utilities_eia_plant_id_eia_core_eia860__scd_plants')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_utilities_eia_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_plants_utilities_eia_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_plants_utilities_eia_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_utilities_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk_denorm_plants_utilities_eia'))
)
@@ -2656,116 +2913,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_utilities_ferc1_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_denorm_plants_utilities_ferc1'))
)
- op.create_table('fuel_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_fuel_ferc1_utility_id_ferc1_plants_ferc1'))
- )
- op.create_table('generators_eia860',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_generators_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_generators_eia860_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_generators_eia860_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generators_eia860_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['generators_entity_eia.plant_id_eia', 'generators_entity_eia.generator_id'], name=op.f('fk_generators_eia860_plant_id_eia_generators_entity_eia')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_generators_eia860_plant_id_eia_plants_eia860')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generators_eia860_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generators_eia860_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_generators_eia860_utility_id_eia_utilities_eia860')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_generators_eia860'))
- )
op.create_table('heat_rate_by_unit_yearly',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -2773,178 +2920,41 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['plants_eia860.plant_id_eia', 'plants_eia860.report_date'], name=op.f('fk_heat_rate_by_unit_yearly_plant_id_eia_plants_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_heat_rate_by_unit_yearly_plant_id_eia_core_eia860__scd_plants')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk_heat_rate_by_unit_yearly'))
)
- op.create_table('plants_hydro_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('plant_type', sa.Enum('storage', 'run_of_river_with_storage', 'hydro', 'run_of_river', 'na_category'), nullable=True),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_plants_hydro_ferc1_utility_id_ferc1_plants_ferc1'))
- )
- op.create_table('plants_pumped_storage_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_plants_pumped_storage_ferc1_utility_id_ferc1_plants_ferc1'))
- )
- op.create_table('plants_small_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ op.create_table('capacity_factor_by_generator_yearly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_plants_small_ferc1_utility_id_ferc1_plants_ferc1'))
- )
- op.create_table('plants_steam_ferc1',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Enum('internal_combustion', 'photovoltaic', 'solar_thermal', 'combined_cycle', 'combustion_turbine', 'geothermal', 'na_category', 'steam', 'nuclear', 'wind'), nullable=True),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_plants_steam_ferc1_utility_id_ferc1_plants_ferc1'))
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_capacity_factor_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_capacity_factor_by_generator_yearly'))
)
- op.create_table('boiler_cooling_assn_eia860',
+ op.create_table('core_eia860__annual_boiler_emissions_control_equipment_assn',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
+ sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
+ sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boiler_cooling_assn_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_cooling_assn_eia860_plant_id_eia_boilers_eia860')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_boiler_cooling_assn_eia860'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__annual_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__annual_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__annual_boiler_emissions_control_equipment_assn'))
)
- op.create_table('boiler_emissions_control_equipment_assn_eia860',
+ op.create_table('core_eia860__assn_boiler_cooling',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
- sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
+ sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boiler_emissions_control_equipment_assn_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_emissions_control_equipment_assn_eia860_plant_id_eia_boilers_eia860')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_boiler_emissions_control_equipment_assn_eia860'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_core_eia860__assn_boiler_cooling'))
)
- op.create_table('boiler_generator_assn_eia860',
+ op.create_table('core_eia860__assn_boiler_generator',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
@@ -2955,14 +2965,14 @@ def upgrade() -> None:
sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_boiler_generator_assn_eia860_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_boiler_generator_assn_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_generator_assn_eia860_plant_id_eia_boilers_eia860')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_boiler_generator_assn_eia860_plant_id_eia_generators_eia860')),
- sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_boiler_generator_assn_eia860_steam_plant_type_code_core_eia__codes_steam_plant_types')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_boiler_generator_assn_eia860'))
- )
- op.create_table('boiler_stack_flue_assn_eia860',
+ sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_core_eia860__assn_boiler_generator'))
+ )
+ op.create_table('core_eia860__assn_boiler_stack_flue',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
@@ -2970,18 +2980,27 @@ def upgrade() -> None:
sa.Column('flue_id_eia', sa.Text(), nullable=True, comment='The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.'),
sa.Column('stack_flue_id_eia', sa.Text(), nullable=True, comment='The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.'),
sa.Column('stack_flue_id_pudl', sa.Text(), nullable=False, comment='A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_boiler_stack_flue_assn_eia860_plant_id_eia_boilers_eia860')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_boiler_stack_flue_assn_eia860'))
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_core_eia860__assn_boiler_stack_flue'))
)
- op.create_table('capacity_factor_by_generator_yearly',
+ op.create_table('core_eia860__scd_ownership',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_capacity_factor_by_generator_yearly_plant_id_eia_generators_eia860')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_capacity_factor_by_generator_yearly'))
+ sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
+ sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
+ sa.Column('owner_state', sa.Enum('ME', 'WV', 'LA', 'AR', 'AZ', 'MA', 'NU', 'TX', 'WY', 'AB', 'MO', 'OR', 'DC', 'NC', 'SD', 'PE', 'NL', 'GU', 'IA', 'MS', 'NM', 'FL', 'HI', 'NJ', 'DE', 'SC', 'VA', 'MN', 'YT', 'KS', 'ON', 'SK', 'PR', 'ND', 'NB', 'ID', 'IL', 'RI', 'KY', 'MI', 'BC', 'GA', 'VT', 'OK', 'TN', 'MT', 'IN', 'CT', 'NT', 'VI', 'MB', 'WI', 'QC', 'CO', 'NY', 'CA', 'AS', 'OH', 'AL', 'NH', 'UT', 'NE', 'MP', 'NV', 'WA', 'MD', 'PA', 'AK', 'NS'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
)
op.create_table('denorm_boiler_fuel_yearly_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -3002,10 +3021,10 @@ def upgrade() -> None:
sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_boilers_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_core_eia860__scd_boilers')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_yearly_eia923'))
)
@@ -3151,7 +3170,7 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['boilers_eia860.plant_id_eia', 'boilers_eia860.boiler_id', 'boilers_eia860.report_date'], name=op.f('fk_denorm_boilers_eia_plant_id_eia_boilers_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_denorm_boilers_eia_plant_id_eia_core_eia860__scd_boilers')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boilers_eia_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_mercury_core_eia__codes_regulations')),
sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_nox_core_eia__codes_regulations')),
@@ -3169,7 +3188,7 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_denorm_boilers_eia_unit_nox_core_eia__codes_nox_units')),
sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_denorm_boilers_eia_unit_particulate_core_eia__codes_particulate_units')),
sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_denorm_boilers_eia_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_boilers_eia_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_boilers_eia_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boilers_eia_utility_id_pudl_utilities_pudl')),
sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_denorm_boilers_eia_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_denorm_boilers_eia'))
@@ -3185,9 +3204,9 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_denorm_generation_yearly_eia923_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_denorm_generation_yearly_eia923_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_yearly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_generation_yearly_eia923_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_generation_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_yearly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_yearly_eia923'))
)
@@ -3310,14 +3329,14 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_denorm_generators_eia_operational_status_code_core_eia__codes_operational_status')),
sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_planned_energy_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generators_eia_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_denorm_generators_eia_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_denorm_generators_eia_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generators_eia_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_2_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_3_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_generators_eia_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generators_eia_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generators_eia'))
)
@@ -3332,7 +3351,7 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('AK', 'MB', 'OR', 'WA', 'AS', 'DC', 'DE', 'ME', 'MT', 'AR', 'QC', 'WI', 'UT', 'VI', 'RI', 'OH', 'IN', 'NJ', 'NU', 'TX', 'VT', 'NL', 'NS', 'OK', 'NC', 'BC', 'NV', 'AL', 'LA', 'CO', 'NH', 'CT', 'AB', 'MA', 'NB', 'YT', 'SC', 'WY', 'FL', 'KY', 'ND', 'NT', 'WV', 'MO', 'NM', 'NY', 'PA', 'PE', 'TN', 'VA', 'CA', 'AZ', 'ON', 'PR', 'IL', 'MN', 'MS', 'KS', 'HI', 'GU', 'NE', 'SD', 'IA', 'ID', 'MD', 'SK', 'MP', 'GA', 'MI'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('ME', 'WV', 'LA', 'AR', 'AZ', 'MA', 'NU', 'TX', 'WY', 'AB', 'MO', 'OR', 'DC', 'NC', 'SD', 'PE', 'NL', 'GU', 'IA', 'MS', 'NM', 'FL', 'HI', 'NJ', 'DE', 'SC', 'VA', 'MN', 'YT', 'KS', 'ON', 'SK', 'PR', 'ND', 'NB', 'ID', 'IL', 'RI', 'KY', 'MI', 'BC', 'GA', 'VT', 'OK', 'TN', 'MT', 'IN', 'CT', 'NT', 'VI', 'MB', 'WI', 'QC', 'CO', 'NY', 'CA', 'AS', 'OH', 'AL', 'NH', 'UT', 'NE', 'MP', 'NV', 'WA', 'MD', 'PA', 'AK', 'NS'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
@@ -3340,9 +3359,9 @@ def upgrade() -> None:
sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_denorm_ownership_eia860_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_denorm_ownership_eia860_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_ownership_eia860_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_denorm_ownership_eia860_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_ownership_eia860_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_ownership_eia860_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_denorm_ownership_eia860'))
)
@@ -3362,9 +3381,9 @@ def upgrade() -> None:
sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_yearly'))
)
@@ -3383,7 +3402,7 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_generation_fuel_by_generator_energy_source_owner_yearly_eia923'))
)
@@ -3398,7 +3417,7 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_generation_fuel_by_generator_energy_source_yearly_eia923'))
)
@@ -3415,9 +3434,9 @@ def upgrade() -> None:
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_generation_fuel_by_generator_yearly_eia923'))
)
@@ -3430,7 +3449,7 @@ def upgrade() -> None:
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_heat_rate_by_generator_yearly_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_heat_rate_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_heat_rate_by_generator_yearly_prime_mover_code_core_eia__codes_prime_movers')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_heat_rate_by_generator_yearly'))
)
@@ -3462,10 +3481,10 @@ def upgrade() -> None:
sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_mcoe_generators_yearly_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mcoe_generators_yearly_plant_id_eia_core_eia860__scd_generators')),
sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_yearly_plant_id_pudl_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_mcoe_generators_yearly_utility_id_eia_utilities_eia860')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mcoe_generators_yearly_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_yearly_utility_id_pudl_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_yearly'))
)
@@ -3482,34 +3501,14 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_mcoe_yearly_plant_id_eia_generators_eia860')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mcoe_yearly_plant_id_eia_core_eia860__scd_generators')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_yearly'))
)
- op.create_table('ownership_eia860',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
- sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('AK', 'MB', 'OR', 'WA', 'AS', 'DC', 'DE', 'ME', 'MT', 'AR', 'QC', 'WI', 'UT', 'VI', 'RI', 'OH', 'IN', 'NJ', 'NU', 'TX', 'VT', 'NL', 'NS', 'OK', 'NC', 'BC', 'NV', 'AL', 'LA', 'CO', 'NH', 'CT', 'AB', 'MA', 'NB', 'YT', 'SC', 'WY', 'FL', 'KY', 'ND', 'NT', 'WV', 'MO', 'NM', 'NY', 'PA', 'PE', 'TN', 'VA', 'CA', 'AZ', 'ON', 'PR', 'IL', 'MN', 'MS', 'KS', 'HI', 'GU', 'NE', 'SD', 'IA', 'ID', 'MD', 'SK', 'MP', 'GA', 'MI'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
- sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
- sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
- sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_ownership_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['generators_eia860.plant_id_eia', 'generators_eia860.generator_id', 'generators_eia860.report_date'], name=op.f('fk_ownership_eia860_plant_id_eia_generators_eia860')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['utilities_eia860.utility_id_eia', 'utilities_eia860.report_date'], name=op.f('fk_ownership_eia860_utility_id_eia_utilities_eia860')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_ownership_eia860'))
- )
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.drop_table('ownership_eia860')
op.drop_table('mcoe_yearly')
op.drop_table('mcoe_generators_yearly')
op.drop_table('heat_rate_by_generator_yearly')
@@ -3522,18 +3521,13 @@ def downgrade() -> None:
op.drop_table('denorm_generation_yearly_eia923')
op.drop_table('denorm_boilers_eia')
op.drop_table('denorm_boiler_fuel_yearly_eia923')
+ op.drop_table('core_eia860__scd_ownership')
+ op.drop_table('core_eia860__assn_boiler_stack_flue')
+ op.drop_table('core_eia860__assn_boiler_generator')
+ op.drop_table('core_eia860__assn_boiler_cooling')
+ op.drop_table('core_eia860__annual_boiler_emissions_control_equipment_assn')
op.drop_table('capacity_factor_by_generator_yearly')
- op.drop_table('boiler_stack_flue_assn_eia860')
- op.drop_table('boiler_generator_assn_eia860')
- op.drop_table('boiler_emissions_control_equipment_assn_eia860')
- op.drop_table('boiler_cooling_assn_eia860')
- op.drop_table('plants_steam_ferc1')
- op.drop_table('plants_small_ferc1')
- op.drop_table('plants_pumped_storage_ferc1')
- op.drop_table('plants_hydro_ferc1')
op.drop_table('heat_rate_by_unit_yearly')
- op.drop_table('generators_eia860')
- op.drop_table('fuel_ferc1')
op.drop_table('denorm_plants_utilities_ferc1')
op.drop_table('denorm_plants_utilities_eia')
op.drop_table('denorm_plants_steam_ferc1')
@@ -3546,35 +3540,23 @@ def downgrade() -> None:
op.drop_table('denorm_fuel_receipts_costs_yearly_eia923')
op.drop_table('denorm_fuel_ferc1')
op.drop_table('denorm_fuel_by_plant_ferc1')
- op.drop_table('boilers_eia860')
- op.drop_table('utility_plant_summary_ferc1')
+ op.drop_table('core_ferc1__yearly_plants_steam')
+ op.drop_table('core_ferc1__yearly_plants_small')
+ op.drop_table('core_ferc1__yearly_plants_pumped_storage')
+ op.drop_table('core_ferc1__yearly_plants_hydro')
+ op.drop_table('core_ferc1__yearly_fuel')
+ op.drop_table('core_eia860__scd_generators')
+ op.drop_table('core_eia860__scd_boilers')
op.drop_table('utilities_ferc1_xbrl')
op.drop_table('utilities_ferc1_dbf')
- op.drop_table('transmission_statistics_ferc1')
- op.drop_table('retained_earnings_ferc1')
- op.drop_table('purchased_power_ferc1')
op.drop_table('plants_ferc1')
- op.drop_table('plants_eia860')
- op.drop_table('plant_in_service_ferc1')
- op.drop_table('other_regulatory_liabilities_ferc1')
op.drop_table('mcoe_monthly')
op.drop_table('mcoe_generators_monthly')
- op.drop_table('income_statement_ferc1')
op.drop_table('heat_rate_by_generator_monthly')
op.drop_table('generation_fuel_by_generator_monthly_eia923')
op.drop_table('generation_fuel_by_generator_energy_source_monthly_eia923')
- op.drop_table('generation_eia923')
- op.drop_table('fuel_receipts_costs_eia923')
op.drop_table('fuel_cost_by_generator_monthly')
op.drop_table('epacamd_eia')
- op.drop_table('electricity_sales_by_rate_schedule_ferc1')
- op.drop_table('electric_plant_depreciation_functional_ferc1')
- op.drop_table('electric_plant_depreciation_changes_ferc1')
- op.drop_table('electric_operating_revenues_ferc1')
- op.drop_table('electric_operating_expenses_ferc1')
- op.drop_table('electric_energy_sources_ferc1')
- op.drop_table('electric_energy_dispositions_ferc1')
- op.drop_table('depreciation_amortization_summary_ferc1')
op.drop_table('denorm_utility_plant_summary_ferc1')
op.drop_table('denorm_utilities_eia')
op.drop_table('denorm_transmission_statistics_ferc1')
@@ -3598,17 +3580,34 @@ def downgrade() -> None:
op.drop_table('denorm_boiler_fuel_eia923')
op.drop_table('denorm_balance_sheet_liabilities_ferc1')
op.drop_table('denorm_balance_sheet_assets_ferc1')
- op.drop_table('cash_flow_ferc1')
+ op.drop_table('core_ferc1__yearly_utility_plant_summary')
+ op.drop_table('core_ferc1__yearly_transmission_statistics')
+ op.drop_table('core_ferc1__yearly_retained_earnings')
+ op.drop_table('core_ferc1__yearly_purchased_power')
+ op.drop_table('core_ferc1__yearly_plant_in_service')
+ op.drop_table('core_ferc1__yearly_other_regulatory_liabilities')
+ op.drop_table('core_ferc1__yearly_income_statement')
+ op.drop_table('core_ferc1__yearly_electricity_sales_by_rate_schedule')
+ op.drop_table('core_ferc1__yearly_electric_plant_depreciation_functional')
+ op.drop_table('core_ferc1__yearly_electric_plant_depreciation_changes')
+ op.drop_table('core_ferc1__yearly_electric_operating_revenues')
+ op.drop_table('core_ferc1__yearly_electric_operating_expenses')
+ op.drop_table('core_ferc1__yearly_electric_energy_sources')
+ op.drop_table('core_ferc1__yearly_electric_energy_dispositions')
+ op.drop_table('core_ferc1__yearly_depreciation_amortization_summary')
+ op.drop_table('core_ferc1__yearly_cash_flow')
+ op.drop_table('core_ferc1__yearly_balance_sheet_liabilities')
+ op.drop_table('core_ferc1__yearly_balance_sheet_assets')
+ op.drop_table('core_eia923__monthly_generation')
+ op.drop_table('core_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('core_eia923__monthly_boiler_fuel')
+ op.drop_table('core_eia860__scd_plants')
op.drop_table('capacity_factor_by_generator_monthly')
- op.drop_table('boiler_fuel_eia923')
- op.drop_table('balance_sheet_liabilities_ferc1')
- op.drop_table('balance_sheet_assets_ferc1')
op.drop_table('utility_plant_assn')
op.drop_table('utility_data_rto_eia861')
op.drop_table('utility_data_nerc_eia861')
op.drop_table('utility_data_misc_eia861')
op.drop_table('utilities_ferc1')
- op.drop_table('utilities_eia860')
op.drop_table('utilities_eia')
op.drop_table('summarized_demand_ferc714')
op.drop_table('service_territory_eia861')
@@ -3624,12 +3623,8 @@ def downgrade() -> None:
op.drop_table('mergers_eia861')
op.drop_table('heat_rate_by_unit_monthly')
op.drop_table('green_pricing_eia861')
- op.drop_table('generators_entity_eia')
- op.drop_table('generation_fuel_nuclear_eia923')
- op.drop_table('generation_fuel_eia923')
op.drop_table('fipsified_respondents_ferc714')
op.drop_table('energy_efficiency_eia861')
- op.drop_table('emissions_control_equipment_eia860')
op.drop_table('dynamic_pricing_eia861')
op.drop_table('distribution_systems_eia861')
op.drop_table('distributed_generation_tech_eia861')
@@ -3646,23 +3641,28 @@ def downgrade() -> None:
op.drop_table('demand_response_water_heater_eia861')
op.drop_table('demand_response_eia861')
op.drop_table('demand_hourly_pa_ferc714')
- op.drop_table('coalmine_eia923')
- op.drop_table('boilers_entity_eia')
+ op.drop_table('core_eia__entity_generators')
+ op.drop_table('core_eia__entity_boilers')
+ op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
+ op.drop_table('core_eia923__monthly_generation_fuel')
+ op.drop_table('core_eia923__entity_coalmine')
+ op.drop_table('core_eia860__scd_utilities')
+ op.drop_table('core_eia860__scd_emissions_control_equipment')
op.drop_table('advanced_metering_infrastructure_eia861')
op.drop_table('utility_assn_eia861')
op.drop_table('utilities_pudl')
- op.drop_table('utilities_entity_eia')
op.drop_table('respondent_id_ferc714')
op.drop_table('predicted_state_hourly_demand')
op.drop_table('plants_pudl')
- op.drop_table('plants_entity_eia')
op.drop_table('fuel_receipts_costs_aggs_eia')
op.drop_table('epacamd_eia_subplant_ids')
op.drop_table('core_pudl__codes_subdivisions')
op.drop_table('core_pudl__codes_datasources')
op.drop_table('core_pudl__codes_data_maturities')
+ op.drop_table('core_ferc__codes_accounts')
op.drop_table('core_ferc1__codes_power_purchase_types')
- op.drop_table('core_ferc1__codes_accounts')
+ op.drop_table('core_eia__entity_utilities')
+ op.drop_table('core_eia__entity_plants')
op.drop_table('core_eia__codes_wet_dry_bottom')
op.drop_table('core_eia__codes_steam_plant_types')
op.drop_table('core_eia__codes_so2_units')
From 87901317eec8c83ba0a3e0925f304fd55604de5c Mon Sep 17 00:00:00 2001
From: thinky
Date: Tue, 12 Sep 2023 11:56:44 -0400
Subject: [PATCH 07/70] Rename 714, 861, epacems
---
devtools/data-release.sh | 2 +-
docs/data_access.rst | 2 +-
docs/dev/dev_setup.rst | 2 +-
docs/dev/run_the_etl.rst | 2 +-
docs/release_notes.rst | 84 +++---
docs/templates/ferc714_child.rst.jinja | 6 +-
src/pudl/analysis/epacamd_eia.py | 18 +-
src/pudl/analysis/service_territory.py | 73 ++---
src/pudl/analysis/state_demand.py | 35 +--
src/pudl/convert/epacems_to_parquet.py | 4 +-
src/pudl/etl/__init__.py | 14 +-
src/pudl/etl/eia_bulk_elec_assets.py | 2 +-
src/pudl/etl/epacems_assets.py | 35 ++-
src/pudl/etl/glue_assets.py | 56 ++--
src/pudl/extract/epacems.py | 4 +-
src/pudl/glue/ferc1_eia.py | 77 ++---
src/pudl/io_managers.py | 2 +-
src/pudl/metadata/classes.py | 8 +-
src/pudl/metadata/dfs.py | 4 +-
src/pudl/metadata/fields.py | 2 +-
src/pudl/metadata/resources/eia.py | 101 +++----
src/pudl/metadata/resources/eia860.py | 58 ++--
src/pudl/metadata/resources/eia861.py | 58 ++--
src/pudl/metadata/resources/eia_bulk_elec.py | 2 +-
src/pudl/metadata/resources/epacems.py | 2 +-
src/pudl/metadata/resources/ferc1.py | 8 +-
src/pudl/metadata/resources/ferc714.py | 4 +-
src/pudl/metadata/resources/glue.py | 14 +-
src/pudl/metadata/resources/pudl.py | 6 +-
src/pudl/metadata/sources.py | 2 +-
src/pudl/output/eia.py | 32 ++-
src/pudl/output/eia_bulk_elec.py | 4 +-
src/pudl/output/ferc1.py | 87 +++---
src/pudl/output/ferc714.py | 99 ++++---
src/pudl/output/pudltabl.py | 64 ++---
.../sql/denorm_plants_utilities_ferc1.sql | 4 +-
src/pudl/transform/eia.py | 2 +-
src/pudl/transform/eia861.py | 268 ++++++++++--------
src/pudl/transform/epacems.py | 8 +-
src/pudl/transform/ferc714.py | 20 +-
test/integration/epacems_test.py | 7 +-
test/integration/etl_test.py | 4 +-
test/unit/harvest_test.py | 8 +-
test/unit/helpers_test.py | 4 +-
test/unit/transform/glue_test.py | 4 +-
test/validate/eia_test.py | 2 +-
46 files changed, 695 insertions(+), 609 deletions(-)
diff --git a/devtools/data-release.sh b/devtools/data-release.sh
index 83db1086a8..eb33debae7 100755
--- a/devtools/data-release.sh
+++ b/devtools/data-release.sh
@@ -57,7 +57,7 @@ gsutil -m cp "$GCS_URL/*.sqlite" "$GCS_URL/ferc*_xbrl_*.json" $RELEASE_DIR/pudl_
echo "Copying Parquet datasets..."
mkdir -p $RELEASE_DIR/pudl_data/parquet/epacems
-gsutil -m cp -r "$GCS_URL/hourly_emissions_epacems/*" $RELEASE_DIR/pudl_data/parquet/epacems
+gsutil -m cp -r "$GCS_URL/core_epacems__hourly_emissions/*" $RELEASE_DIR/pudl_data/parquet/epacems
# Save the Docker image as a tarball so it can be archived with the data:
echo "Saving Docker image: $DOCKER_IMAGE"
diff --git a/docs/data_access.rst b/docs/data_access.rst
index 92befc2829..8e679f139b 100644
--- a/docs/data_access.rst
+++ b/docs/data_access.rst
@@ -83,7 +83,7 @@ AWS CLI, or programmatically via the S3 API. They can also be downloaded directl
HTTPS using the following links:
* `PUDL SQLite DB `__
-* `EPA CEMS Hourly Emissions Parquet (1995-2022) `__
+* `EPA CEMS Hourly Emissions Parquet (1995-2022) `__
* `Census DP1 SQLite DB (2010) `__
* Raw FERC Form 1:
diff --git a/docs/dev/dev_setup.rst b/docs/dev/dev_setup.rst
index a45b585dcf..f61ffd8791 100644
--- a/docs/dev/dev_setup.rst
+++ b/docs/dev/dev_setup.rst
@@ -266,7 +266,7 @@ store the path to this new directory:
$ set -Ux PUDL_OUTPUT /absolute/path/to/pudl_output # fish
The path stored in ``PUDL_OUTPUT`` contains all ETL outputs like
-``pudl.sqlite`` and ``hourly_emissions_epacems.parquet``.
+``pudl.sqlite`` and ``core_epacems__hourly_emissions.parquet``.
**Make sure you create separate directories for these environment variables!
It is recommended you create these directories outside of the pudl repository
diff --git a/docs/dev/run_the_etl.rst b/docs/dev/run_the_etl.rst
index b0a0d0b08a..888d46dc57 100644
--- a/docs/dev/run_the_etl.rst
+++ b/docs/dev/run_the_etl.rst
@@ -490,7 +490,7 @@ The commands above should result in a bunch of Python :mod:`logging` output
describing what the script is doing, and file outputs in the ``output``
directory within your workspace. When the ETL is complete, you
should see new files at ``output/ferc1.sqlite`` and ``output/pudl.sqlite`` as
-well as a new directory at ``output/hourly_emissions_epacems`` containing
+well as a new directory at ``output/core_epacems__hourly_emissions`` containing
nested directories named by year and state.
If you need to re-run ``ferc_to_sqlite`` and want to overwrite
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 5ca86d1adf..31fb72e7d4 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -73,9 +73,9 @@ Data Coverage
* Updated :doc:`data_sources/eia923` to include early release data from 2022.
* Updated :doc:`data_sources/epacems` to switch from the old FTP server to the new
CAMPD API, and to include 2022 data.
-* New :ref:`epacamd_eia` crosswalk version v0.3, see issue :issue:`2317` and PR
- :pr:`2316`. EPA's updates add manual matches and exclusions focusing on operating
- units with a generator ID as of 2018.
+* New :ref:`core_epa__assn_epacamd_eia` crosswalk version v0.3, see issue :issue:`2317`
+ and PR :pr:`2316`. EPA's updates add manual matches and exclusions focusing on
+ operating units with a generator ID as of 2018.
* New PUDL tables from :doc:`data_sources/ferc1`, integrating older DBF and newer XBRL
data. See :issue:`1574` for an overview of our progress integrating FERC's XBRL data.
To see which DBF and XBRL tables the following PUDL tables are derived from, refer to
@@ -114,7 +114,7 @@ Data Coverage
:pr:`2561`.
* :ref:`denorm_emissions_control_equipment_eia860`, see issue :issue:`2338` & PR
:pr:`2561`.
- * :ref:`core_eia860__annual_boiler_emissions_control_equipment_assn`, see
+ * :ref:`core_eia860__yearly_boiler_emissions_control_equipment_assn`, see
:issue:`2338` & PR :pr:`2561`.
* :ref:`core_eia860__assn_boiler_cooling`, see :issue:`2586` & PR :pr:`2587`
* :ref:`core_eia860__assn_boiler_stack_flue`, see :issue:`2586` & PR :pr:`2587`
@@ -134,50 +134,50 @@ Data Coverage
data types, rather than actually doing the ETL. See :issue:`2265` & :pr:`2403`. The
newly accessible tables contain data from 2001-2021 and include:
- * :ref:`advanced_metering_infrastructure_eia861`
- * :ref:`balancing_authority_eia861`
- * :ref:`balancing_authority_assn_eia861`
- * :ref:`demand_response_eia861`
- * :ref:`demand_response_water_heater_eia861`
- * :ref:`demand_side_management_sales_eia861`
- * :ref:`demand_side_management_ee_dr_eia861`
- * :ref:`demand_side_management_misc_eia861`
- * :ref:`distributed_generation_tech_eia861`
- * :ref:`distributed_generation_fuel_eia861`
- * :ref:`distributed_generation_misc_eia861`
- * :ref:`distribution_systems_eia861`
- * :ref:`dynamic_pricing_eia861`
- * :ref:`energy_efficiency_eia861`
- * :ref:`green_pricing_eia861`
- * :ref:`mergers_eia861`
- * :ref:`net_metering_customer_fuel_class_eia861`
- * :ref:`net_metering_misc_eia861`
- * :ref:`non_net_metering_customer_fuel_class_eia861`
- * :ref:`non_net_metering_misc_eia861`
- * :ref:`operational_data_revenue_eia861`
- * :ref:`operational_data_misc_eia861`
- * :ref:`reliability_eia861`
- * :ref:`sales_eia861`
- * :ref:`service_territory_eia861`
- * :ref:`utility_assn_eia861`
- * :ref:`utility_data_nerc_eia861`
- * :ref:`utility_data_rto_eia861`
- * :ref:`utility_data_misc_eia861`
+ * :ref:`core_eia861__yearly_advanced_metering_infrastructure`
+ * :ref:`core_eia861__yearly_balancing_authority`
+ * :ref:`core_eia861__assn_balancing_authority`
+ * :ref:`core_eia861__yearly_demand_response`
+ * :ref:`core_eia861__yearly_demand_response_water_heater`
+ * :ref:`core_eia861__yearly_demand_side_management_sales`
+ * :ref:`core_eia861__yearly_demand_side_management_ee_dr`
+ * :ref:`core_eia861__yearly_demand_side_management_misc`
+ * :ref:`core_eia861__yearly_distributed_generation_tech`
+ * :ref:`core_eia861__yearly_distributed_generation_fuel`
+ * :ref:`core_eia861__yearly_distributed_generation_misc`
+ * :ref:`core_eia861__yearly_distribution_systems`
+ * :ref:`core_eia861__yearly_dynamic_pricing`
+ * :ref:`core_eia861__yearly_energy_efficiency`
+ * :ref:`core_eia861__yearly_green_pricing`
+ * :ref:`core_eia861__yearly_mergers`
+ * :ref:`core_eia861__yearly_net_metering_customer_fuel_class`
+ * :ref:`core_eia861__yearly_net_metering_misc`
+ * :ref:`core_eia861__yearly_non_net_metering_customer_fuel_class`
+ * :ref:`core_eia861__yearly_non_net_metering_misc`
+ * :ref:`core_eia861__yearly_operational_data_revenue`
+ * :ref:`core_eia861__yearly_operational_data_misc`
+ * :ref:`core_eia861__yearly_reliability`
+ * :ref:`core_eia861__yearly_sales`
+ * :ref:`core_eia861__yearly_service_territory`
+ * :ref:`core_eia861__assn_utility`
+ * :ref:`core_eia861__yearly_utility_data_nerc`
+ * :ref:`core_eia861__yearly_utility_data_rto`
+ * :ref:`core_eia861__yearly_utility_data_misc`
* A couple of tables from :doc:`data_sources/ferc714` have been added to the PUDL DB.
These tables contain data from 2006-2020 (2021 is distributed by FERC in XBRL format
and we have not yet integrated it). See :issue:`2266`, :pr:`2421` and :pr:`2550`.
The newly accessible tables include:
- * :ref:`respondent_id_ferc714` (linking FERC-714 respondents to EIA utilities)
- * :ref:`demand_hourly_pa_ferc714` (hourly electricity demand by planning area)
+ * :ref:`core_ferc714__respondent_id` (linking FERC-714 respondents to EIA utilities)
+ * :ref:`core_ferc714__hourly_demand_pa` (hourly electricity demand by planning area)
* :ref:`fipsified_respondents_ferc714` (annual respondents with county FIPS IDs)
* :ref:`summarized_demand_ferc714` (annual demand for FERC-714 respondents)
-* Added new table :ref:`epacamd_eia_subplant_ids`, which aguments the
- :ref:`epacamd_eia` glue table. This table incorporates all
- :ref:`core_eia__entity_generators` and all :ref:`hourly_emissions_epacems` ID's and
- uses these complete IDs to develop a full-coverage ``subplant_id`` column which
+* Added new table :ref:`core_epa__assn_epacamd_eia_subplant_ids`, which aguments the
+ :ref:`core_epa__assn_epacamd_eia` glue table. This table incorporates all
+ :ref:`core_eia__entity_generators` and all :ref:`core_epacems__hourly_emissions` ID's
+ and uses these complete IDs to develop a full-coverage ``subplant_id`` column which
granularly connects EPA CAMD with EIA. Thanks to :user:`grgmiller` for his
contribution to this process. See :issue:`2456` & :pr:`2491`.
@@ -208,8 +208,8 @@ Data Cleaning
affected a small number of records in any table referring to boilers, including
:ref:`core_eia__entity_boilers`, :ref:`core_eia860__scd_boilers`,
:ref:`core_eia923__monthly_boiler_fuel`, :ref:`core_eia860__assn_boiler_generator`
- and the :ref:`epacamd_eia` crosswalk. It also had some minor downstream effects on the
- MCOE outputs. See :issue:`2366` and :pr:`2367`.
+ and the :ref:`core_epa__assn_epacamd_eia` crosswalk. It also had some minor downstream
+ effects on the MCOE outputs. See :issue:`2366` and :pr:`2367`.
* The :ref:`core_eia923__monthly_boiler_fuel` table now includes the
``prime_mover_code`` column. This column was previously incorrectly being associated
with boilers in the :ref:`core_eia__entity_boilers` table. See issue :issue:`2349` &
@@ -296,7 +296,7 @@ Deprecations
functions have been deprecated. The table level EIA cleaning funtions are now
coordinated using dagster.
* The :mod:`pudl.convert.epacems_to_parquet` command now executes the
- ``hourly_emissions_epacems`` asset as a dagster job. The ``—partition`` option
+ ``core_epacems__hourly_emissions`` asset as a dagster job. The ``—partition`` option
is no longer supported. Now only creates a directory of parquet files
for each year/state partition.
* ``pudl.transform.ferc1.transform()`` has been removed. The ferc1 table
diff --git a/docs/templates/ferc714_child.rst.jinja b/docs/templates/ferc714_child.rst.jinja
index 2d4dd6cc85..961b297452 100644
--- a/docs/templates/ferc714_child.rst.jinja
+++ b/docs/templates/ferc714_child.rst.jinja
@@ -23,13 +23,13 @@ respondents that show up in the respondents table.
WIth the EIA IDs, we link the hourly electricity demand to a particular georgraphic
region at the county level, because utilities and balancing authorities report their
-service territories in :ref:`service_territory_eia861`, and from that information we
+service territories in :ref:`core_eia861__yearly_service_territory`, and from that information we
can estimate historical hourly electricity demand by state.
Plant operators reported in :ref:`core_eia860__scd_plants` and generator ownership information
reported in :ref:`core_eia860__scd_ownership` are linked to :ref:`core_eia860__scd_utilities` and
-:ref:`balancing_authority_eia861` and so can also be linked to the
-:ref:`respondent_id_ferc714` table, as well as the :ref:`hourly_emissions_epacems`
+:ref:`core_eia861__yearly_balancing_authority` and so can also be linked to the
+:ref:`core_ferc714__respondent_id` table, as well as the :ref:`core_epacems__hourly_emissions`
unit-level emissions and generation data reported in :doc:`epacems`.
{% endblock %}
diff --git a/src/pudl/analysis/epacamd_eia.py b/src/pudl/analysis/epacamd_eia.py
index 5d093c9b29..a4b7a53792 100644
--- a/src/pudl/analysis/epacamd_eia.py
+++ b/src/pudl/analysis/epacamd_eia.py
@@ -7,8 +7,8 @@
Usage Example:
epacems = pudl.output.epacems.epacems(states=['ID'], years=[2020]) # subset for test
-epacamd_eia = pudl_out.epacamd_eia()
-filtered_crosswalk = filter_crosswalk(epacamd_eia, epacems)
+core_epa__assn_epacamd_eia = pudl_out.epacamd_eia()
+filtered_crosswalk = filter_crosswalk(core_epa__assn_epacamd_eia, epacems)
crosswalk_with_subplant_ids = pudl.etl.make_subplant_ids(filtered_crosswalk)
"""
@@ -37,18 +37,18 @@ def _get_unique_keys(epacems: pd.DataFrame | dd.DataFrame) -> pd.DataFrame:
def filter_crosswalk_by_epacems(
crosswalk: pd.DataFrame, epacems: pd.DataFrame | dd.DataFrame
) -> pd.DataFrame:
- """Inner join unique CEMS units with the epacamd_eia crosswalk.
+ """Inner join unique CEMS units with the core_epa__assn_epacamd_eia crosswalk.
This is essentially an empirical filter on EPA units. Instead of filtering by
construction/retirement dates in the crosswalk (thus assuming they are accurate),
use the presence/absence of CEMS data to filter the units.
Args:
- crosswalk: epacamd_eia crosswalk
+ crosswalk: core_epa__assn_epacamd_eia crosswalk
unique_epacems_ids (pd.DataFrame): unique ids from _get_unique_keys
Returns:
- The inner join of the epacamd_eia crosswalk and unique epacems units. Adds
+ The inner join of the core_epa__assn_epacamd_eia crosswalk and unique epacems units. Adds
the global ID column unit_id_epa.
"""
unique_epacems_ids = _get_unique_keys(epacems)
@@ -64,10 +64,10 @@ def filter_out_boiler_rows(crosswalk: pd.DataFrame) -> pd.DataFrame:
"""Remove rows that represent graph edges between generators and boilers.
Args:
- crosswalk (pd.DataFrame): epacamd_eia crosswalk
+ crosswalk (pd.DataFrame): core_epa__assn_epacamd_eia crosswalk
Returns:
- pd.DataFrame: the epacamd_eia crosswalk with boiler rows (many/one-to-many)
+ pd.DataFrame: the core_epa__assn_epacamd_eia crosswalk with boiler rows (many/one-to-many)
removed
"""
crosswalk = crosswalk.drop_duplicates(
@@ -82,12 +82,12 @@ def filter_crosswalk(
"""Remove unmapped crosswalk rows or duplicates due to m2m boiler relationships.
Args:
- crosswalk (pd.DataFrame): The epacamd_eia crosswalk.
+ crosswalk (pd.DataFrame): The core_epa__assn_epacamd_eia crosswalk.
epacems (Union[pd.DataFrame, dd.DataFrame]): Emissions data. Must contain
columns named ["plant_id_eia", "emissions_unit_id_epa"]
Returns:
- pd.DataFrame: A filtered copy of epacamd_eia crosswalk
+ pd.DataFrame: A filtered copy of core_epa__assn_epacamd_eia crosswalk
"""
filtered_crosswalk = filter_out_boiler_rows(crosswalk)
key_map = filter_crosswalk_by_epacems(filtered_crosswalk, epacems)
diff --git a/src/pudl/analysis/service_territory.py b/src/pudl/analysis/service_territory.py
index 1bde9aa4d6..c32062bb28 100644
--- a/src/pudl/analysis/service_territory.py
+++ b/src/pudl/analysis/service_territory.py
@@ -32,7 +32,8 @@
def utility_ids_all_eia(
- denorm_utilities_eia: pd.DataFrame, service_territory_eia861: pd.DataFrame
+ denorm_utilities_eia: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
) -> pd.DataFrame:
"""Compile IDs and Names of all known EIA Utilities.
@@ -43,7 +44,7 @@ def utility_ids_all_eia(
Args:
denorm_utilities_eia: De-normalized EIA 860 utility attributes table.
- service_territory_eia861: Normalized EIA 861 Service Territory table.
+ core_eia861__yearly_service_territory: Normalized EIA 861 Service Territory table.
Returns:
A DataFrame having 2 columns ``utility_id_eia`` and ``utility_name_eia``.
@@ -52,7 +53,9 @@ def utility_ids_all_eia(
pd.concat(
[
denorm_utilities_eia[["utility_id_eia", "utility_name_eia"]],
- service_territory_eia861[["utility_id_eia", "utility_name_eia"]],
+ core_eia861__yearly_service_territory[
+ ["utility_id_eia", "utility_name_eia"]
+ ],
]
)
.dropna(subset=["utility_id_eia"])
@@ -67,7 +70,7 @@ def get_territory_fips(
ids: Iterable[int],
assn: pd.DataFrame,
assn_col: str,
- service_territory_eia861: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
limit_by_state: bool = True,
) -> pd.DataFrame:
"""Compile county FIPS codes associated with an entity's service territory.
@@ -85,7 +88,7 @@ def get_territory_fips(
assn_col: Label of the dataframe column in ``assn`` that contains
the ID of the entities of interest. Should probably be either
``balancing_authority_id_eia`` or ``utility_id_eia``.
- service_territory_eia861: The EIA 861 Service Territory table.
+ core_eia861__yearly_service_territory: The EIA 861 Service Territory table.
limit_by_state: Whether to require that the counties associated
with the balancing authority are inside a state that has also been
seen in association with the balancing authority and the utility
@@ -103,7 +106,7 @@ def get_territory_fips(
assn = assn.drop("state", axis="columns")
return (
- pd.merge(assn, service_territory_eia861, how="inner")
+ pd.merge(assn, core_eia861__yearly_service_territory, how="inner")
.loc[
:,
[
@@ -196,7 +199,7 @@ def get_territory_geometries(
ids: Iterable[int],
assn: pd.DataFrame,
assn_col: str,
- service_territory_eia861: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
census_gdf: gpd.GeoDataFrame,
limit_by_state: bool = True,
dissolve: bool = False,
@@ -224,7 +227,7 @@ def get_territory_geometries(
assn_col: Label of the dataframe column in ``assn`` that contains
the ID of the entities of interest. Should probably be either
``balancing_authority_id_eia`` or ``utility_id_eia``.
- service_territory_eia861: The EIA 861 Service Territory table.
+ core_eia861__yearly_service_territory: The EIA 861 Service Territory table.
census_gdf: The US Census DP1 county-level geometries.
limit_by_state: Whether to require that the counties associated
with the balancing authority are inside a state that has also been
@@ -245,7 +248,7 @@ def get_territory_geometries(
ids=ids,
assn=assn,
assn_col=assn_col,
- service_territory_eia861=service_territory_eia861,
+ core_eia861__yearly_service_territory=core_eia861__yearly_service_territory,
limit_by_state=limit_by_state,
).pipe(
add_geometries,
@@ -274,11 +277,11 @@ def _save_geoparquet(gdf, entity_type, dissolve, limit_by_state):
def compile_geoms(
- balancing_authority_eia861: pd.DataFrame,
- balancing_authority_assn_eia861: pd.DataFrame,
+ core_eia861__yearly_balancing_authority: pd.DataFrame,
+ core_eia861__assn_balancing_authority: pd.DataFrame,
denorm_utilities_eia: pd.DataFrame,
- service_territory_eia861: pd.DataFrame,
- utility_assn_eia861: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
+ core_eia861__assn_utility: pd.DataFrame,
census_counties: pd.DataFrame,
entity_type: Literal["ba", "util"],
save_format: Literal["geoparquet", "geodataframe", "dataframe"],
@@ -300,16 +303,18 @@ def compile_geoms(
)
utilids_all_eia = utility_ids_all_eia(
- denorm_utilities_eia, service_territory_eia861
+ denorm_utilities_eia, core_eia861__yearly_service_territory
)
if entity_type == "ba":
- ids = balancing_authority_eia861.balancing_authority_id_eia.unique()
- assn = balancing_authority_assn_eia861
+ ids = (
+ core_eia861__yearly_balancing_authority.balancing_authority_id_eia.unique()
+ )
+ assn = core_eia861__assn_balancing_authority
assn_col = "balancing_authority_id_eia"
elif entity_type == "util":
ids = utilids_all_eia.utility_id_eia.unique()
- assn = utility_assn_eia861
+ assn = core_eia861__assn_utility
assn_col = "utility_id_eia"
else:
raise ValueError(f"Got {entity_type=}, but need either 'ba' or 'util'")
@@ -319,7 +324,7 @@ def compile_geoms(
ids=ids,
assn=assn,
assn_col=assn_col,
- service_territory_eia861=service_territory_eia861,
+ core_eia861__yearly_service_territory=core_eia861__yearly_service_territory,
census_gdf=census_counties,
limit_by_state=limit_by_state,
dissolve=dissolve,
@@ -379,11 +384,11 @@ def compiled_geoms_asset_factory(
)
def dagster_compile_geoms(
context,
- balancing_authority_eia861: pd.DataFrame,
- balancing_authority_assn_eia861: pd.DataFrame,
+ core_eia861__yearly_balancing_authority: pd.DataFrame,
+ core_eia861__assn_balancing_authority: pd.DataFrame,
denorm_utilities_eia: pd.DataFrame,
- service_territory_eia861: pd.DataFrame,
- utility_assn_eia861: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
+ core_eia861__assn_utility: pd.DataFrame,
core_censusdp1__entity_county: pd.DataFrame,
):
"""Compile all available utility or balancing authority geometries.
@@ -397,11 +402,11 @@ def dagster_compile_geoms(
save_format = context.op_config["save_format"]
return compile_geoms(
- balancing_authority_eia861=balancing_authority_eia861,
- balancing_authority_assn_eia861=balancing_authority_assn_eia861,
+ core_eia861__yearly_balancing_authority=core_eia861__yearly_balancing_authority,
+ core_eia861__assn_balancing_authority=core_eia861__assn_balancing_authority,
denorm_utilities_eia=denorm_utilities_eia,
- service_territory_eia861=service_territory_eia861,
- utility_assn_eia861=utility_assn_eia861,
+ core_eia861__yearly_service_territory=core_eia861__yearly_service_territory,
+ core_eia861__assn_utility=core_eia861__assn_utility,
census_counties=core_censusdp1__entity_county,
entity_type=entity_type,
dissolve=dissolve,
@@ -594,15 +599,19 @@ def main():
for kwargs in kwargs_dicts:
_ = compile_geoms(
- balancing_authority_eia861=pd.read_sql(
- "balancing_authority_eia861", pudl_engine
+ core_eia861__yearly_balancing_authority=pd.read_sql(
+ "core_eia861__yearly_balancing_authority", pudl_engine
),
- balancing_authority_assn_eia861=pd.read_sql(
- "balancing_authority_assn_eia861", pudl_engine
+ core_eia861__assn_balancing_authority=pd.read_sql(
+ "core_eia861__assn_balancing_authority", pudl_engine
),
denorm_utilities_eia=pd.read_sql(AssetKey("denorm_utilities_eia")),
- service_territory_eia861=pd.read_sql(AssetKey("service_territory_eia861")),
- utility_assn_eia861=pd.read_sql("utility_assn_eia861", pudl_engine),
+ core_eia861__yearly_service_territory=pd.read_sql(
+ AssetKey("core_eia861__yearly_service_territory")
+ ),
+ core_eia861__assn_utility=pd.read_sql(
+ "core_eia861__assn_utility", pudl_engine
+ ),
census_counties=county_gdf,
dissolve=args.dissolve,
save_format="geoparquet",
diff --git a/src/pudl/analysis/state_demand.py b/src/pudl/analysis/state_demand.py
index 1bd9e1abe1..9f372e08ce 100644
--- a/src/pudl/analysis/state_demand.py
+++ b/src/pudl/analysis/state_demand.py
@@ -273,12 +273,12 @@ def load_ventyx_hourly_state_demand(path: str) -> pd.DataFrame:
},
)
def load_hourly_demand_matrix_ferc714(
- demand_hourly_pa_ferc714: pd.DataFrame,
+ core_ferc714__hourly_demand_pa: pd.DataFrame,
) -> tuple[pd.DataFrame, pd.DataFrame]:
"""Read and format FERC 714 hourly demand into matrix form.
Args:
- demand_hourly_pa_ferc714: FERC 714 hourly demand time series by planning area.
+ core_ferc714__hourly_demand_pa: FERC 714 hourly demand time series by planning area.
Returns:
Hourly demand as a matrix with a `datetime` row index
@@ -289,19 +289,22 @@ def load_hourly_demand_matrix_ferc714(
of each `respondent_id_ferc714` and reporting `year` (int).
"""
# Convert UTC to local time (ignoring daylight savings)
- demand_hourly_pa_ferc714["utc_offset"] = demand_hourly_pa_ferc714["timezone"].map(
- STANDARD_UTC_OFFSETS
- )
- demand_hourly_pa_ferc714["datetime"] = utc_to_local(
- demand_hourly_pa_ferc714["utc_datetime"], demand_hourly_pa_ferc714["utc_offset"]
+ core_ferc714__hourly_demand_pa["utc_offset"] = core_ferc714__hourly_demand_pa[
+ "timezone"
+ ].map(STANDARD_UTC_OFFSETS)
+ core_ferc714__hourly_demand_pa["datetime"] = utc_to_local(
+ core_ferc714__hourly_demand_pa["utc_datetime"],
+ core_ferc714__hourly_demand_pa["utc_offset"],
)
# Pivot to demand matrix: timestamps x respondents
- matrix = demand_hourly_pa_ferc714.pivot(
+ matrix = core_ferc714__hourly_demand_pa.pivot(
index="datetime", columns="respondent_id_ferc714", values="demand_mwh"
)
# List timezone by year for each respondent
- demand_hourly_pa_ferc714["year"] = demand_hourly_pa_ferc714["report_date"].dt.year
- utc_offset = demand_hourly_pa_ferc714.groupby(
+ core_ferc714__hourly_demand_pa["year"] = core_ferc714__hourly_demand_pa[
+ "report_date"
+ ].dt.year
+ utc_offset = core_ferc714__hourly_demand_pa.groupby(
["respondent_id_ferc714", "year"], as_index=False
)["utc_offset"].first()
return matrix, utc_offset
@@ -545,17 +548,17 @@ def census_counties(
def total_state_sales_eia861(
- sales_eia861,
+ core_eia861__yearly_sales,
) -> pd.DataFrame:
"""Read and format EIA 861 sales by state and year.
Args:
- sales_eia861: Electricity sales data from EIA 861.
+ core_eia861__yearly_sales: Electricity sales data from EIA 861.
Returns:
Dataframe with columns `state_id_fips`, `year`, `demand_mwh`.
"""
- df = sales_eia861.groupby(["state", "report_date"], as_index=False)[
+ df = core_eia861__yearly_sales.groupby(["state", "report_date"], as_index=False)[
"sales_mwh"
].sum()
# Convert report_date to year
@@ -589,7 +592,7 @@ def predicted_state_hourly_demand(
imputed_hourly_demand_ferc714: pd.DataFrame,
core_censusdp1__entity_county: pd.DataFrame,
fipsified_respondents_ferc714: pd.DataFrame,
- sales_eia861: pd.DataFrame = None,
+ core_eia861__yearly_sales: pd.DataFrame = None,
) -> pd.DataFrame:
"""Predict state hourly demand.
@@ -599,7 +602,7 @@ def predicted_state_hourly_demand(
core_censusdp1__entity_county: The county layer of the Census DP1 shapefile.
fipsified_respondents_ferc714: Annual respondents with the county FIPS IDs
for their service territories.
- sales_eia861: EIA 861 sales data. If provided, the predicted hourly demand is
+ core_eia861__yearly_sales: EIA 861 sales data. If provided, the predicted hourly demand is
scaled to match these totals.
Returns:
@@ -613,7 +616,7 @@ def predicted_state_hourly_demand(
# Call necessary functions
count_assign_ferc714 = county_assignments_ferc714(fipsified_respondents_ferc714)
counties = census_counties(core_censusdp1__entity_county)
- total_sales_eia861 = total_state_sales_eia861(sales_eia861)
+ total_sales_eia861 = total_state_sales_eia861(core_eia861__yearly_sales)
# Pre-compute list of respondent-years with demand
with_demand = (
diff --git a/src/pudl/convert/epacems_to_parquet.py b/src/pudl/convert/epacems_to_parquet.py
index f15d462acc..81c5066aae 100755
--- a/src/pudl/convert/epacems_to_parquet.py
+++ b/src/pudl/convert/epacems_to_parquet.py
@@ -111,7 +111,9 @@ def get_epacems_job():
assets=pudl.etl.default_assets,
resources=pudl.etl.default_resources,
jobs=[
- define_asset_job("epacems_job", selection="hourly_emissions_epacems")
+ define_asset_job(
+ "epacems_job", selection="core_epacems__hourly_emissions"
+ )
],
).get_job_def("epacems_job")
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index 03c49357e5..98d506eb72 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -27,18 +27,20 @@
default_assets = (
*load_assets_from_modules([eia_bulk_elec_assets], group_name="eia_bulk_elec"),
- *load_assets_from_modules([epacems_assets], group_name="epacems"),
+ *load_assets_from_modules([epacems_assets], group_name="core_epacems"),
*load_assets_from_modules([pudl.extract.eia860], group_name="raw_eia860"),
*load_assets_from_modules([pudl.transform.eia860], group_name="_core_eia860"),
*load_assets_from_modules([pudl.extract.eia861], group_name="raw_eia861"),
- *load_assets_from_modules([pudl.transform.eia861], group_name="clean_eia861"),
+ *load_assets_from_modules(
+ [pudl.transform.eia861], group_name="core_eia861"
+ ), # TODO: move one _core asset to separate module?
*load_assets_from_modules([pudl.extract.eia923], group_name="raw_eia923"),
*load_assets_from_modules([pudl.transform.eia923], group_name="_core_eia923"),
*load_assets_from_modules([pudl.transform.eia], group_name="core_eia"),
*load_assets_from_modules([pudl.extract.ferc1], group_name="raw_ferc1"),
*load_assets_from_modules([pudl.transform.ferc1], group_name="core_ferc1"),
*load_assets_from_modules([pudl.extract.ferc714], group_name="raw_ferc714"),
- *load_assets_from_modules([pudl.transform.ferc714], group_name="clean_ferc714"),
+ *load_assets_from_modules([pudl.transform.ferc714], group_name="core_ferc714"),
*load_assets_from_modules([pudl.output.ferc714], group_name="respondents_ferc714"),
*load_assets_from_modules(
[pudl.convert.censusdp1tract_to_sqlite, pudl.output.censusdp1tract],
@@ -91,7 +93,7 @@ def create_non_cems_selection(all_assets: list[AssetsDefinition]) -> AssetSelect
all_asset_keys = pudl.helpers.get_asset_keys(all_assets)
all_selection = AssetSelection.keys(*all_asset_keys)
- cems_selection = AssetSelection.keys(AssetKey("hourly_emissions_epacems"))
+ cems_selection = AssetSelection.keys(AssetKey("core_epacems__hourly_emissions"))
return all_selection - cems_selection.downstream()
@@ -123,7 +125,7 @@ def load_dataset_settings_from_file(setting_filename: str) -> dict:
name="etl_full_no_cems",
selection=create_non_cems_selection(default_assets),
description="This job executes all years of all assets except the "
- "hourly_emissions_epacems asset and all assets downstream.",
+ "core_epacems__hourly_emissions asset and all assets downstream.",
),
define_asset_job(
name="etl_fast",
@@ -147,7 +149,7 @@ def load_dataset_settings_from_file(setting_filename: str) -> dict:
}
},
description="This job executes the most recent year of each asset except the "
- "hourly_emissions_epacems asset and all assets downstream.",
+ "core_epacems__hourly_emissions asset and all assets downstream.",
),
],
)
diff --git a/src/pudl/etl/eia_bulk_elec_assets.py b/src/pudl/etl/eia_bulk_elec_assets.py
index 419bc770fe..f8cd5fbf69 100644
--- a/src/pudl/etl/eia_bulk_elec_assets.py
+++ b/src/pudl/etl/eia_bulk_elec_assets.py
@@ -10,7 +10,7 @@
io_manager_key="pudl_sqlite_io_manager",
required_resource_keys={"datastore"},
)
-def fuel_receipts_costs_aggs_eia(context):
+def core_eia__yearly_fuel_receipts_costs_aggs(context):
"""Extract and transform EIA bulk electricity aggregates.
Returns:
diff --git a/src/pudl/etl/epacems_assets.py b/src/pudl/etl/epacems_assets.py
index b86fb9c644..67938ddf01 100644
--- a/src/pudl/etl/epacems_assets.py
+++ b/src/pudl/etl/epacems_assets.py
@@ -1,6 +1,6 @@
"""EPA CEMS Hourly Emissions assets.
-The :func:`hourly_emissions_epacems` asset defined in this module uses a dagster pattern
+The :func:`core_epacems__hourly_emissions` asset defined in this module uses a dagster pattern
that is unique from other PUDL assets. The underlying architecture uses ops to create a
dynamic graph
which is wrapped by a special asset called a graph backed asset that creates an asset
@@ -45,7 +45,7 @@ def get_years_from_settings(context):
def process_single_year(
context,
year,
- epacamd_eia: pd.DataFrame,
+ core_epa__assn_epacamd_eia: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
) -> YearPartitions:
"""Process a single year of EPA CEMS data.
@@ -53,15 +53,15 @@ def process_single_year(
Args:
context: dagster keyword that provides access to resources and config.
year: Year of data to process.
- epacamd_eia: The EPA EIA crosswalk table used for harmonizing the
+ core_epa__assn_epacamd_eia: The EPA EIA crosswalk table used for harmonizing the
ORISPL code with EIA.
core_eia__entity_plants: The EIA Plant entities used for aligning timezones.
"""
ds = context.resources.datastore
epacems_settings = context.resources.dataset_settings.epacems
- schema = Resource.from_id("hourly_emissions_epacems").to_pyarrow()
- partitioned_path = PudlPaths().output_dir / "hourly_emissions_epacems"
+ schema = Resource.from_id("core_epacems__hourly_emissions").to_pyarrow()
+ partitioned_path = PudlPaths().output_dir / "core_epacems__hourly_emissions"
partitioned_path.mkdir(exist_ok=True)
for state in epacems_settings.states:
@@ -69,7 +69,7 @@ def process_single_year(
df = pudl.extract.epacems.extract(year=year, state=state, ds=ds)
if not df.empty: # If state-year combination has data
df = pudl.transform.epacems.transform(
- df, epacamd_eia, core_eia__entity_plants
+ df, core_epa__assn_epacamd_eia, core_eia__entity_plants
)
table = pa.Table.from_pandas(df, schema=schema, preserve_index=False)
@@ -93,9 +93,9 @@ def consolidate_partitions(context, partitions: list[YearPartitions]) -> None:
context: dagster keyword that provides access to resources and config.
partitions: Year and state combinations in the output database.
"""
- partitioned_path = PudlPaths().output_dir / "hourly_emissions_epacems"
- monolithic_path = PudlPaths().output_dir / "hourly_emissions_epacems.parquet"
- schema = Resource.from_id("hourly_emissions_epacems").to_pyarrow()
+ partitioned_path = PudlPaths().output_dir / "core_epacems__hourly_emissions"
+ monolithic_path = PudlPaths().output_dir / "core_epacems__hourly_emissions.parquet"
+ schema = Resource.from_id("core_epacems__hourly_emissions").to_pyarrow()
with pq.ParquetWriter(
where=monolithic_path, schema=schema, compression="snappy", version="2.6"
@@ -111,8 +111,9 @@ def consolidate_partitions(context, partitions: list[YearPartitions]) -> None:
@graph_asset
-def hourly_emissions_epacems(
- epacamd_eia_unique: pd.DataFrame, core_eia__entity_plants: pd.DataFrame
+def core_epacems__hourly_emissions(
+ _core_epa__assn_epacamd_eia_unique: pd.DataFrame,
+ core_eia__entity_plants: pd.DataFrame,
) -> None:
"""Extract, transform and load CSVs for EPA CEMS.
@@ -125,7 +126,7 @@ def hourly_emissions_epacems(
partitions = years.map(
lambda year: process_single_year(
year,
- epacamd_eia_unique,
+ _core_epa__assn_epacamd_eia_unique,
core_eia__entity_plants,
)
)
@@ -134,11 +135,13 @@ def hourly_emissions_epacems(
@asset(
ins={
- "hourly_emissions_epacems": AssetIn(input_manager_key="epacems_io_manager"),
+ "core_epacems__hourly_emissions": AssetIn(
+ input_manager_key="epacems_io_manager"
+ ),
}
)
def emissions_unit_ids_epacems(
- hourly_emissions_epacems: dd.DataFrame,
+ core_epacems__hourly_emissions: dd.DataFrame,
) -> pd.DataFrame:
"""Make unique annual plant_id_eia and emissions_unit_id_epa.
@@ -146,7 +149,9 @@ def emissions_unit_ids_epacems(
dataframe with unique set of: "plant_id_eia", "year" and "emissions_unit_id_epa"
"""
epacems_ids = (
- hourly_emissions_epacems[["plant_id_eia", "year", "emissions_unit_id_epa"]]
+ core_epacems__hourly_emissions[
+ ["plant_id_eia", "year", "emissions_unit_id_epa"]
+ ]
.drop_duplicates()
.compute()
)
diff --git a/src/pudl/etl/glue_assets.py b/src/pudl/etl/glue_assets.py
index c8995d5ecd..9fb6859e9c 100644
--- a/src/pudl/etl/glue_assets.py
+++ b/src/pudl/etl/glue_assets.py
@@ -19,8 +19,8 @@
outs={
table_name: AssetOut(io_manager_key="pudl_sqlite_io_manager")
for table_name in Package.get_etl_group_tables("glue")
- # do not load epacamd_eia glue assets bc they are stand-alone assets below.
- if "epacamd_eia" not in table_name
+ # do not load core_epa__assn_epacamd_eia glue assets bc they are stand-alone assets below.
+ if "core_epa__assn_epacamd_eia" not in table_name
},
required_resource_keys={"datastore", "dataset_settings"},
)
@@ -79,7 +79,7 @@ def raw_epacamd_eia(context) -> pd.DataFrame:
@asset(
required_resource_keys={"dataset_settings"}, io_manager_key="pudl_sqlite_io_manager"
)
-def epacamd_eia(
+def core_epa__assn_epacamd_eia(
context,
raw_epacamd_eia: pd.DataFrame,
core_eia__entity_generators: pd.DataFrame,
@@ -209,10 +209,12 @@ def epacamd_eia(
@asset
-def epacamd_eia_unique(epacamd_eia: pd.DataFrame) -> pd.DataFrame:
- """Intermediate asset that contains all unique epacamd_eia matches.
+def _core_epa__assn_epacamd_eia_unique(
+ core_epa__assn_epacamd_eia: pd.DataFrame,
+) -> pd.DataFrame:
+ """Intermediate asset that contains all unique core_epa__assn_epacamd_eia matches.
- The epacamd_eia asset contains crosswalk matches from both 2018 and 2021. This
+ The core_epa__assn_epacamd_eia asset contains crosswalk matches from both 2018 and 2021. This
means there are many duplicate matches found from both years. Several downstream
assets expect these matches to be unique, so this asset will drop duplicates to
serve as the input to those downstream assets. This asset, however, will not itself
@@ -220,26 +222,26 @@ def epacamd_eia_unique(epacamd_eia: pd.DataFrame) -> pd.DataFrame:
taking the match from the most recent year (2021).
Args:
- epacamd_eia: Cleaned crosswalk with duplicate matches.
+ core_epa__assn_epacamd_eia: Cleaned crosswalk with duplicate matches.
Returns:
Cleaned crosswalk with duplicates removed.
"""
# Drop fully duplicated matches
- epacamd_eia = epacamd_eia.drop_duplicates(
- subset=epacamd_eia.columns.difference(["report_year"])
+ core_epa__assn_epacamd_eia = core_epa__assn_epacamd_eia.drop_duplicates(
+ subset=core_epa__assn_epacamd_eia.columns.difference(["report_year"])
)
# Find mismatches where there are different plant_id_eia values between years for
# the same plant_id_epa and emissions_unit_id_epa value.
- one_to_many = epacamd_eia.groupby(["plant_id_epa", "emissions_unit_id_epa"]).filter(
- lambda x: x.plant_id_eia.nunique() > 1 and x.report_year.nunique() > 1
- )
+ one_to_many = core_epa__assn_epacamd_eia.groupby(
+ ["plant_id_epa", "emissions_unit_id_epa"]
+ ).filter(lambda x: x.plant_id_eia.nunique() > 1 and x.report_year.nunique() > 1)
# For each mismatch drop the one from 2018, then drop report_year column
- return epacamd_eia.drop(one_to_many[one_to_many.report_year == 2018].index).drop(
- ["report_year"], axis=1
- )
+ return core_epa__assn_epacamd_eia.drop(
+ one_to_many[one_to_many.report_year == 2018].index
+ ).drop(["report_year"], axis=1)
def correct_epa_eia_plant_id_mapping(df: pd.DataFrame) -> pd.DataFrame:
@@ -259,16 +261,16 @@ def correct_epa_eia_plant_id_mapping(df: pd.DataFrame) -> pd.DataFrame:
@asset(io_manager_key="pudl_sqlite_io_manager")
-def epacamd_eia_subplant_ids(
- epacamd_eia_unique: pd.DataFrame,
+def core_epa__assn_epacamd_eia_subplant_ids(
+ _core_epa__assn_epacamd_eia_unique: pd.DataFrame,
core_eia860__scd_generators: pd.DataFrame,
emissions_unit_ids_epacems: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Groups units and generators into unique subplant groups.
- This takes :func:`epacamd_eia_unique` as an input because this asset so it doesn't
- have to deal with duplicate matches that may be present in the :func:`epacamd_eia`
+ This takes :func:`_core_epa__assn_epacamd_eia_unique` as an input because this asset so it doesn't
+ have to deal with duplicate matches that may be present in the :func:`core_epa__assn_epacamd_eia`
asset due to its use of multiple years of raw crosswalk outputs.
This function consists of three primary parts:
@@ -295,7 +297,7 @@ def epacamd_eia_subplant_ids(
# BEFORE this step so the subplant IDs can benefit from the more fleshed out units
epacamd_eia_complete = (
augement_crosswalk_with_generators_eia860(
- epacamd_eia_unique, core_eia860__scd_generators
+ _core_epa__assn_epacamd_eia_unique, core_eia860__scd_generators
)
.pipe(augement_crosswalk_with_epacamd_ids, emissions_unit_ids_epacems)
.pipe(augement_crosswalk_with_bga_eia860, core_eia860__assn_boiler_generator)
@@ -408,10 +410,10 @@ def _prep_for_networkx(crosswalk: pd.DataFrame) -> pd.DataFrame:
"""Make surrogate keys for combustors and generators.
Args:
- crosswalk (pd.DataFrame): epacamd_eia crosswalk
+ crosswalk (pd.DataFrame): core_epa__assn_epacamd_eia crosswalk
Returns:
- pd.DataFrame: copy of epacamd_eia crosswalk with new surrogate ID columns
+ pd.DataFrame: copy of core_epa__assn_epacamd_eia crosswalk with new surrogate ID columns
'combustor_id' and 'generator_id'
"""
prepped = crosswalk.copy()
@@ -432,11 +434,11 @@ def _subplant_ids_from_prepped_crosswalk(prepped: pd.DataFrame) -> pd.DataFrame:
"""Use networkx graph analysis to create subplant IDs from crosswalk edge list.
Args:
- prepped (pd.DataFrame): epacamd_eia crosswalked passed through
+ prepped (pd.DataFrame): core_epa__assn_epacamd_eia crosswalked passed through
_prep_for_networkx()
Returns:
- pd.DataFrame: copy of epacamd_eia crosswalk plus new column 'global_subplant_id'
+ pd.DataFrame: copy of core_epa__assn_epacamd_eia crosswalk plus new column 'global_subplant_id'
"""
graph = nx.from_pandas_edgelist(
prepped,
@@ -529,8 +531,8 @@ def make_subplant_ids(crosswalk: pd.DataFrame) -> pd.DataFrame:
Usage Example:
epacems = pudl.output.epacems.epacems(states=['ID']) # small subset for quick test
- epacamd_eia = pudl_out.epacamd_eia()
- filtered_crosswalk = pudl.analysis.epacamd_eia.filter_crosswalk(epacamd_eia, epacems)
+ core_epa__assn_epacamd_eia = pudl_out.epacamd_eia()
+ filtered_crosswalk = pudl.analysis.epacamd_eia.filter_crosswalk(core_epa__assn_epacamd_eia, epacems)
crosswalk_with_subplant_ids = make_subplant_ids(filtered_crosswalk)
Note that sub-plant ids should be used in conjunction with `plant_id_eia` vs.
@@ -538,7 +540,7 @@ def make_subplant_ids(crosswalk: pd.DataFrame) -> pd.DataFrame:
the transform process.
Args:
- crosswalk (pd.DataFrame): The epacamd_eia crosswalk
+ crosswalk (pd.DataFrame): The core_epa__assn_epacamd_eia crosswalk
Returns:
pd.DataFrame: An edge list connecting EPA units to EIA generators, with
diff --git a/src/pudl/extract/epacems.py b/src/pudl/extract/epacems.py
index c656eb8aeb..335084f2ad 100644
--- a/src/pudl/extract/epacems.py
+++ b/src/pudl/extract/epacems.py
@@ -14,7 +14,7 @@
Pre-transform, the `plant_id_epa` field is a close but not perfect indicator for
`plant_id_eia`. In the raw data it's called `Facility ID` (ORISPL code) but that's not
-entirely accurate. The epacamd_eia crosswalk will show that the mapping between
+entirely accurate. The core_epa__assn_epacamd_eia crosswalk will show that the mapping between
`Facility ID` as it appears in CEMS and the `plant_id_eia` field used in EIA data.
Hence, we've called it `plant_id_epa` until it gets transformed into `plant_id_eia`
during the transform process with help from the crosswalk.
@@ -187,6 +187,6 @@ def extract(year: int, state: str, ds: Datastore):
logger.warning(
f"No data found for {state} in {year}. Returning empty dataframe."
)
- res = Resource.from_id("hourly_emissions_epacems")
+ res = Resource.from_id("core_epacems__hourly_emissions")
df = res.format_df(pd.DataFrame())
return df
diff --git a/src/pudl/glue/ferc1_eia.py b/src/pudl/glue/ferc1_eia.py
index a5319273f8..c370bf1297 100644
--- a/src/pudl/glue/ferc1_eia.py
+++ b/src/pudl/glue/ferc1_eia.py
@@ -392,19 +392,21 @@ def label_plants_eia(pudl_out: pudl.output.pudltabl.PudlTabl):
def label_utilities_ferc1_dbf(
- utilities_ferc1_dbf: pd.DataFrame, util_ids_ferc1_raw_dbf: pd.DataFrame
+ core_pudl__assn_utilities_ferc1_dbf: pd.DataFrame,
+ util_ids_ferc1_raw_dbf: pd.DataFrame,
) -> pd.DataFrame:
"""Get the DBF FERC1 utilities with their names."""
- return utilities_ferc1_dbf.merge(
+ return core_pudl__assn_utilities_ferc1_dbf.merge(
util_ids_ferc1_raw_dbf, how="outer", on="utility_id_ferc1_dbf"
)
def label_utilities_ferc1_xbrl(
- utilities_ferc1_xbrl: pd.DataFrame, util_ids_ferc1_raw_xbrl: pd.DataFrame
+ core_pudl__assn_utilities_ferc1_xbrl: pd.DataFrame,
+ util_ids_ferc1_raw_xbrl: pd.DataFrame,
) -> pd.DataFrame:
"""Get the XBRL FERC1 utilities with their names."""
- return utilities_ferc1_xbrl.merge(
+ return core_pudl__assn_utilities_ferc1_xbrl.merge(
util_ids_ferc1_raw_xbrl, how="outer", on="utility_id_ferc1_xbrl"
)
@@ -516,16 +518,16 @@ def glue(ferc1=False, eia=False):
- utilities: Unique id and name for each utility for use across the
PUDL DB.
- plants: Unique id and name for each plant for use across the PUDL DB.
- - utilities_eia: EIA operator ids and names attached to a PUDL
+ - core_pudl__assn_utilities_eia: EIA operator ids and names attached to a PUDL
utility id.
- - plants_eia: EIA plant ids and names attached to a PUDL plant id.
+ - core_pudl__assn_plants_eia: EIA plant ids and names attached to a PUDL plant id.
- utilities_ferc: FERC respondent ids & names attached to a PUDL
utility id.
- plants_ferc: A combination of FERC plant names and respondent ids,
associated with a PUDL plant ID. This is necessary because FERC does
not provide plant ids, so the unique plant identifier is a
combination of the respondent id and plant name.
- - utility_plant_assn: An association table which describes which plants
+ - core_pudl__assn_utilities_plants: An association table which describes which plants
have relationships with what utilities. If a record exists in this
table then combination of PUDL utility id & PUDL plant id does have
an association of some kind. The nature of that association is
@@ -553,36 +555,36 @@ def glue(ferc1=False, eia=False):
# from other tables.
plant_map = get_plant_map()
- plants_pudl = (
+ core_pudl__entity_plants_pudl = (
plant_map.loc[:, ["plant_id_pudl", "plant_name_pudl"]]
.drop_duplicates("plant_id_pudl")
.dropna(how="all")
)
- plants_eia = (
+ core_pudl__assn_plants_eia = (
plant_map.loc[:, ["plant_id_eia", "plant_name_eia", "plant_id_pudl"]]
.drop_duplicates("plant_id_eia")
.dropna(subset=["plant_id_eia"])
)
- plants_ferc1 = (
+ core_pudl__assn_plants_ferc1 = (
plant_map.loc[:, ["plant_name_ferc1", "utility_id_ferc1", "plant_id_pudl"]]
.drop_duplicates(["plant_name_ferc1", "utility_id_ferc1"])
.dropna(subset=["utility_id_ferc1", "plant_name_ferc1"])
)
utility_map_pudl = get_utility_map_pudl()
- utilities_pudl = (
+ core_pudl__entity_utilities_pudl = (
utility_map_pudl.loc[:, ["utility_id_pudl", "utility_name_pudl"]]
.drop_duplicates("utility_id_pudl")
.dropna(how="all")
)
- utilities_eia = (
+ core_pudl__assn_utilities_eia = (
utility_map_pudl.loc[
:, ["utility_id_eia", "utility_name_eia", "utility_id_pudl"]
]
.drop_duplicates("utility_id_eia")
.dropna(subset=["utility_id_eia"])
)
- utilities_ferc1 = (
+ core_pudl__assn_utilities_ferc1 = (
utility_map_pudl.loc[
:, ["utility_id_ferc1", "utility_name_ferc1", "utility_id_pudl"]
]
@@ -591,12 +593,12 @@ def glue(ferc1=False, eia=False):
)
utility_map_ferc1 = get_utility_map_ferc1()
- utilities_ferc1_dbf = (
+ core_pudl__assn_utilities_ferc1_dbf = (
utility_map_ferc1.loc[:, ["utility_id_ferc1", "utility_id_ferc1_dbf"]]
.drop_duplicates("utility_id_ferc1_dbf")
.dropna(subset=["utility_id_ferc1_dbf"])
)
- utilities_ferc1_xbrl = (
+ core_pudl__assn_utilities_ferc1_xbrl = (
utility_map_ferc1.loc[:, ["utility_id_ferc1", "utility_id_ferc1_xbrl"]]
.drop_duplicates("utility_id_ferc1_xbrl")
.dropna(subset=["utility_id_ferc1_xbrl"])
@@ -619,16 +621,22 @@ def glue(ferc1=False, eia=False):
# Now we can concatenate the two dataframes, and get rid of all the columns
# except for plant_id and utility_id (which determine the utility to plant
# association), and get rid of any duplicates or lingering NaN values...
- utility_plant_assn = pd.concat(
+ core_pudl__assn_utilities_plants = pd.concat(
[
- pd.merge(utilities_eia, plants_utilities_eia, on="utility_id_eia"),
- pd.merge(utilities_ferc1, plants_utilities_ferc1, on="utility_id_ferc1"),
+ pd.merge(
+ core_pudl__assn_utilities_eia, plants_utilities_eia, on="utility_id_eia"
+ ),
+ pd.merge(
+ core_pudl__assn_utilities_ferc1,
+ plants_utilities_ferc1,
+ on="utility_id_ferc1",
+ ),
],
sort=True,
)
- utility_plant_assn = (
- utility_plant_assn.loc[:, ["plant_id_pudl", "utility_id_pudl"]]
+ core_pudl__assn_utilities_plants = (
+ core_pudl__assn_utilities_plants.loc[:, ["plant_id_pudl", "utility_id_pudl"]]
.dropna()
.drop_duplicates()
)
@@ -641,7 +649,12 @@ def glue(ferc1=False, eia=False):
# Is this check still meaningful with all the EIA plants and utilities that
# we're harvesting IDs for, with no names?
for df, df_n in zip(
- [plants_eia, plants_ferc1, utilities_eia, utilities_ferc1],
+ [
+ core_pudl__assn_plants_eia,
+ core_pudl__assn_plants_ferc1,
+ core_pudl__assn_utilities_eia,
+ core_pudl__assn_utilities_ferc1,
+ ],
["plants_eia", "plants_ferc1", "utilities_eia", "utilities_ferc1"],
):
if df[pd.isnull(df).any(axis="columns")].shape[0] > 1:
@@ -655,20 +668,20 @@ def glue(ferc1=False, eia=False):
# sanity checks to ensure that it's (at least kind of) clean.
# INSERT SANITY HERE
- # Any FERC respondent_id that appears in plants_ferc1 must also exist in
- # utilities_ferc1:
+ # Any FERC respondent_id that appears in core_pudl__assn_plants_ferc1 must also exist in
+ # core_pudl__assn_utilities_ferc1:
# INSERT MORE SANITY HERE
glue_dfs = {
- "plants_pudl": plants_pudl,
- "utilities_pudl": utilities_pudl,
- "plants_ferc1": plants_ferc1,
- "utilities_ferc1": utilities_ferc1,
- "utilities_ferc1_dbf": utilities_ferc1_dbf,
- "utilities_ferc1_xbrl": utilities_ferc1_xbrl,
- "plants_eia": plants_eia,
- "utilities_eia": utilities_eia,
- "utility_plant_assn": utility_plant_assn,
+ "core_pudl__entity_plants_pudl": core_pudl__entity_plants_pudl,
+ "core_pudl__entity_utilities_pudl": core_pudl__entity_utilities_pudl,
+ "core_pudl__assn_plants_ferc1": core_pudl__assn_plants_ferc1,
+ "core_pudl__assn_utilities_ferc1": core_pudl__assn_utilities_ferc1,
+ "core_pudl__assn_utilities_ferc1_dbf": core_pudl__assn_utilities_ferc1_dbf,
+ "core_pudl__assn_utilities_ferc1_xbrl": core_pudl__assn_utilities_ferc1_xbrl,
+ "core_pudl__assn_plants_eia": core_pudl__assn_plants_eia,
+ "core_pudl__assn_utilities_eia": core_pudl__assn_utilities_eia,
+ "core_pudl__assn_utilities_plants": core_pudl__assn_utilities_plants,
}
return glue_dfs
diff --git a/src/pudl/io_managers.py b/src/pudl/io_managers.py
index c3fab27888..f597752376 100644
--- a/src/pudl/io_managers.py
+++ b/src/pudl/io_managers.py
@@ -767,7 +767,7 @@ def epacems_io_manager(
init_context: InitResourceContext,
) -> PandasParquetIOManager:
"""IO Manager that writes EPA CEMS partitions to individual parquet files."""
- schema = Resource.from_id("hourly_emissions_epacems").to_pyarrow()
+ schema = Resource.from_id("core_epacems__hourly_emissions").to_pyarrow()
return PandasParquetIOManager(
base_path=UPath(PudlPaths().output_dir), schema=schema
)
diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py
index a45899ea29..1a910cad1b 100644
--- a/src/pudl/metadata/classes.py
+++ b/src/pudl/metadata/classes.py
@@ -1930,11 +1930,11 @@ class DatasetteMetadata(Base):
xbrl_resources: dict[str, list[Resource]] = {}
label_columns: dict[str, str] = {
"core_eia__entity_plants": "plant_name_eia",
- "plants_ferc1": "plant_name_ferc1",
- "plants_pudl": "plant_name_pudl",
+ "core_pudl__assn_plants_ferc1": "plant_name_ferc1",
+ "core_pudl__entity_plants_pudl": "plant_name_pudl",
"core_eia__entity_utilities": "utility_name_eia",
- "utilities_ferc1": "utility_name_ferc1",
- "utilities_pudl": "utility_name_pudl",
+ "core_pudl__assn_utilities_ferc1": "utility_name_ferc1",
+ "core_pudl__entity_utilities_pudl": "utility_name_pudl",
}
@classmethod
diff --git a/src/pudl/metadata/dfs.py b/src/pudl/metadata/dfs.py
index cb58218971..f1a0fd24ea 100644
--- a/src/pudl/metadata/dfs.py
+++ b/src/pudl/metadata/dfs.py
@@ -263,7 +263,7 @@
),
)
"""Association table describing the many-to-many relationships between plant sectors and
-various aggregates in fuel_receipts_costs_aggs_eia."""
+various aggregates in core_eia__yearly_fuel_receipts_costs_aggs."""
EIA_FUEL_AGGREGATE_ASSN = pd.read_csv(
@@ -288,7 +288,7 @@
),
)
"""Association table describing the many-to-many relationships between fuel types and
-various aggregates in fuel_receipts_costs_aggs_eia.
+various aggregates in core_eia__yearly_fuel_receipts_costs_aggs.
Missing from these aggregates are all the "other" categories of gases: OG, BFG, SGP, SC,
PG. But those gases combine for about 0.2% of total MMBTU of reported fuel receipts.
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 566c99458d..24fc88931d 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -2873,7 +2873,7 @@
"opex_rents": {"description": "Rent expenses for the transmission line."},
"opex_total": {"description": "Overall expenses for the transmission line."},
},
- "demand_hourly_pa_ferc714": {
+ "core_ferc714__hourly_demand_pa": {
"timezone": {
"constraints": {
"enum": [
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 45928553e5..33f8634a92 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -12,20 +12,20 @@
"foreign_key_rules": {
"fields": [["balancing_authority_code_eia"]],
"exclude": [
- "advanced_metering_infrastructure_eia861",
- "balancing_authority_eia861",
+ "core_eia861__yearly_advanced_metering_infrastructure",
+ "core_eia861__yearly_balancing_authority",
"compiled_geometry_balancing_authority_eia861",
- "demand_response_eia861",
- "demand_response_water_heater_eia861",
- "dynamic_pricing_eia861",
- "energy_efficiency_eia861",
+ "core_eia861__yearly_demand_response",
+ "core_eia861__yearly_demand_response_water_heater",
+ "core_eia861__yearly_dynamic_pricing",
+ "core_eia861__yearly_energy_efficiency",
"fipsified_respondents_ferc714",
- "net_metering_customer_fuel_class_eia861",
- "net_metering_misc_eia861",
- "non_net_metering_customer_fuel_class_eia861",
- "non_net_metering_misc_eia861",
- "reliability_eia861",
- "sales_eia861",
+ "core_eia861__yearly_net_metering_customer_fuel_class",
+ "core_eia861__yearly_net_metering_misc",
+ "core_eia861__yearly_non_net_metering_customer_fuel_class",
+ "core_eia861__yearly_non_net_metering_misc",
+ "core_eia861__yearly_reliability",
+ "core_eia861__yearly_sales",
"summarized_demand_ferc714",
],
},
@@ -516,9 +516,9 @@
"primary_key": ["plant_id_eia", "generator_id"],
"foreign_key_rules": {
"fields": [["plant_id_eia", "generator_id"]],
- # exclude epacamd_eia_subplant_ids bc there are generator ids in this
+ # exclude core_epa__assn_epacamd_eia_subplant_ids bc there are generator ids in this
# glue table that come only from epacamd
- "exclude": ["epacamd_eia_subplant_ids"],
+ "exclude": ["core_epa__assn_epacamd_eia_subplant_ids"],
},
},
"sources": ["eia860", "eia923"],
@@ -537,7 +537,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "plants_eia": {
+ "core_pudl__assn_plants_eia": {
"description": "Association between EIA Plant IDs and manually assigned PUDL Plant IDs",
"schema": {
"fields": ["plant_id_eia", "plant_name_eia", "plant_id_pudl"],
@@ -565,13 +565,16 @@
"primary_key": ["plant_id_eia"],
"foreign_key_rules": {
"fields": [["plant_id_eia"]],
- # Excluding plants_eia because it's static and manually compiled
+ # Excluding core_pudl__assn_plants_eia because it's static and manually compiled
# so it has plants from *all* years of data, even when only a
# restricted set of data is processed, leading to constraint
# violations.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
- # Exclude the epacamd_eia_subplant_ids table
- "exclude": ["plants_eia", "epacamd_eia_subplant_ids"],
+ # Exclude the core_epa__assn_epacamd_eia_subplant_ids table
+ "exclude": [
+ "core_pudl__assn_plants_eia",
+ "core_epa__assn_epacamd_eia_subplant_ids",
+ ],
},
},
"sources": ["eia860", "eia923"],
@@ -660,7 +663,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "utilities_eia": {
+ "core_pudl__assn_utilities_eia": {
"description": "Associations between the EIA Utility IDs and the manually assigned PUDL Utility IDs.",
"schema": {
"fields": ["utility_id_eia", "utility_name_eia", "utility_id_pudl"],
@@ -683,45 +686,45 @@
# https://github.com/catalyst-cooperative/pudl/issues/1196
# ["owner_utility_id_eia"]
],
- # Excluding utilities_eia b/c it's static and manually compiled
+ # Excluding core_pudl__assn_utilities_eia b/c it's static and manually compiled
# so it has utilities from *all* years of data, even when only a
# restricted set of data is processed, leading to constraint
# violations.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
# Excluding EIA-861 because they haven't been harvested/normalized.
"exclude": [
- "utilities_eia",
- "advanced_metering_infrastructure_eia861",
- "balancing_authority_assn_eia861",
+ "core_pudl__assn_utilities_eia",
+ "core_eia861__yearly_advanced_metering_infrastructure",
+ "core_eia861__assn_balancing_authority",
"compiled_geometry_utility_eia861",
- "demand_response_eia861",
- "demand_response_water_heater_eia861",
- "demand_side_management_ee_dr_eia861",
- "demand_side_management_misc_eia861",
- "demand_side_management_sales_eia861",
- "distributed_generation_fuel_eia861",
- "distributed_generation_misc_eia861",
- "distributed_generation_tech_eia861",
- "distribution_systems_eia861",
- "dynamic_pricing_eia861",
- "energy_efficiency_eia861",
+ "core_eia861__yearly_demand_response",
+ "core_eia861__yearly_demand_response_water_heater",
+ "core_eia861__yearly_demand_side_management_ee_dr",
+ "core_eia861__yearly_demand_side_management_misc",
+ "core_eia861__yearly_demand_side_management_sales",
+ "core_eia861__yearly_distributed_generation_fuel",
+ "core_eia861__yearly_distributed_generation_misc",
+ "core_eia861__yearly_distributed_generation_tech",
+ "core_eia861__yearly_distribution_systems",
+ "core_eia861__yearly_dynamic_pricing",
+ "core_eia861__yearly_energy_efficiency",
"fipsified_respondents_ferc714",
- "green_pricing_eia861",
- "mergers_eia861",
- "net_metering_customer_fuel_class_eia861",
- "net_metering_misc_eia861",
- "non_net_metering_customer_fuel_class_eia861",
- "non_net_metering_misc_eia861",
- "operational_data_misc_eia861",
- "operational_data_revenue_eia861",
- "reliability_eia861",
- "sales_eia861",
- "service_territory_eia861",
+ "core_eia861__yearly_green_pricing",
+ "core_eia861__yearly_mergers",
+ "core_eia861__yearly_net_metering_customer_fuel_class",
+ "core_eia861__yearly_net_metering_misc",
+ "core_eia861__yearly_non_net_metering_customer_fuel_class",
+ "core_eia861__yearly_non_net_metering_misc",
+ "core_eia861__yearly_operational_data_misc",
+ "core_eia861__yearly_operational_data_revenue",
+ "core_eia861__yearly_reliability",
+ "core_eia861__yearly_sales",
+ "core_eia861__yearly_service_territory",
"summarized_demand_ferc714",
- "utility_assn_eia861",
- "utility_data_misc_eia861",
- "utility_data_nerc_eia861",
- "utility_data_rto_eia861",
+ "core_eia861__assn_utility",
+ "core_eia861__yearly_utility_data_misc",
+ "core_eia861__yearly_utility_data_nerc",
+ "core_eia861__yearly_utility_data_rto",
# Utility IDs in this table are owners, not operators, and we are
# not yet harvesting owner_utility_id_eia from core_eia860__scd_ownership.
# See https://github.com/catalyst-cooperative/pudl/issues/1393
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index 54e465a87b..54574ed531 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -448,14 +448,14 @@
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
# NOTE: EIA-861 has not gone through harvesting / normalization yet.
"exclude": [
- "advanced_metering_infrastructure_eia861",
- "balancing_authority_assn_eia861",
+ "core_eia861__yearly_advanced_metering_infrastructure",
+ "core_eia861__assn_balancing_authority",
"compiled_geometry_utility_eia861",
- "demand_response_eia861",
- "demand_response_water_heater_eia861",
- "demand_side_management_ee_dr_eia861",
- "demand_side_management_misc_eia861",
- "demand_side_management_sales_eia861",
+ "core_eia861__yearly_demand_response",
+ "core_eia861__yearly_demand_response_water_heater",
+ "core_eia861__yearly_demand_side_management_ee_dr",
+ "core_eia861__yearly_demand_side_management_misc",
+ "core_eia861__yearly_demand_side_management_sales",
"denorm_boiler_fuel_eia923",
"denorm_boiler_fuel_monthly_eia923",
"denorm_fuel_receipts_costs_eia923",
@@ -471,31 +471,31 @@
# not yet harvesting owner_utility_id_eia from core_eia860__scd_ownership.
# See https://github.com/catalyst-cooperative/pudl/issues/1393
"generation_fuel_by_generator_energy_source_owner_yearly_eia923",
- "distributed_generation_fuel_eia861",
- "distributed_generation_misc_eia861",
- "distributed_generation_tech_eia861",
- "distribution_systems_eia861",
- "dynamic_pricing_eia861",
- "energy_efficiency_eia861",
+ "core_eia861__yearly_distributed_generation_fuel",
+ "core_eia861__yearly_distributed_generation_misc",
+ "core_eia861__yearly_distributed_generation_tech",
+ "core_eia861__yearly_distribution_systems",
+ "core_eia861__yearly_dynamic_pricing",
+ "core_eia861__yearly_energy_efficiency",
"fipsified_respondents_ferc714",
- "green_pricing_eia861",
+ "core_eia861__yearly_green_pricing",
"mcoe_monthly",
"mcoe_generators_monthly",
- "mergers_eia861",
- "net_metering_customer_fuel_class_eia861",
- "net_metering_misc_eia861",
- "non_net_metering_customer_fuel_class_eia861",
- "non_net_metering_misc_eia861",
- "operational_data_misc_eia861",
- "operational_data_revenue_eia861",
- "reliability_eia861",
- "sales_eia861",
- "service_territory_eia861",
+ "core_eia861__yearly_mergers",
+ "core_eia861__yearly_net_metering_customer_fuel_class",
+ "core_eia861__yearly_net_metering_misc",
+ "core_eia861__yearly_non_net_metering_customer_fuel_class",
+ "core_eia861__yearly_non_net_metering_misc",
+ "core_eia861__yearly_operational_data_misc",
+ "core_eia861__yearly_operational_data_revenue",
+ "core_eia861__yearly_reliability",
+ "core_eia861__yearly_sales",
+ "core_eia861__yearly_service_territory",
"summarized_demand_ferc714",
- "utility_assn_eia861",
- "utility_data_misc_eia861",
- "utility_data_nerc_eia861",
- "utility_data_rto_eia861",
+ "core_eia861__assn_utility",
+ "core_eia861__yearly_utility_data_misc",
+ "core_eia861__yearly_utility_data_nerc",
+ "core_eia861__yearly_utility_data_rto",
],
},
},
@@ -571,7 +571,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "core_eia860__annual_boiler_emissions_control_equipment_assn": {
+ "core_eia860__yearly_boiler_emissions_control_equipment_assn": {
"description": (
"""A table that links EIA boiler IDs to emissions control IDs for NOx, SO2,
mercury, and particulate monitoring. The relationship between the IDs is sometimes many
diff --git a/src/pudl/metadata/resources/eia861.py b/src/pudl/metadata/resources/eia861.py
index 8808cf255c..73141201ff 100644
--- a/src/pudl/metadata/resources/eia861.py
+++ b/src/pudl/metadata/resources/eia861.py
@@ -2,7 +2,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "advanced_metering_infrastructure_eia861": {
+ "core_eia861__yearly_advanced_metering_infrastructure": {
"description": "The data contain number of meters from automated meter readings (AMR) and advanced metering infrastructure (AMI) by state, sector, and balancing authority. The energy served (in megawatthours) for AMI systems is provided. Form EIA-861 respondents also report the number of standard meters (non AMR/AMI) in their system. Historical Changes: We started collecting the number of standard meters in 2013. The monthly survey collected these data from January 2011 to January 2017.",
"schema": {
"fields": [
@@ -35,7 +35,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "balancing_authority_assn_eia861": {
+ "core_eia861__assn_balancing_authority": {
"description": "Association table showing which combinations of state, balancing authority, and utilities were observed in the data each year.",
"schema": {
"fields": [
@@ -55,7 +55,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "balancing_authority_eia861": {
+ "core_eia861__yearly_balancing_authority": {
"description": "Annual entity table for balancing authorities.",
"schema": {
"fields": [
@@ -73,7 +73,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "demand_response_eia861": {
+ "core_eia861__yearly_demand_response": {
"description": "The data contain energy demand response programs by state, sector, and balancing authority. We collect data for the number of customers enrolled, energy savings, potential and actual peak savings, and associated costs.",
"schema": {
"fields": [
@@ -104,7 +104,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "demand_response_water_heater_eia861": {
+ "core_eia861__yearly_demand_response_water_heater": {
"description": "The number of grid connected water heaters enrolled in demand response programs.",
"schema": {
"fields": [
@@ -126,7 +126,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "demand_side_management_ee_dr_eia861": {
+ "core_eia861__yearly_demand_side_management_ee_dr": {
"description": "The data contain energy efficiency incremental data, energy efficiency annual data, load management incremental data, load management annual data, annual costs, and the customer counts of price response and time response programs by sector.",
"schema": {
"fields": [
@@ -160,7 +160,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "demand_side_management_misc_eia861": {
+ "core_eia861__yearly_demand_side_management_misc": {
"schema": {
"fields": [
"energy_savings_estimates_independently_verified",
@@ -183,7 +183,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "demand_side_management_sales_eia861": {
+ "core_eia861__yearly_demand_side_management_sales": {
"schema": {
"fields": [
"nerc_region",
@@ -199,7 +199,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "distributed_generation_fuel_eia861": {
+ "core_eia861__yearly_distributed_generation_fuel": {
"schema": {
"fields": [
"estimated_or_actual_fuel_data",
@@ -215,7 +215,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "distributed_generation_misc_eia861": {
+ "core_eia861__yearly_distributed_generation_misc": {
"schema": {
"fields": [
"backup_capacity_mw",
@@ -235,7 +235,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "distributed_generation_tech_eia861": {
+ "core_eia861__yearly_distributed_generation_tech": {
"schema": {
"fields": [
"capacity_mw",
@@ -251,7 +251,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "distribution_systems_eia861": {
+ "core_eia861__yearly_distribution_systems": {
"description": "The number of distribution circuits and circuits with voltage optimization by state.",
"schema": {
"fields": [
@@ -269,7 +269,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "dynamic_pricing_eia861": {
+ "core_eia861__yearly_dynamic_pricing": {
"description": "The number of customers enrolled in dynamic pricing programs by state, sector, and balancing authority. Respondents check if one or more customers are enrolled in time-of-use pricing, real time pricing, variable peak pricing, critical peak pricing, and critical peak rebates.",
"schema": {
"fields": [
@@ -293,7 +293,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "energy_efficiency_eia861": {
+ "core_eia861__yearly_energy_efficiency": {
"description": "Incremental energy savings, peak demand savings, weighted average life cycle, and associated costs for the reporting year and life cycle of energy efficiency programs.",
"schema": {
"fields": [
@@ -320,7 +320,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "green_pricing_eia861": {
+ "core_eia861__yearly_green_pricing": {
"description": "Green pricing program revenue, sales, and customer count by sector and state.",
"schema": {
"fields": [
@@ -341,7 +341,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "mergers_eia861": {
+ "core_eia861__yearly_mergers": {
"description": "Information about utility mergers and acquisitions.",
"schema": {
"fields": [
@@ -365,7 +365,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "net_metering_customer_fuel_class_eia861": {
+ "core_eia861__yearly_net_metering_customer_fuel_class": {
"schema": {
"fields": [
"balancing_authority_code_eia",
@@ -387,7 +387,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "net_metering_misc_eia861": {
+ "core_eia861__yearly_net_metering_misc": {
"schema": {
"fields": [
"balancing_authority_code_eia",
@@ -402,7 +402,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "non_net_metering_customer_fuel_class_eia861": {
+ "core_eia861__yearly_non_net_metering_customer_fuel_class": {
"schema": {
"fields": [
"balancing_authority_code_eia",
@@ -420,7 +420,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "non_net_metering_misc_eia861": {
+ "core_eia861__yearly_non_net_metering_misc": {
"schema": {
"fields": [
"backup_capacity_mw",
@@ -438,7 +438,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "operational_data_misc_eia861": {
+ "core_eia861__yearly_operational_data_misc": {
"schema": {
"fields": [
"consumed_by_facility_mwh",
@@ -475,7 +475,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "operational_data_revenue_eia861": {
+ "core_eia861__yearly_operational_data_revenue": {
"schema": {
"fields": [
"nerc_region",
@@ -491,7 +491,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "reliability_eia861": {
+ "core_eia861__yearly_reliability": {
"schema": {
"fields": [
"caidi_w_major_event_days_minus_loss_of_service_minutes",
@@ -522,7 +522,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "sales_eia861": {
+ "core_eia861__yearly_sales": {
"description": "Annual electricity sales to ultimate customers broken down by utility, balancing authority, state, and customer class.",
"schema": {
"fields": [
@@ -556,7 +556,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "service_territory_eia861": {
+ "core_eia861__yearly_service_territory": {
"description": "County FIPS codes for counties composing utility service territories.",
"schema": {
"fields": [
@@ -580,7 +580,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "utility_assn_eia861": {
+ "core_eia861__assn_utility": {
"description": "Association table indicating which states each utility reported data for by year.",
"schema": {
"fields": [
@@ -598,7 +598,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "utility_data_misc_eia861": {
+ "core_eia861__yearly_utility_data_misc": {
"schema": {
"fields": [
"alternative_fuel_vehicle_2_activity",
@@ -626,7 +626,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "utility_data_nerc_eia861": {
+ "core_eia861__yearly_utility_data_nerc": {
"schema": {
"fields": [
"nerc_region",
@@ -641,7 +641,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "utility_data_rto_eia861": {
+ "core_eia861__yearly_utility_data_rto": {
"schema": {
"fields": [
"nerc_region",
diff --git a/src/pudl/metadata/resources/eia_bulk_elec.py b/src/pudl/metadata/resources/eia_bulk_elec.py
index e1ba85bf5b..1b59c92c35 100644
--- a/src/pudl/metadata/resources/eia_bulk_elec.py
+++ b/src/pudl/metadata/resources/eia_bulk_elec.py
@@ -3,7 +3,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "fuel_receipts_costs_aggs_eia": {
+ "core_eia__yearly_fuel_receipts_costs_aggs": {
"description": (
"Aggregated fuel receipts and costs from the EIA bulk electricty data."
),
diff --git a/src/pudl/metadata/resources/epacems.py b/src/pudl/metadata/resources/epacems.py
index 6057c0c59e..5085f8d142 100644
--- a/src/pudl/metadata/resources/epacems.py
+++ b/src/pudl/metadata/resources/epacems.py
@@ -2,7 +2,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "hourly_emissions_epacems": {
+ "core_epacems__hourly_emissions": {
"description": "Hourly emissions and plant operational data reported via Continuous Emissions Monitoring Systems as required by 40 CFR Part 75.",
"schema": {
"fields": [
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index 22d99de01f..5484418468 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -413,7 +413,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "plants_ferc1": {
+ "core_pudl__assn_plants_ferc1": {
"description": "FERC 1 Plants and their associated manually assigned PUDL Plant IDs",
"schema": {
"fields": ["utility_id_ferc1", "plant_name_ferc1", "plant_id_pudl"],
@@ -702,7 +702,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "utilities_ferc1": {
+ "core_pudl__assn_utilities_ferc1": {
"description": "This table maps two manually assigned utility IDs: a PUDL ID and a FERC1 ID. The PUDL ID maps EIA and FERC1 utilities. The FERC1 ID maps the older DBF respondent IDs to new XBRL entity IDs. This table is generated from a table stored in the PUDL repository: src/package_data/glue/utility_id_pudl.csv",
"schema": {
"fields": ["utility_id_ferc1", "utility_name_ferc1", "utility_id_pudl"],
@@ -713,7 +713,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "utilities_ferc1_dbf": {
+ "core_pudl__assn_utilities_ferc1_dbf": {
"description": "This table maps the assign utility ID FERC1 to the native utility ID from the FERC1 DBF inputs - originally reported as respondent_id.",
"schema": {
"fields": ["utility_id_ferc1", "utility_id_ferc1_dbf"],
@@ -723,7 +723,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "utilities_ferc1_xbrl": {
+ "core_pudl__assn_utilities_ferc1_xbrl": {
"description": "This table maps the assign utility ID FERC1 to the native utility ID from the FERC1 XBRL inputs - originally reported as entity_id.",
"schema": {
"fields": ["utility_id_ferc1", "utility_id_ferc1_xbrl"],
diff --git a/src/pudl/metadata/resources/ferc714.py b/src/pudl/metadata/resources/ferc714.py
index 2a85f8c6ae..2ba89b1077 100644
--- a/src/pudl/metadata/resources/ferc714.py
+++ b/src/pudl/metadata/resources/ferc714.py
@@ -3,7 +3,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "respondent_id_ferc714": {
+ "core_ferc714__respondent_id": {
"description": "Respondent identification. FERC Form 714, Part I, Schedule 1.",
"schema": {
"fields": [
@@ -18,7 +18,7 @@
"field_namespace": "ferc714",
"etl_group": "ferc714",
},
- "demand_hourly_pa_ferc714": {
+ "core_ferc714__hourly_demand_pa": {
"description": (
"Hourly electricity demand by planning area. FERC Form 714, Part III, "
"Schedule 2a."
diff --git a/src/pudl/metadata/resources/glue.py b/src/pudl/metadata/resources/glue.py
index 19564a4c63..e2e2beffa8 100644
--- a/src/pudl/metadata/resources/glue.py
+++ b/src/pudl/metadata/resources/glue.py
@@ -2,7 +2,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "epacamd_eia": {
+ "core_epa__assn_epacamd_eia": {
"description": """This crosswalk table comes from the
EPA's Github repo camd-eia-crosswalk:
https://github.com/USEPA/camd-eia-crosswalk.
@@ -17,7 +17,7 @@
to create a temporal version of the crosswalk at some point.
Our version of the crosswalk clarifies some of the column names and removes unmatched
-rows. The :func:`pudl.etl.glue_assets.epacamd_eia` function doc strings explain
+rows. The :func:`pudl.etl.glue_assets.core_epa__assn_epacamd_eia` function doc strings explain
what changes are made from the EPA's version.
""",
"schema": {
@@ -35,8 +35,8 @@
"etl_group": "glue",
"sources": ["epacamd_eia"],
},
- "epacamd_eia_subplant_ids": {
- "description": """This table is an augmented version of the epacamd_eia
+ "core_epa__assn_epacamd_eia_subplant_ids": {
+ "description": """This table is an augmented version of the core_epa__assn_epacamd_eia
crosswalk table which initally comes from the EPA's Github repo camd-eia-crosswalk:
https://github.com/USEPA/camd-eia-crosswalk.
It's purpose is to connect EPA units with EIA units, and generators.
@@ -55,8 +55,8 @@
make aggregation to the parent entity difficult or inappropriate.
This table inherits from the EPA's crosswalk, the ID's from EPA CAMD
-hourly_emissions_epacems table itself, the core_eia860__assn_boiler_generator table and the
-core_eia860__scd_generators table. While the epacamd_eia table is the core backbone of the table,
+core_epacems__hourly_emissions table itself, the core_eia860__assn_boiler_generator table and the
+core_eia860__scd_generators table. While the core_epa__assn_epacamd_eia table is the core backbone of the table,
EPA CAMD id's ensure there is complete coverage of EPA CAMD reporting units. The EIA 860
table addition ensures there is also complete coverage of those units as well.
@@ -65,7 +65,7 @@
from: https://catalystcoop-pudl.readthedocs.io/en/latest/autoapi/index.html
But by analyzing the relationships between combustors and generators,
-as provided in the epacamd_eia crosswalk, we can identify distinct power plants.
+as provided in the core_epa__assn_epacamd_eia crosswalk, we can identify distinct power plants.
These are the smallest coherent units of aggregation.
This table does not have primary keys because the primary keys would have been:
diff --git a/src/pudl/metadata/resources/pudl.py b/src/pudl/metadata/resources/pudl.py
index 6c2c868965..e065cc8b2c 100644
--- a/src/pudl/metadata/resources/pudl.py
+++ b/src/pudl/metadata/resources/pudl.py
@@ -31,7 +31,7 @@
"field_namespace": "pudl",
"sources": ["pudl"],
},
- "plants_pudl": {
+ "core_pudl__entity_plants_pudl": {
"title": "PUDL Plants",
"description": "Home table for PUDL assigned plant IDs. These IDs are manually generated each year when new FERC and EIA reporting is integrated, and any newly identified plants are added to the list with a new ID. Each ID maps to a power plant which is reported in at least one FERC or EIA data set. This table is read in from a spreadsheet stored in the PUDL repository: src/pudl/package_data/glue/pudl_id_mapping.xlsx",
"schema": {
@@ -43,7 +43,7 @@
"field_namespace": "pudl",
"sources": ["pudl"],
},
- "utilities_pudl": {
+ "core_pudl__entity_utilities_pudl": {
"title": "PUDL Utilities",
"description": "Home table for PUDL assigned utility IDs. These IDs are manually generated each year when new FERC and EIA reporting is integrated, and any newly found utilities are added to the list with a new ID. Each ID maps to a power plant owning or operating entity which is reported in at least one FERC or EIA data set. This table is read in from a spreadsheet stored in the PUDL repository: src/pudl/package_data/glue/pudl_id_mapping.xlsx",
"schema": {
@@ -55,7 +55,7 @@
"field_namespace": "pudl",
"sources": ["pudl"],
},
- "utility_plant_assn": {
+ "core_pudl__assn_utilities_plants": {
"schema": {
"fields": ["utility_id_pudl", "plant_id_pudl"],
"primary_key": ["utility_id_pudl", "plant_id_pudl"],
diff --git a/src/pudl/metadata/sources.py b/src/pudl/metadata/sources.py
index 69937dc444..67671e9dba 100644
--- a/src/pudl/metadata/sources.py
+++ b/src/pudl/metadata/sources.py
@@ -305,7 +305,7 @@
"license_raw": LICENSES["us-govt"],
"license_pudl": LICENSES["cc-by-4.0"],
},
- "epacamd_eia": {
+ "core_epa__assn_epacamd_eia": {
"title": "EPA CAMD to EIA Power Sector Data Crosswalk",
"path": "https://github.com/USEPA/camd-eia-crosswalk",
"description": (
diff --git a/src/pudl/output/eia.py b/src/pudl/output/eia.py
index 3afa1379d8..1b4cafef44 100644
--- a/src/pudl/output/eia.py
+++ b/src/pudl/output/eia.py
@@ -15,26 +15,30 @@
def denorm_utilities_eia(
core_eia__entity_utilities: pd.DataFrame,
core_eia860__scd_utilities: pd.DataFrame,
- utilities_eia: pd.DataFrame,
+ core_pudl__assn_utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Utilities table.
Args:
core_eia__entity_utilities: EIA utility entity table.
core_eia860__scd_utilities: EIA 860 annual utility table.
- utilities_eia: Associations between EIA utilities and pudl utility IDs.
+ core_pudl__assn_utilities_eia: Associations between EIA utilities and pudl utility IDs.
Returns:
A DataFrame containing utility attributes from EIA Forms 860 and 923.
"""
- utilities_eia = utilities_eia[["utility_id_eia", "utility_id_pudl"]]
+ core_pudl__assn_utilities_eia = core_pudl__assn_utilities_eia[
+ ["utility_id_eia", "utility_id_pudl"]
+ ]
out_df = pd.merge(
core_eia__entity_utilities,
core_eia860__scd_utilities,
how="left",
on=["utility_id_eia"],
)
- out_df = pd.merge(out_df, utilities_eia, how="left", on=["utility_id_eia"])
+ out_df = pd.merge(
+ out_df, core_pudl__assn_utilities_eia, how="left", on=["utility_id_eia"]
+ )
out_df = out_df.assign(report_date=lambda x: pd.to_datetime(x.report_date)).dropna(
subset=["report_date", "utility_id_eia"]
)
@@ -52,16 +56,16 @@ def denorm_utilities_eia(
def denorm_plants_eia(
core_eia__entity_plants: pd.DataFrame,
core_eia860__scd_plants: pd.DataFrame,
- plants_eia: pd.DataFrame,
- utilities_eia: pd.DataFrame,
+ core_pudl__assn_plants_eia: pd.DataFrame,
+ core_pudl__assn_utilities_eia: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Plants tables.
Args:
core_eia__entity_plants: EIA plant entity table.
core_eia860__scd_plants: EIA 860 annual plant attribute table.
- plants_eia: Associations between EIA plants and pudl utility IDs.
- utilities_eia: EIA utility ID table.
+ core_pudl__assn_plants_eia: Associations between EIA plants and pudl utility IDs.
+ core_pudl__assn_utilities_eia: EIA utility ID table.
Returns:
A DataFrame containing plant attributes from EIA Forms 860 and 923
@@ -70,7 +74,9 @@ def denorm_plants_eia(
report_date=lambda x: pd.to_datetime(x.report_date)
)
- plants_eia = plants_eia[["plant_id_eia", "plant_id_pudl"]]
+ core_pudl__assn_plants_eia = core_pudl__assn_plants_eia[
+ ["plant_id_eia", "plant_id_pudl"]
+ ]
out_df = (
pd.merge(
@@ -79,8 +85,8 @@ def denorm_plants_eia(
how="left",
on=["plant_id_eia"],
)
- .merge(plants_eia, how="left", on=["plant_id_eia"])
- .merge(utilities_eia, how="left", on=["utility_id_eia"])
+ .merge(core_pudl__assn_plants_eia, how="left", on=["plant_id_eia"])
+ .merge(core_pudl__assn_utilities_eia, how="left", on=["utility_id_eia"])
.dropna(subset=["report_date", "plant_id_eia"])
.pipe(fill_in_missing_ba_codes)
)
@@ -321,7 +327,7 @@ def denorm_plants_utilities_eia(
A DataFrame containing plant and utility IDs and names from EIA 860.
"""
# Contains the one-to-one mapping of EIA plants to their operators
- plants_eia = denorm_plants_eia.drop(
+ core_pudl__assn_plants_eia = denorm_plants_eia.drop(
[
"utility_id_pudl",
"city",
@@ -337,7 +343,7 @@ def denorm_plants_utilities_eia(
# to avoid duplicate columns on the merge...
out_df = pd.merge(
- plants_eia,
+ core_pudl__assn_plants_eia,
denorm_utilities_eia,
how="left",
on=["report_date", "utility_id_eia"],
diff --git a/src/pudl/output/eia_bulk_elec.py b/src/pudl/output/eia_bulk_elec.py
index 789503a3c7..78313b9264 100644
--- a/src/pudl/output/eia_bulk_elec.py
+++ b/src/pudl/output/eia_bulk_elec.py
@@ -9,7 +9,7 @@
@asset(io_manager_key=None, compute_kind="Python")
def state_average_fuel_costs_eia(
- fuel_receipts_costs_aggs_eia: pd.DataFrame,
+ core_eia__yearly_fuel_receipts_costs_aggs: pd.DataFrame,
) -> pd.DataFrame:
"""Get state-level average fuel costs from EIA's bulk electricity data.
@@ -17,7 +17,7 @@ def state_average_fuel_costs_eia(
:ref:`core_eia923__monthly_fuel_receipts_costs` table. It was created as a drop-in replacement
for data we were previously obtaining from EIA's unreliable API.
"""
- aggregates = fuel_receipts_costs_aggs_eia.loc[
+ aggregates = core_eia__yearly_fuel_receipts_costs_aggs.loc[
:,
[
"report_date",
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 57b4eb50d0..a6d15d4a02 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -10,11 +10,15 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plants_utilities_ferc1(
- plants_ferc1: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_plants_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized table containing FERC plant and utility names and IDs."""
- return pd.merge(plants_ferc1, utilities_ferc1, on="utility_id_ferc1")
+ return pd.merge(
+ core_pudl__assn_plants_ferc1,
+ core_pudl__assn_utilities_ferc1,
+ on="utility_id_ferc1",
+ )
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
@@ -220,11 +224,12 @@ def denorm_fuel_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_purchased_power_ferc1(
- core_ferc1__yearly_purchased_power: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_purchased_power: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
purchased_power_df = core_ferc1__yearly_purchased_power.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -241,11 +246,12 @@ def denorm_purchased_power_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_plant_in_service_ferc1(
- core_ferc1__yearly_plant_in_service: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_plant_in_service: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Electric Plant in Service data."""
pis_df = core_ferc1__yearly_plant_in_service.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -262,11 +268,11 @@ def denorm_plant_in_service_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_balance_sheet_assets_ferc1(
core_ferc1__yearly_balance_sheet_assets: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance sheet assets data."""
denorm_balance_sheet_assets_ferc1 = core_ferc1__yearly_balance_sheet_assets.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -284,12 +290,12 @@ def denorm_balance_sheet_assets_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_balance_sheet_liabilities_ferc1(
core_ferc1__yearly_balance_sheet_liabilities: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance_sheet liabilities data."""
denorm_balance_sheet_liabilities_ferc1 = (
core_ferc1__yearly_balance_sheet_liabilities.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -307,11 +313,12 @@ def denorm_balance_sheet_liabilities_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_cash_flow_ferc1(
- core_ferc1__yearly_cash_flow: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_cash_flow: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 cash flow data."""
denorm_cash_flow_ferc1 = core_ferc1__yearly_cash_flow.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -329,12 +336,12 @@ def denorm_cash_flow_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_depreciation_amortization_summary_ferc1(
core_ferc1__yearly_depreciation_amortization_summary: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 depreciation amortization data."""
denorm_depreciation_amortization_summary_ferc1 = (
core_ferc1__yearly_depreciation_amortization_summary.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -354,12 +361,12 @@ def denorm_depreciation_amortization_summary_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_energy_dispositions_ferc1(
core_ferc1__yearly_electric_energy_dispositions: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 energy dispositions data."""
denorm_electric_energy_dispositions_ferc1 = (
core_ferc1__yearly_electric_energy_dispositions.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -378,12 +385,12 @@ def denorm_electric_energy_dispositions_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_energy_sources_ferc1(
core_ferc1__yearly_electric_energy_sources: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_energy_sources_ferc1 = (
core_ferc1__yearly_electric_energy_sources.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -402,12 +409,12 @@ def denorm_electric_energy_sources_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_operating_expenses_ferc1(
core_ferc1__yearly_electric_operating_expenses: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_operating_expenses_ferc1 = (
core_ferc1__yearly_electric_operating_expenses.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -426,12 +433,12 @@ def denorm_electric_operating_expenses_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_operating_revenues_ferc1(
core_ferc1__yearly_electric_operating_revenues: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_operating_revenues_ferc1 = (
core_ferc1__yearly_electric_operating_revenues.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -450,12 +457,12 @@ def denorm_electric_operating_revenues_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_plant_depreciation_changes_ferc1(
core_ferc1__yearly_electric_plant_depreciation_changes: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_plant_depreciation_changes_ferc1 = (
core_ferc1__yearly_electric_plant_depreciation_changes.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -476,12 +483,12 @@ def denorm_electric_plant_depreciation_changes_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electric_plant_depreciation_functional_ferc1(
core_ferc1__yearly_electric_plant_depreciation_functional: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electric_plant_depreciation_functional_ferc1 = (
core_ferc1__yearly_electric_plant_depreciation_functional.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -502,12 +509,12 @@ def denorm_electric_plant_depreciation_functional_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_electricity_sales_by_rate_schedule_ferc1(
core_ferc1__yearly_electricity_sales_by_rate_schedule: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_electricity_sales_by_rate_schedule_ferc1 = (
core_ferc1__yearly_electricity_sales_by_rate_schedule.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -524,11 +531,12 @@ def denorm_electricity_sales_by_rate_schedule_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_income_statement_ferc1(
- core_ferc1__yearly_income_statement: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_income_statement: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_income_statement_ferc1 = core_ferc1__yearly_income_statement.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -547,12 +555,12 @@ def denorm_income_statement_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_other_regulatory_liabilities_ferc1(
core_ferc1__yearly_other_regulatory_liabilities: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_other_regulatory_liabilities_ferc1 = (
core_ferc1__yearly_other_regulatory_liabilities.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -568,11 +576,12 @@ def denorm_other_regulatory_liabilities_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_retained_earnings_ferc1(
- core_ferc1__yearly_retained_earnings: pd.DataFrame, utilities_ferc1: pd.DataFrame
+ core_ferc1__yearly_retained_earnings: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_retained_earnings_ferc1 = core_ferc1__yearly_retained_earnings.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -590,12 +599,12 @@ def denorm_retained_earnings_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_transmission_statistics_ferc1(
core_ferc1__yearly_transmission_statistics: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_transmission_statistics_ferc1 = (
core_ferc1__yearly_transmission_statistics.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -612,11 +621,11 @@ def denorm_transmission_statistics_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def denorm_utility_plant_summary_ferc1(
core_ferc1__yearly_utility_plant_summary: pd.DataFrame,
- utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
denorm_utility_plant_summary_ferc1 = core_ferc1__yearly_utility_plant_summary.merge(
- utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
diff --git a/src/pudl/output/ferc714.py b/src/pudl/output/ferc714.py
index a15c1bbe58..89a6c39432 100644
--- a/src/pudl/output/ferc714.py
+++ b/src/pudl/output/ferc714.py
@@ -42,14 +42,14 @@
* `id` (int): EIA balancing authority identifier (`balancing_authority_id_eia`).
* `from` (int): Reference year, to use as a template for target years.
* `to` (List[int]): Target years, in the closed interval format [minimum, maximum].
- Rows in `balancing_authority_eia861` are added (if missing) for every target year
+ Rows in `core_eia861__yearly_balancing_authority` are added (if missing) for every target year
with the attributes from the reference year.
- Rows in `balancing_authority_assn_eia861` are added (or replaced, if existing)
+ Rows in `core_eia861__assn_balancing_authority` are added (or replaced, if existing)
for every target year with the utility associations from the reference year.
- Rows in `service_territory_eia861` are added (if missing) for every target year
+ Rows in `core_eia861__yearly_service_territory` are added (if missing) for every target year
with the nearest year's associated utilities' counties.
* `exclude` (Optional[List[str]]): Utilities to exclude, by state (two-letter code).
- Rows are excluded from `balancing_authority_assn_eia861` with target year and state.
+ Rows are excluded from `core_eia861__assn_balancing_authority` with target year and state.
"""
UTILITIES: list[dict[str, Any]] = [
@@ -61,7 +61,7 @@
{"id": 4922, "reassign": True},
# (no code): Consumers Energy Company
# NOTE: 2003-2006 parent to 40211, which is never child to parent BA (12427),
- # (and 40211 never reports in service_territory_eia861) so don't reassign.
+ # (and 40211 never reports in core_eia861__yearly_service_territory) so don't reassign.
{"id": 4254},
]
"""Balancing authorities to treat as utilities in associations from EIA 861.
@@ -69,13 +69,13 @@
The changes are applied locally to EIA 861 tables.
* `id` (int): EIA balancing authority (BA) identifier (`balancing_authority_id_eia`).
- Rows for `id` are removed from `balancing_authority_eia861`.
+ Rows for `id` are removed from `core_eia861__yearly_balancing_authority`.
* `reassign` (Optional[bool]): Whether to reassign utilities to parent BAs.
- Rows for `id` as BA in `balancing_authority_assn_eia861` are removed.
+ Rows for `id` as BA in `core_eia861__assn_balancing_authority` are removed.
Utilities assigned to `id` for a given year are reassigned
to the BAs for which `id` is an associated utility.
* `replace` (Optional[bool]): Whether to remove rows where `id` is a utility in
- `balancing_authority_assn_eia861`. Applies only if `reassign=True`.
+ `core_eia861__assn_balancing_authority`. Applies only if `reassign=True`.
"""
################################################################################
@@ -207,17 +207,17 @@ def categorize_eia_code(
################################################################################
-def filled_balancing_authority_eia861(
- balancing_authority_eia861: pd.DataFrame,
+def filled_core_eia861__yearly_balancing_authority(
+ core_eia861__yearly_balancing_authority: pd.DataFrame,
) -> pd.DataFrame:
- """Modified balancing_authority_eia861 table.
+ """Modified core_eia861__yearly_balancing_authority table.
This function adds rows for each balancing authority-year pair missing from the
- cleaned balancing_authority_eia861 table, using a dictionary of manual fixes. It
+ cleaned core_eia861__yearly_balancing_authority table, using a dictionary of manual fixes. It
uses the reference year as a template. The function also removes balancing
authorities that are manually categorized as utilities.
"""
- df = balancing_authority_eia861
+ df = core_eia861__yearly_balancing_authority
index = ["balancing_authority_id_eia", "report_date"]
dfi = df.set_index(index)
# Prepare reference rows
@@ -239,18 +239,18 @@ def filled_balancing_authority_eia861(
return apply_pudl_dtypes(df[~mask], group="eia")
-def filled_balancing_authority_assn_eia861(
- balancing_authority_assn_eia861: pd.DataFrame,
+def filled_core_eia861__assn_balancing_authority(
+ core_eia861__assn_balancing_authority: pd.DataFrame,
) -> pd.DataFrame:
- """Modified balancing_authority_assn_eia861 table.
+ """Modified core_eia861__assn_balancing_authority table.
This function adds rows for each balancing authority-year pair missing from the
- cleaned balancing_authority_assn_eia861 table, using a dictionary of manual fixes.
+ cleaned core_eia861__assn_balancing_authority table, using a dictionary of manual fixes.
It uses the reference year as a template. The function also reassigns balancing
authorities that are manually categorized as utilities to their parent balancing
authorities.
"""
- df = balancing_authority_assn_eia861
+ df = core_eia861__assn_balancing_authority
# Prepare reference rows
refs = []
for fix in ASSOCIATIONS:
@@ -320,20 +320,22 @@ def filled_balancing_authority_assn_eia861(
def filled_service_territory_eia861(
- balancing_authority_assn_eia861: pd.DataFrame,
- service_territory_eia861: pd.DataFrame,
+ core_eia861__assn_balancing_authority: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
) -> pd.DataFrame:
- """Modified service_territory_eia861 table.
+ """Modified core_eia861__yearly_service_territory table.
This function adds rows for each balancing authority-year pair missing from the
- cleaned service_territory_eia861 table, using a dictionary of manual fixes. It also
+ cleaned core_eia861__yearly_service_territory table, using a dictionary of manual fixes. It also
drops utility-state combinations which are missing counties across all years of
data, fills records missing counties with the nearest year of county data for the
same utility and state.
"""
index = ["utility_id_eia", "state", "report_date"]
# Select relevant balancing authority-utility associations
- assn = filled_balancing_authority_assn_eia861(balancing_authority_assn_eia861)
+ assn = filled_core_eia861__assn_balancing_authority(
+ core_eia861__assn_balancing_authority
+ )
selected = np.zeros(assn.shape[0], dtype=bool)
for fix in ASSOCIATIONS:
years = [fix["from"], *range(fix["to"][0], fix["to"][1] + 1)]
@@ -344,7 +346,7 @@ def filled_service_territory_eia861(
# Reformat as unique utility-state-year
assn = assn[selected][index].drop_duplicates()
# Select relevant service territories
- mdf = assn.merge(service_territory_eia861, how="left")
+ mdf = assn.merge(core_eia861__yearly_service_territory, how="left")
# Drop utility-state with no counties for all years
grouped = mdf.groupby(["utility_id_eia", "state"])["county_id_fips"]
mdf = mdf[grouped.transform("count").gt(0)]
@@ -364,14 +366,15 @@ def filled_service_territory_eia861(
idx = (years - row["report_date"]).abs().idxmin()
mask &= mdf["report_date"].eq(years[idx])
tables.append(mdf[mask].assign(report_date=row["report_date"]))
- return pd.concat([service_territory_eia861] + tables).pipe(
+ return pd.concat([core_eia861__yearly_service_territory] + tables).pipe(
apply_pudl_dtypes, group="eia"
)
@asset(compute_kind="Python")
def annualized_respondents_ferc714(
- demand_hourly_pa_ferc714: pd.DataFrame, respondent_id_ferc714: pd.DataFrame
+ core_ferc714__hourly_demand_pa: pd.DataFrame,
+ core_ferc714__respondent_id: pd.DataFrame,
) -> pd.DataFrame:
"""Broadcast respondent data across all years with reported demand.
@@ -385,9 +388,11 @@ def annualized_respondents_ferc714(
"""
# Calculate the total demand per respondent, per year:
report_dates = [
- time for time in demand_hourly_pa_ferc714.report_date.unique() if pd.notna(time)
+ time
+ for time in core_ferc714__hourly_demand_pa.report_date.unique()
+ if pd.notna(time)
]
- annualized_respondents_ferc714 = respondent_id_ferc714.pipe(
+ annualized_respondents_ferc714 = core_ferc714__respondent_id.pipe(
add_dates, report_dates
).pipe(apply_pudl_dtypes)
return annualized_respondents_ferc714
@@ -409,10 +414,10 @@ def annualized_respondents_ferc714(
)
def categorized_respondents_ferc714(
context,
- respondent_id_ferc714: pd.DataFrame,
+ core_ferc714__respondent_id: pd.DataFrame,
denorm_utilities_eia: pd.DataFrame,
- service_territory_eia861: pd.DataFrame,
- balancing_authority_eia861: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
+ core_eia861__yearly_balancing_authority: pd.DataFrame,
annualized_respondents_ferc714: pd.DataFrame,
) -> pd.DataFrame:
"""Annualized respondents with ``respondent_type`` assigned if possible.
@@ -427,13 +432,15 @@ def categorized_respondents_ferc714(
logger.info("Categorizing EIA codes associated with FERC-714 Respondents.")
- bal_auth = filled_balancing_authority_eia861(balancing_authority_eia861)
+ bal_auth = filled_core_eia861__yearly_balancing_authority(
+ core_eia861__yearly_balancing_authority
+ )
utilids_all_eia = utility_ids_all_eia(
- denorm_utilities_eia, service_territory_eia861
+ denorm_utilities_eia, core_eia861__yearly_service_territory
)
categorized = categorize_eia_code(
- respondent_id_ferc714.eia_code.dropna().unique(),
+ core_ferc714__respondent_id.eia_code.dropna().unique(),
ba_ids=bal_auth.balancing_authority_id_eia.dropna().unique(),
util_ids=utilids_all_eia.utility_id_eia,
priority=priority,
@@ -514,9 +521,9 @@ def categorized_respondents_ferc714(
def fipsified_respondents_ferc714(
context,
categorized_respondents_ferc714: pd.DataFrame,
- balancing_authority_assn_eia861: pd.DataFrame,
- service_territory_eia861: pd.DataFrame,
- utility_assn_eia861: pd.DataFrame,
+ core_eia861__assn_balancing_authority: pd.DataFrame,
+ core_eia861__yearly_service_territory: pd.DataFrame,
+ core_eia861__assn_utility: pd.DataFrame,
) -> pd.DataFrame:
"""Annual respondents with the county FIPS IDs for their service territories.
@@ -527,14 +534,16 @@ def fipsified_respondents_ferc714(
are thousands of counties and many of them are served by more than one entity.
Currently respondents categorized as ``utility`` will include any county that
- appears in the ``service_territory_eia861`` table in association with that
+ appears in the ``core_eia861__yearly_service_territory`` table in association with that
utility ID in each year, while for ``balancing_authority`` respondents, some
counties can be excluded based on state (if ``limit_by_state==True``).
"""
#
- assn = filled_balancing_authority_assn_eia861(balancing_authority_assn_eia861)
+ assn = filled_core_eia861__assn_balancing_authority(
+ core_eia861__assn_balancing_authority
+ )
st_eia861 = filled_service_territory_eia861(
- balancing_authority_assn_eia861, service_territory_eia861
+ core_eia861__assn_balancing_authority, core_eia861__yearly_service_territory
)
# Generate the BA:FIPS relation:
@@ -544,7 +553,7 @@ def fipsified_respondents_ferc714(
ids=categorized_respondents_ferc714.balancing_authority_id_eia.unique(),
assn=assn,
assn_col="balancing_authority_id_eia",
- service_territory_eia861=st_eia861,
+ core_eia861__yearly_service_territory=st_eia861,
limit_by_state=context.op_config["limit_by_state"],
),
on=["report_date", "balancing_authority_id_eia"],
@@ -555,9 +564,9 @@ def fipsified_respondents_ferc714(
categorized_respondents_ferc714.query("respondent_type=='utility'"),
pudl.analysis.service_territory.get_territory_fips(
ids=categorized_respondents_ferc714.utility_id_eia.unique(),
- assn=utility_assn_eia861,
+ assn=core_eia861__assn_utility,
assn_col="utility_id_eia",
- service_territory_eia861=st_eia861,
+ core_eia861__yearly_service_territory=st_eia861,
limit_by_state=context.op_config["limit_by_state"],
),
on=["report_date", "utility_id_eia"],
@@ -630,7 +639,7 @@ def georeferenced_respondents_ferc714(
@asset(compute_kind="Python", io_manager_key="pudl_sqlite_io_manager")
def summarized_demand_ferc714(
annualized_respondents_ferc714: pd.DataFrame,
- demand_hourly_pa_ferc714: pd.DataFrame,
+ core_ferc714__hourly_demand_pa: pd.DataFrame,
fipsified_respondents_ferc714: pd.DataFrame,
categorized_respondents_ferc714: pd.DataFrame,
georeferenced_counties_ferc714: gpd.GeoDataFrame,
@@ -649,7 +658,7 @@ def summarized_demand_ferc714(
demand_annual = (
pd.merge(
annualized_respondents_ferc714,
- demand_hourly_pa_ferc714.loc[
+ core_ferc714__hourly_demand_pa.loc[
:, ["report_date", "respondent_id_ferc714", "demand_mwh"]
],
how="left",
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 12e6428b54..82d0713d5d 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -169,39 +169,39 @@ def _register_output_methods(self: Self):
"denorm_ownership_eia860": "own_eia860",
"core_eia860__assn_boiler_generator": "bga_eia860",
"denorm_emissions_control_equipment_eia860": "denorm_emissions_control_equipment_eia860",
- "core_eia860__annual_boiler_emissions_control_equipment_assn": "boiler_emissions_control_equipment_assn_eia860",
+ "core_eia860__yearly_boiler_emissions_control_equipment_assn": "boiler_emissions_control_equipment_assn_eia860",
"core_eia860__scd_emissions_control_equipment": "emissions_control_equipment_eia860",
"core_eia860__assn_boiler_stack_flue": "boiler_stack_flue_assn_eia860",
"core_eia860__assn_boiler_cooling": "boiler_cooling_assn_eia860",
# eia861 (clean)
- "service_territory_eia861": "service_territory_eia861",
- "sales_eia861": "sales_eia861",
- "advanced_metering_infrastructure_eia861": "advanced_metering_infrastructure_eia861",
- "demand_response_eia861": "demand_response_eia861",
- "demand_response_water_heater_eia861": "demand_response_water_heater_eia861",
- "demand_side_management_sales_eia861": "demand_side_management_sales_eia861",
- "demand_side_management_ee_dr_eia861": "demand_side_management_ee_dr_eia861",
- "demand_side_management_misc_eia861": "demand_side_management_misc_eia861",
- "distributed_generation_tech_eia861": "distributed_generation_tech_eia861",
- "distributed_generation_fuel_eia861": "distributed_generation_fuel_eia861",
- "distributed_generation_misc_eia861": "distributed_generation_misc_eia861",
- "distribution_systems_eia861": "distribution_systems_eia861",
- "dynamic_pricing_eia861": "dynamic_pricing_eia861",
- "energy_efficiency_eia861": "energy_efficiency_eia861",
- "green_pricing_eia861": "green_pricing_eia861",
- "mergers_eia861": "mergers_eia861",
- "net_metering_customer_fuel_class_eia861": "net_metering_customer_fuel_class_eia861",
- "net_metering_misc_eia861": "net_metering_misc_eia861",
- "non_net_metering_customer_fuel_class_eia861": "non_net_metering_customer_fuel_class_eia861",
- "non_net_metering_misc_eia861": "non_net_metering_misc_eia861",
- "operational_data_revenue_eia861": "operational_data_revenue_eia861",
- "operational_data_misc_eia861": "operational_data_misc_eia861",
- "reliability_eia861": "reliability_eia861",
- "utility_data_nerc_eia861": "utility_data_nerc_eia861",
- "utility_data_rto_eia861": "utility_data_rto_eia861",
- "utility_data_misc_eia861": "utility_data_misc_eia861",
- "utility_assn_eia861": "utility_assn_eia861",
- "balancing_authority_eia861": "balancing_authority_eia861",
+ "core_eia861__yearly_service_territory": "service_territory_eia861",
+ "core_eia861__yearly_sales": "sales_eia861",
+ "core_eia861__yearly_advanced_metering_infrastructure": "advanced_metering_infrastructure_eia861",
+ "core_eia861__yearly_demand_response": "demand_response_eia861",
+ "core_eia861__yearly_demand_response_water_heater": "demand_response_water_heater_eia861",
+ "core_eia861__yearly_demand_side_management_sales": "demand_side_management_sales_eia861",
+ "core_eia861__yearly_demand_side_management_ee_dr": "demand_side_management_ee_dr_eia861",
+ "core_eia861__yearly_demand_side_management_misc": "demand_side_management_misc_eia861",
+ "core_eia861__yearly_distributed_generation_tech": "distributed_generation_tech_eia861",
+ "core_eia861__yearly_distributed_generation_fuel": "distributed_generation_fuel_eia861",
+ "core_eia861__yearly_distributed_generation_misc": "distributed_generation_misc_eia861",
+ "core_eia861__yearly_distribution_systems": "distribution_systems_eia861",
+ "core_eia861__yearly_dynamic_pricing": "dynamic_pricing_eia861",
+ "core_eia861__yearly_energy_efficiency": "energy_efficiency_eia861",
+ "core_eia861__yearly_green_pricing": "green_pricing_eia861",
+ "core_eia861__yearly_mergers": "mergers_eia861",
+ "core_eia861__yearly_net_metering_customer_fuel_class": "net_metering_customer_fuel_class_eia861",
+ "core_eia861__yearly_net_metering_misc": "net_metering_misc_eia861",
+ "core_eia861__yearly_non_net_metering_customer_fuel_class": "non_net_metering_customer_fuel_class_eia861",
+ "core_eia861__yearly_non_net_metering_misc": "non_net_metering_misc_eia861",
+ "core_eia861__yearly_operational_data_revenue": "operational_data_revenue_eia861",
+ "core_eia861__yearly_operational_data_misc": "operational_data_misc_eia861",
+ "core_eia861__yearly_reliability": "reliability_eia861",
+ "core_eia861__yearly_utility_data_nerc": "utility_data_nerc_eia861",
+ "core_eia861__yearly_utility_data_rto": "utility_data_rto_eia861",
+ "core_eia861__yearly_utility_data_misc": "utility_data_misc_eia861",
+ "core_eia861__assn_utility": "core_eia861__assn_utility",
+ "core_eia861__yearly_balancing_authority": "balancing_authority_eia861",
"balancing_authority_assn_eia861": "balancing_authority_assn_eia861",
# eia923 (denormalized, data primarily from EIA-923)
"denorm_boiler_fuel_AGG_eia923": "bf_eia923",
@@ -209,8 +209,8 @@ def _register_output_methods(self: Self):
"denorm_generation_AGG_eia923": "gen_original_eia923",
"denorm_generation_fuel_combined_AGG_eia923": "gf_eia923",
# ferc714
- "respondent_id_ferc714": "respondent_id_ferc714",
- "demand_hourly_pa_ferc714": "demand_hourly_pa_ferc714",
+ "core_ferc714__respondent_id": "respondent_id_ferc714",
+ "core_ferc714__hourly_demand_pa": "demand_hourly_pa_ferc714",
"fipsified_respondents_ferc714": "fipsified_respondents_ferc714",
"summarized_demand_ferc714": "summarized_demand_ferc714",
# service territory
@@ -492,6 +492,6 @@ def ferc1_eia(
def epacamd_eia(self: Self) -> pd.DataFrame:
"""Read the EPACAMD-EIA Crosswalk from the PUDL DB."""
- return pd.read_sql("epacamd_eia", self.pudl_engine).pipe(
+ return pd.read_sql("core_epa__assn_epacamd_eia", self.pudl_engine).pipe(
apply_pudl_dtypes, group="glue"
)
diff --git a/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql b/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql
index f939e3202f..001c18b855 100644
--- a/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql
+++ b/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql
@@ -1,5 +1,5 @@
-- Build a view of useful FERC Plant & Utility information.
CREATE VIEW denorm_plants_utilities_ferc1 AS
SELECT *
-FROM plants_ferc1
- INNER JOIN utilities_ferc1 USING(utility_id_ferc1);
+FROM core_pudl__assn_plants_ferc1
+ INNER JOIN core_pudl__assn_utilities_ferc1 USING(utility_id_ferc1);
diff --git a/src/pudl/transform/eia.py b/src/pudl/transform/eia.py
index 2cf4677272..8cbf175580 100644
--- a/src/pudl/transform/eia.py
+++ b/src/pudl/transform/eia.py
@@ -1237,7 +1237,7 @@ def finished_eia_asset(**kwargs) -> pd.DataFrame:
"core_eia923__monthly_generation_fuel_nuclear",
"core_eia860__scd_ownership",
"core_eia860__scd_emissions_control_equipment",
- "core_eia860__annual_boiler_emissions_control_equipment_assn",
+ "core_eia860__yearly_boiler_emissions_control_equipment_assn",
"core_eia860__assn_boiler_cooling",
"core_eia860__assn_boiler_stack_flue",
]
diff --git a/src/pudl/transform/eia861.py b/src/pudl/transform/eia861.py
index afa5178dd0..8f9ccf6220 100644
--- a/src/pudl/transform/eia861.py
+++ b/src/pudl/transform/eia861.py
@@ -620,10 +620,10 @@ def backfill_ba_codes_by_ba_id(df: pd.DataFrame) -> pd.DataFrame:
Args:
df: The transformed EIA 861 Balancing Authority dataframe
- (balancing_authority_eia861).
+ (core_eia861__yearly_balancing_authority).
Returns:
- pandas.DataFrame: The balancing_authority_eia861 dataframe, but with many fewer
+ pandas.DataFrame: The core_eia861__yearly_balancing_authority dataframe, but with many fewer
NA values in the balancing_authority_code_eia column.
"""
ba_eia861_filled = (
@@ -933,7 +933,7 @@ def _compare_nerc_physical_w_nerc_operational(df: pd.DataFrame) -> pd.DataFrame:
year where there is a match between the cols.
Args:
- df: utility_data_nerc_eia861 table from :func:`clean_utility_data_eia861`
+ df: core_eia861__yearly_utility_data_nerc table.
Returns:
A DataFrame with rows for utilities where NO listed operating nerc region
@@ -1029,7 +1029,7 @@ def _harvest_associations(dfs: list[pd.DataFrame], cols: list[str]) -> pd.DataFr
# EIA Form 861 Table Transform Functions
###############################################################################
@asset(io_manager_key="pudl_sqlite_io_manager")
-def service_territory_eia861(
+def core_eia861__yearly_service_territory(
raw_eia861__service_territory: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the EIA 861 utility service territory table.
@@ -1070,7 +1070,7 @@ def service_territory_eia861(
pk = (
Package.from_resource_ids()
- .get_resource("service_territory_eia861")
+ .get_resource("core_eia861__yearly_service_territory")
.schema.primary_key
)
# We've fixed all we can fix! ~99.84% FIPS coverage.
@@ -1083,7 +1083,7 @@ def service_territory_eia861(
@asset
-def clean_balancing_authority_eia861(
+def _core_eia861__balancing_authority(
raw_eia861__balancing_authority: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the EIA 861 Balancing Authority table.
@@ -1142,7 +1142,7 @@ def clean_balancing_authority_eia861(
@asset(io_manager_key="pudl_sqlite_io_manager")
-def sales_eia861(raw_eia861__sales: pd.DataFrame) -> pd.DataFrame:
+def core_eia861__yearly_sales(raw_eia861__sales: pd.DataFrame) -> pd.DataFrame:
"""Transform the EIA 861 Sales table.
Transformations include:
@@ -1225,7 +1225,7 @@ def sales_eia861(raw_eia861__sales: pd.DataFrame) -> pd.DataFrame:
@asset(io_manager_key="pudl_sqlite_io_manager")
-def advanced_metering_infrastructure_eia861(
+def core_eia861__yearly_advanced_metering_infrastructure(
raw_eia861__advanced_metering_infrastructure: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the EIA 861 Advanced Metering Infrastructure table.
@@ -1270,13 +1270,15 @@ def advanced_metering_infrastructure_eia861(
@multi_asset(
outs={
- "demand_response_eia861": AssetOut(io_manager_key="pudl_sqlite_io_manager"),
- "demand_response_water_heater_eia861": AssetOut(
+ "core_eia861__yearly_demand_response": AssetOut(
+ io_manager_key="pudl_sqlite_io_manager"
+ ),
+ "core_eia861__yearly_demand_response_water_heater": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
},
)
-def demand_response_eia861(raw_eia861__demand_response: pd.DataFrame):
+def core_eia861__yearly_demand_response(raw_eia861__demand_response: pd.DataFrame):
"""Transform the EIA 861 Demand Response table.
Transformations include:
@@ -1341,11 +1343,11 @@ def demand_response_eia861(raw_eia861__demand_response: pd.DataFrame):
return (
Output(
- output_name="demand_response_eia861",
+ output_name="core_eia861__yearly_demand_response",
value=_post_process(transformed_dr),
),
Output(
- output_name="demand_response_water_heater_eia861",
+ output_name="core_eia861__yearly_demand_response_water_heater",
value=_post_process(dr_water),
),
)
@@ -1353,18 +1355,18 @@ def demand_response_eia861(raw_eia861__demand_response: pd.DataFrame):
@multi_asset(
outs={
- "demand_side_management_sales_eia861": AssetOut(
+ "core_eia861__yearly_demand_side_management_sales": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "demand_side_management_ee_dr_eia861": AssetOut(
+ "core_eia861__yearly_demand_side_management_ee_dr": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "demand_side_management_misc_eia861": AssetOut(
+ "core_eia861__yearly_demand_side_management_misc": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
},
)
-def demand_side_management_eia861(
+def core_demand_side_management_eia861(
raw_eia861__demand_side_management: pd.DataFrame,
):
"""Transform the EIA 861 Demand Side Management table.
@@ -1503,15 +1505,15 @@ def demand_side_management_eia861(
return (
Output(
- output_name="demand_side_management_sales_eia861",
+ output_name="core_eia861__yearly_demand_side_management_sales",
value=_post_process(dsm_sales),
),
Output(
- output_name="demand_side_management_ee_dr_eia861",
+ output_name="core_eia861__yearly_demand_side_management_ee_dr",
value=_post_process(dsm_ee_dr),
),
Output(
- output_name="demand_side_management_misc_eia861",
+ output_name="core_eia861__yearly_demand_side_management_misc",
value=_post_process(dsm_misc),
),
)
@@ -1519,18 +1521,18 @@ def demand_side_management_eia861(
@multi_asset(
outs={
- "distributed_generation_tech_eia861": AssetOut(
+ "core_eia861__yearly_distributed_generation_tech": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "distributed_generation_fuel_eia861": AssetOut(
+ "core_eia861__yearly_distributed_generation_fuel": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "distributed_generation_misc_eia861": AssetOut(
+ "core_eia861__yearly_distributed_generation_misc": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
},
)
-def distributed_generation_eia861(
+def core_distributed_generation_eia861(
raw_eia861__distributed_generation: pd.DataFrame,
):
"""Transform the EIA 861 Distributed Generation table.
@@ -1694,22 +1696,22 @@ def distributed_generation_eia861(
return (
Output(
- output_name="distributed_generation_tech_eia861",
+ output_name="core_eia861__yearly_distributed_generation_tech",
value=_post_process(tidy_dg_tech),
),
Output(
- output_name="distributed_generation_fuel_eia861",
+ output_name="core_eia861__yearly_distributed_generation_fuel",
value=_post_process(tidy_dg_fuel),
),
Output(
- output_name="distributed_generation_misc_eia861",
+ output_name="core_eia861__yearly_distributed_generation_misc",
value=_post_process(dg_misc),
),
)
@asset(io_manager_key="pudl_sqlite_io_manager")
-def distribution_systems_eia861(
+def core_eia861__yearly_distribution_systems(
raw_eia861__distribution_systems: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the EIA 861 Distribution Systems table.
@@ -1731,7 +1733,9 @@ def distribution_systems_eia861(
@asset(io_manager_key="pudl_sqlite_io_manager")
-def dynamic_pricing_eia861(raw_eia861__dynamic_pricing: pd.DataFrame) -> pd.DataFrame:
+def core_eia861__yearly_dynamic_pricing(
+ raw_eia861__dynamic_pricing: pd.DataFrame,
+) -> pd.DataFrame:
"""Transform the EIA 861 Dynamic Pricing table.
Transformations include:
@@ -1793,7 +1797,7 @@ def dynamic_pricing_eia861(raw_eia861__dynamic_pricing: pd.DataFrame) -> pd.Data
@asset(io_manager_key="pudl_sqlite_io_manager")
-def energy_efficiency_eia861(
+def core_eia861__yearly_energy_efficiency(
raw_eia861__energy_efficiency: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the EIA 861 Energy Efficiency table.
@@ -1861,7 +1865,7 @@ def energy_efficiency_eia861(
@asset(io_manager_key="pudl_sqlite_io_manager")
-def green_pricing_eia861(
+def core_eia861__yearly_green_pricing(
raw_eia861__green_pricing: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the EIA 861 Green Pricing table.
@@ -1905,7 +1909,7 @@ def green_pricing_eia861(
@asset(io_manager_key="pudl_sqlite_io_manager")
-def mergers_eia861(raw_eia861__mergers: pd.DataFrame) -> pd.DataFrame:
+def core_eia861__yearly_mergers(raw_eia861__mergers: pd.DataFrame) -> pd.DataFrame:
"""Transform the EIA 861 Mergers table."""
# No duplicates to speak of but take measures to check just in case
df = (
@@ -1922,13 +1926,15 @@ def mergers_eia861(raw_eia861__mergers: pd.DataFrame) -> pd.DataFrame:
@multi_asset(
outs={
- "net_metering_customer_fuel_class_eia861": AssetOut(
+ "core_eia861__yearly_net_metering_customer_fuel_class": AssetOut(
+ io_manager_key="pudl_sqlite_io_manager"
+ ),
+ "core_eia861__yearly_net_metering_misc": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "net_metering_misc_eia861": AssetOut(io_manager_key="pudl_sqlite_io_manager"),
},
)
-def net_metering_eia861(raw_eia861__net_metering: pd.DataFrame):
+def core_net_metering_eia861(raw_eia861__net_metering: pd.DataFrame):
"""Transform the EIA 861 Net Metering table.
Transformations include:
@@ -1994,11 +2000,11 @@ def net_metering_eia861(raw_eia861__net_metering: pd.DataFrame):
return (
Output(
- output_name="net_metering_customer_fuel_class_eia861",
+ output_name="core_eia861__yearly_net_metering_customer_fuel_class",
value=_post_process(tidy_nm_customer_fuel_class),
),
Output(
- output_name="net_metering_misc_eia861",
+ output_name="core_eia861__yearly_net_metering_misc",
value=_post_process(raw_nm_misc),
),
)
@@ -2006,15 +2012,15 @@ def net_metering_eia861(raw_eia861__net_metering: pd.DataFrame):
@multi_asset(
outs={
- "non_net_metering_customer_fuel_class_eia861": AssetOut(
+ "core_eia861__yearly_non_net_metering_customer_fuel_class": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "non_net_metering_misc_eia861": AssetOut(
+ "core_eia861__yearly_non_net_metering_misc": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
},
)
-def non_net_metering_eia861(raw_eia861__non_net_metering: pd.DataFrame):
+def core_non_net_metering_eia861(raw_eia861__non_net_metering: pd.DataFrame):
"""Transform the EIA 861 Non-Net Metering table.
Transformations include:
@@ -2104,11 +2110,11 @@ def non_net_metering_eia861(raw_eia861__non_net_metering: pd.DataFrame):
return (
Output(
- output_name="non_net_metering_customer_fuel_class_eia861",
+ output_name="core_eia861__yearly_non_net_metering_customer_fuel_class",
value=_post_process(tidy_nnm_customer_fuel_class),
),
Output(
- output_name="non_net_metering_misc_eia861",
+ output_name="core_eia861__yearly_non_net_metering_misc",
value=_post_process(raw_nnm_misc),
),
)
@@ -2116,15 +2122,15 @@ def non_net_metering_eia861(raw_eia861__non_net_metering: pd.DataFrame):
@multi_asset(
outs={
- "operational_data_revenue_eia861": AssetOut(
+ "core_eia861__yearly_operational_data_revenue": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
- "operational_data_misc_eia861": AssetOut(
+ "core_eia861__yearly_operational_data_misc": AssetOut(
io_manager_key="pudl_sqlite_io_manager"
),
},
)
-def operational_data_eia861(raw_eia861__operational_data: pd.DataFrame):
+def core_operational_data_eia861(raw_eia861__operational_data: pd.DataFrame):
"""Transform the EIA 861 Operational Data table.
Transformations include:
@@ -2196,18 +2202,20 @@ def operational_data_eia861(raw_eia861__operational_data: pd.DataFrame):
return (
Output(
- output_name="operational_data_revenue_eia861",
+ output_name="core_eia861__yearly_operational_data_revenue",
value=_post_process(transformed_od_rev),
),
Output(
- output_name="operational_data_misc_eia861",
+ output_name="core_eia861__yearly_operational_data_misc",
value=_post_process(transformed_od_misc),
),
)
@asset(io_manager_key="pudl_sqlite_io_manager")
-def reliability_eia861(raw_eia861__reliability: pd.DataFrame) -> pd.DataFrame:
+def core_eia861__yearly_reliability(
+ raw_eia861__reliability: pd.DataFrame,
+) -> pd.DataFrame:
"""Transform the EIA 861 Reliability table.
Transformations include:
@@ -2263,7 +2271,7 @@ def reliability_eia861(raw_eia861__reliability: pd.DataFrame) -> pd.DataFrame:
transformed_r = (
pudl.metadata.classes.Package.from_resource_ids()
- .get_resource("reliability_eia861")
+ .get_resource("core_eia861__yearly_reliability")
.encode(transformed_r)
)
@@ -2272,12 +2280,18 @@ def reliability_eia861(raw_eia861__reliability: pd.DataFrame) -> pd.DataFrame:
@multi_asset(
outs={
- "utility_data_nerc_eia861": AssetOut(io_manager_key="pudl_sqlite_io_manager"),
- "utility_data_rto_eia861": AssetOut(io_manager_key="pudl_sqlite_io_manager"),
- "utility_data_misc_eia861": AssetOut(io_manager_key="pudl_sqlite_io_manager"),
+ "core_eia861__yearly_utility_data_nerc": AssetOut(
+ io_manager_key="pudl_sqlite_io_manager"
+ ),
+ "core_eia861__yearly_utility_data_rto": AssetOut(
+ io_manager_key="pudl_sqlite_io_manager"
+ ),
+ "core_eia861__yearly_utility_data_misc": AssetOut(
+ io_manager_key="pudl_sqlite_io_manager"
+ ),
},
)
-def utility_data_eia861(raw_eia861__utility_data: pd.DataFrame):
+def core_utility_data_eia861(raw_eia861__utility_data: pd.DataFrame):
"""Transform the EIA 861 Utility Data table.
Transformations include:
@@ -2398,15 +2412,15 @@ def utility_data_eia861(raw_eia861__utility_data: pd.DataFrame):
return (
Output(
- output_name="utility_data_nerc_eia861",
+ output_name="core_eia861__yearly_utility_data_nerc",
value=_post_process(transformed_ud_nerc),
),
Output(
- output_name="utility_data_rto_eia861",
+ output_name="core_eia861__yearly_utility_data_rto",
value=_post_process(transformed_ud_rto),
),
Output(
- output_name="utility_data_misc_eia861",
+ output_name="core_eia861__yearly_utility_data_misc",
value=_post_process(transformed_ud_misc),
),
)
@@ -2417,35 +2431,35 @@ def utility_data_eia861(raw_eia861__utility_data: pd.DataFrame):
##############################################################################
@asset(
ins={
- "advanced_metering_infrastructure_eia861": AssetIn(),
- "demand_response_eia861": AssetIn(),
- "demand_response_water_heater_eia861": AssetIn(),
- "demand_side_management_ee_dr_eia861": AssetIn(),
- "demand_side_management_misc_eia861": AssetIn(),
- "demand_side_management_sales_eia861": AssetIn(),
- "distributed_generation_fuel_eia861": AssetIn(),
- "distributed_generation_misc_eia861": AssetIn(),
- "distributed_generation_tech_eia861": AssetIn(),
- "distribution_systems_eia861": AssetIn(),
- "dynamic_pricing_eia861": AssetIn(),
- "energy_efficiency_eia861": AssetIn(),
- "green_pricing_eia861": AssetIn(),
- "mergers_eia861": AssetIn(),
- "net_metering_customer_fuel_class_eia861": AssetIn(),
- "net_metering_misc_eia861": AssetIn(),
- "non_net_metering_customer_fuel_class_eia861": AssetIn(),
- "non_net_metering_misc_eia861": AssetIn(),
- "operational_data_misc_eia861": AssetIn(),
- "operational_data_revenue_eia861": AssetIn(),
- "reliability_eia861": AssetIn(),
- "sales_eia861": AssetIn(),
- "utility_data_misc_eia861": AssetIn(),
- "utility_data_nerc_eia861": AssetIn(),
- "utility_data_rto_eia861": AssetIn(),
+ "core_eia861__yearly_advanced_metering_infrastructure": AssetIn(),
+ "core_eia861__yearly_demand_response": AssetIn(),
+ "core_eia861__yearly_demand_response_water_heater": AssetIn(),
+ "core_eia861__yearly_demand_side_management_ee_dr": AssetIn(),
+ "core_eia861__yearly_demand_side_management_misc": AssetIn(),
+ "core_eia861__yearly_demand_side_management_sales": AssetIn(),
+ "core_eia861__yearly_distributed_generation_fuel": AssetIn(),
+ "core_eia861__yearly_distributed_generation_misc": AssetIn(),
+ "core_eia861__yearly_distributed_generation_tech": AssetIn(),
+ "core_eia861__yearly_distribution_systems": AssetIn(),
+ "core_eia861__yearly_dynamic_pricing": AssetIn(),
+ "core_eia861__yearly_energy_efficiency": AssetIn(),
+ "core_eia861__yearly_green_pricing": AssetIn(),
+ "core_eia861__yearly_mergers": AssetIn(),
+ "core_eia861__yearly_net_metering_customer_fuel_class": AssetIn(),
+ "core_eia861__yearly_net_metering_misc": AssetIn(),
+ "core_eia861__yearly_non_net_metering_customer_fuel_class": AssetIn(),
+ "core_eia861__yearly_non_net_metering_misc": AssetIn(),
+ "core_eia861__yearly_operational_data_misc": AssetIn(),
+ "core_eia861__yearly_operational_data_revenue": AssetIn(),
+ "core_eia861__yearly_reliability": AssetIn(),
+ "core_eia861__yearly_sales": AssetIn(),
+ "core_eia861__yearly_utility_data_misc": AssetIn(),
+ "core_eia861__yearly_utility_data_nerc": AssetIn(),
+ "core_eia861__yearly_utility_data_rto": AssetIn(),
},
io_manager_key="pudl_sqlite_io_manager",
)
-def utility_assn_eia861(**data_dfs: dict[str, pd.DataFrame]) -> pd.DataFrame:
+def core_eia861__assn_utility(**data_dfs: dict[str, pd.DataFrame]) -> pd.DataFrame:
"""Harvest a Utility-Date-State Association Table."""
logger.info("Building an EIA 861 Util-State-Date association table.")
df = _harvest_associations(
@@ -2456,45 +2470,47 @@ def utility_assn_eia861(**data_dfs: dict[str, pd.DataFrame]) -> pd.DataFrame:
@asset(
ins={
- "advanced_metering_infrastructure_eia861": AssetIn(),
- "clean_balancing_authority_eia861": AssetIn(),
- "demand_response_eia861": AssetIn(),
- "demand_response_water_heater_eia861": AssetIn(),
- "demand_side_management_ee_dr_eia861": AssetIn(),
- "demand_side_management_misc_eia861": AssetIn(),
- "demand_side_management_sales_eia861": AssetIn(),
- "distributed_generation_fuel_eia861": AssetIn(),
- "distributed_generation_misc_eia861": AssetIn(),
- "distributed_generation_tech_eia861": AssetIn(),
- "distribution_systems_eia861": AssetIn(),
- "dynamic_pricing_eia861": AssetIn(),
- "energy_efficiency_eia861": AssetIn(),
- "green_pricing_eia861": AssetIn(),
- "mergers_eia861": AssetIn(),
- "net_metering_customer_fuel_class_eia861": AssetIn(),
- "net_metering_misc_eia861": AssetIn(),
- "non_net_metering_customer_fuel_class_eia861": AssetIn(),
- "non_net_metering_misc_eia861": AssetIn(),
- "operational_data_misc_eia861": AssetIn(),
- "operational_data_revenue_eia861": AssetIn(),
- "reliability_eia861": AssetIn(),
- "sales_eia861": AssetIn(),
- "utility_data_misc_eia861": AssetIn(),
- "utility_data_nerc_eia861": AssetIn(),
- "utility_data_rto_eia861": AssetIn(),
+ "core_eia861__yearly_advanced_metering_infrastructure": AssetIn(),
+ "_core_eia861__balancing_authority": AssetIn(),
+ "core_eia861__yearly_demand_response": AssetIn(),
+ "core_eia861__yearly_demand_response_water_heater": AssetIn(),
+ "core_eia861__yearly_demand_side_management_ee_dr": AssetIn(),
+ "core_eia861__yearly_demand_side_management_misc": AssetIn(),
+ "core_eia861__yearly_demand_side_management_sales": AssetIn(),
+ "core_eia861__yearly_distributed_generation_fuel": AssetIn(),
+ "core_eia861__yearly_distributed_generation_misc": AssetIn(),
+ "core_eia861__yearly_distributed_generation_tech": AssetIn(),
+ "core_eia861__yearly_distribution_systems": AssetIn(),
+ "core_eia861__yearly_dynamic_pricing": AssetIn(),
+ "core_eia861__yearly_energy_efficiency": AssetIn(),
+ "core_eia861__yearly_green_pricing": AssetIn(),
+ "core_eia861__yearly_mergers": AssetIn(),
+ "core_eia861__yearly_net_metering_customer_fuel_class": AssetIn(),
+ "core_eia861__yearly_net_metering_misc": AssetIn(),
+ "core_eia861__yearly_non_net_metering_customer_fuel_class": AssetIn(),
+ "core_eia861__yearly_non_net_metering_misc": AssetIn(),
+ "core_eia861__yearly_operational_data_misc": AssetIn(),
+ "core_eia861__yearly_operational_data_revenue": AssetIn(),
+ "core_eia861__yearly_reliability": AssetIn(),
+ "core_eia861__yearly_sales": AssetIn(),
+ "core_eia861__yearly_utility_data_misc": AssetIn(),
+ "core_eia861__yearly_utility_data_nerc": AssetIn(),
+ "core_eia861__yearly_utility_data_rto": AssetIn(),
},
io_manager_key="pudl_sqlite_io_manager",
)
-def balancing_authority_assn_eia861(**dfs: dict[str, pd.DataFrame]) -> pd.DataFrame:
+def core_eia861__assn_balancing_authority(
+ **dfs: dict[str, pd.DataFrame]
+) -> pd.DataFrame:
"""Compile a balancing authority, utility, state association table.
For the years up through 2012, the only BA-Util information that's available comes
- from the balancing_authority_eia861 table, and it does not include any state-level
+ from the core_eia861__yearly_balancing_authority table, and it does not include any state-level
information. However, there is utility-state association information in the
- sales_eia861 and other data tables.
+ core_eia861__yearly_sales and other data tables.
For the years from 2013 onward, there's explicit BA-Util-State information in the
- data tables (e.g. :ref:`sales_eia861`). These observed associations can be compiled
+ data tables (e.g. :ref:`core_eia861__yearly_sales`). These observed associations can be compiled
to give us a picture of which BA-Util-State associations exist. However, we need to
merge in the balancing authority IDs since the data tables only contain the
balancing authority codes.
@@ -2508,10 +2524,10 @@ def balancing_authority_assn_eia861(**dfs: dict[str, pd.DataFrame]) -> pd.DataFr
Returns:
An association table describing the annual linkages between balancing
authorities, states, and utilities. Becomes
- :ref:`balancing_authority_assn_eia861`.
+ :ref:`core_eia861__assn_balancing_authority`.
"""
# The dataframes from which to compile BA-Util-State associations
- ba_eia861 = dfs.pop("clean_balancing_authority_eia861")
+ ba_eia861 = dfs.pop("_core_eia861__balancing_authority")
data_dfs = list(dfs.values())
logger.info("Building an EIA 861 BA-Util-State association table.")
@@ -2580,31 +2596,31 @@ def balancing_authority_assn_eia861(**dfs: dict[str, pd.DataFrame]) -> pd.DataFr
@asset(io_manager_key="pudl_sqlite_io_manager")
-def balancing_authority_eia861(
- clean_balancing_authority_eia861: pd.DataFrame,
+def core_eia861__yearly_balancing_authority(
+ _core_eia861__balancing_authority: pd.DataFrame,
) -> pd.DataFrame:
- """Finish the normalization of the balancing_authority_eia861 table.
+ """Finish the normalization of the core_eia861__yearly_balancing_authority table.
- The :ref:`balancing_authority_assn_eia861` table depends on information that is only
- available in the UN-normalized form of the :ref:`balancing_authority_eia861` table,
+ The :ref:`core_eia861__assn_balancing_authority` table depends on information that is only
+ available in the UN-normalized form of the :ref:`core_eia861__yearly_balancing_authority` table,
and also on having access to a bunch of transformed data tables, so it can compile
the observed combinations of report dates, balancing authorities, states, and
utilities. This means that we have to hold off on the final normalization of the
- :ref:`balancing_authority_eia861` table until the rest of the transform process is
+ :ref:`core_eia861__yearly_balancing_authority` table until the rest of the transform process is
over.
Args:
- clean_balancing_authority_eia861: A cleaned up version of the originally
+ _core_eia861__balancing_authority: A cleaned up version of the originally
reported balancing authority table.
Returns:
- The final, normalized version of the :ref:`balancing_authority_eia861` table,
+ The final, normalized version of the :ref:`core_eia861__yearly_balancing_authority` table,
linking together balancing authorities and utility IDs by year, but without
information about what states they were operating in (which is captured in
- :ref:`balancing_authority_assn_eia861`).
+ :ref:`core_eia861__assn_balancing_authority`).
"""
- logger.info("Completing normalization of balancing_authority_eia861.")
- ba_eia861_normed = clean_balancing_authority_eia861.loc[
+ logger.info("Completing normalization of core_eia861__yearly_balancing_authority.")
+ ba_eia861_normed = _core_eia861__balancing_authority.loc[
:,
[
"report_date",
@@ -2640,7 +2656,7 @@ def balancing_authority_eia861(
if delta > 3:
logger.warning(
"Unexpectedly large number of rows with NULL PK values found in "
- f"balancing_authority_eia861. Expected 3, found {delta} (out of "
+ f"core_eia861__yearly_balancing_authority. Expected 3, found {delta} (out of "
f"{len_before} total)."
)
diff --git a/src/pudl/transform/epacems.py b/src/pudl/transform/epacems.py
index 51e170744f..a9e91f1a09 100644
--- a/src/pudl/transform/epacems.py
+++ b/src/pudl/transform/epacems.py
@@ -43,7 +43,7 @@ def harmonize_eia_epa_orispl(
Args:
df: A CEMS hourly dataframe for one year-month-state.
- crosswalk_df: The epacamd_eia dataframe from the database.
+ crosswalk_df: The core_epa__assn_epacamd_eia dataframe from the database.
Returns:
The same data, with the ORISPL plant codes corrected to match the EIA plant IDs.
@@ -56,7 +56,7 @@ def harmonize_eia_epa_orispl(
if not one_to_many.empty:
raise AssertionError(
- "The epacamd_eia crosswalk has more than one plant_id_eia value per "
+ "The core_epa__assn_epacamd_eia crosswalk has more than one plant_id_eia value per "
"plant_id_epa and emissions_unit_id_epa group"
)
crosswalk_df = crosswalk_df[
@@ -173,7 +173,7 @@ def correct_gross_load_mw(df: pd.DataFrame) -> pd.DataFrame:
def transform(
raw_df: pd.DataFrame,
- epacamd_eia: pd.DataFrame,
+ core_epa__assn_epacamd_eia: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
) -> pd.DataFrame:
"""Transform EPA CEMS hourly data and ready it for export to Parquet.
@@ -190,7 +190,7 @@ def transform(
return (
raw_df.pipe(apply_pudl_dtypes, group="epacems")
.pipe(remove_leading_zeros_from_numeric_strings, "emissions_unit_id_epa")
- .pipe(harmonize_eia_epa_orispl, epacamd_eia)
+ .pipe(harmonize_eia_epa_orispl, core_epa__assn_epacamd_eia)
.pipe(
convert_to_utc,
plant_utc_offset=_load_plant_utc_offset(core_eia__entity_plants),
diff --git a/src/pudl/transform/ferc714.py b/src/pudl/transform/ferc714.py
index 6f0c68211c..438e7eafb4 100644
--- a/src/pudl/transform/ferc714.py
+++ b/src/pudl/transform/ferc714.py
@@ -230,11 +230,11 @@
"""Overrides of FERC 714 respondent IDs with wrong or missing EIA Codes."""
RENAME_COLS = {
- "respondent_id_ferc714": {
+ "core_ferc714__respondent_id": {
"respondent_id": "respondent_id_ferc714",
"respondent_name": "respondent_name_ferc714",
},
- "demand_hourly_pa_ferc714": {
+ "core_ferc714__hourly_demand_pa": {
"report_yr": "report_year",
"plan_date": "report_date",
"respondent_id": "respondent_id_ferc714",
@@ -369,7 +369,9 @@ def _standardize_offset_codes(df: pd.DataFrame, offset_fixes) -> pd.DataFrame:
@asset(io_manager_key="pudl_sqlite_io_manager")
-def respondent_id_ferc714(raw_ferc714__respondent_id: pd.DataFrame) -> pd.DataFrame:
+def core_ferc714__respondent_id(
+ raw_ferc714__respondent_id: pd.DataFrame,
+) -> pd.DataFrame:
"""Transform the FERC 714 respondent IDs, names, and EIA utility IDs.
Clean up FERC-714 respondent names and manually assign EIA utility IDs to a few FERC
@@ -383,17 +385,19 @@ def respondent_id_ferc714(raw_ferc714__respondent_id: pd.DataFrame) -> pd.DataFr
Returns:
A clean(er) version of the FERC-714 respondents table.
"""
- df = _pre_process(raw_ferc714__respondent_id, table_name="respondent_id_ferc714")
+ df = _pre_process(
+ raw_ferc714__respondent_id, table_name="core_ferc714__respondent_id"
+ )
df["respondent_name_ferc714"] = df.respondent_name_ferc714.str.strip()
df.loc[df.eia_code == 0, "eia_code"] = pd.NA
# There are a few utilities that seem mappable, but missing:
for rid in EIA_CODE_FIXES:
df.loc[df.respondent_id_ferc714 == rid, "eia_code"] = EIA_CODE_FIXES[rid]
- return _post_process(df, table_name="respondent_id_ferc714")
+ return _post_process(df, table_name="core_ferc714__respondent_id")
@asset(io_manager_key="pudl_sqlite_io_manager")
-def demand_hourly_pa_ferc714(
+def core_ferc714__hourly_demand_pa(
raw_ferc714__demand_hourly_pa: pd.DataFrame,
) -> pd.DataFrame:
"""Transform the hourly demand time series by Planning Area.
@@ -416,7 +420,7 @@ def demand_hourly_pa_ferc714(
"""
logger.info("Converting dates into pandas Datetime types.")
df = _pre_process(
- raw_ferc714__demand_hourly_pa, table_name="demand_hourly_pa_ferc714"
+ raw_ferc714__demand_hourly_pa, table_name="core_ferc714__hourly_demand_pa"
)
# Parse date strings
@@ -519,5 +523,5 @@ def demand_hourly_pa_ferc714(
"demand_mwh",
]
df.drop(columns=set(df.columns) - set(columns), inplace=True)
- df = _post_process(df[columns], table_name="demand_hourly_pa_ferc714")
+ df = _post_process(df[columns], table_name="core_ferc714__hourly_demand_pa")
return df
diff --git a/test/integration/epacems_test.py b/test/integration/epacems_test.py
index 09d06ae1ae..2dc00c0a9c 100644
--- a/test/integration/epacems_test.py
+++ b/test/integration/epacems_test.py
@@ -22,7 +22,10 @@ def epacems_parquet_path(
):
"""Get path to the directory of EPA CEMS .parquet data."""
context = build_init_resource_context()
- return epacems_io_manager(context)._base_path / "hourly_emissions_epacems.parquet"
+ return (
+ epacems_io_manager(context)._base_path
+ / "core_epacems__hourly_emissions.parquet"
+ )
def test_epacems_subset(epacems_year_and_state, epacems_parquet_path):
@@ -53,7 +56,7 @@ def test_epacems_missing_partition(pudl_datastore_fixture):
Note that this should pass for both the Fast and Full ETL because the behavior
towards a missing file is identical."""
df = extract(year=1996, state="UT", ds=pudl_datastore_fixture)
- epacems_res = Resource.from_id("hourly_emissions_epacems")
+ epacems_res = Resource.from_id("core_epacems__hourly_emissions")
expected_cols = list(epacems_res.get_field_names())
assert df.shape[0] == 0 # Check that no rows of data are there
# Check that all columns expected of EPACEMS data are present.
diff --git a/test/integration/etl_test.py b/test/integration/etl_test.py
index ff2b3193ff..d18978ec29 100644
--- a/test/integration/etl_test.py
+++ b/test/integration/etl_test.py
@@ -23,8 +23,8 @@ def test_pudl_engine(pudl_engine, pudl_sql_io_manager, check_foreign_keys):
"""
assert isinstance(pudl_engine, sa.engine.Engine) # nosec: B101
insp = sa.inspect(pudl_engine)
- assert "plants_pudl" in insp.get_table_names() # nosec: B101
- assert "utilities_pudl" in insp.get_table_names() # nosec: B101
+ assert "core_pudl__entity_plants_pudl" in insp.get_table_names() # nosec: B101
+ assert "core_pudl__entity_utilities_pudl" in insp.get_table_names() # nosec: B101
if check_foreign_keys:
# Raises ForeignKeyErrors if there are any
diff --git a/test/unit/harvest_test.py b/test/unit/harvest_test.py
index 07488ed193..8ae082447b 100644
--- a/test/unit/harvest_test.py
+++ b/test/unit/harvest_test.py
@@ -112,7 +112,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
# ---- EIA example ---- #
INPUT_DFS: dict[str, pd.DataFrame] = dict(
- service_territory_eia861=pd.DataFrame(
+ core_eia861__yearly_service_territory=pd.DataFrame(
columns=[
"utility_id_eia",
"utility_name_eia",
@@ -127,7 +127,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(3989, "City of Colorado Springs - (CO)", "2018-01-01", "Teller", "CO"),
],
),
- sales_eia861=pd.DataFrame(
+ core_eia861__yearly_sales=pd.DataFrame(
columns=[
"utility_id_eia",
"utility_name_eia",
@@ -316,7 +316,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
},
},
{
- "name": "sales_eia861",
+ "name": "core_eia861__yearly_sales",
"harvest": {"harvest": False},
"schema": {
"fields": ["utility_id_eia", "report_year", "state", "county", "sales"],
@@ -404,7 +404,7 @@ def test_resource_with_only_key_fields_harvests() -> None:
(3, "1", "2018-12-01", -494.0),
],
),
- sales_eia861=pd.DataFrame(
+ core_eia861__yearly_sales=pd.DataFrame(
columns=["utility_id_eia", "report_year", "state", "county", "sales"],
data=[
(3989, "2017-01-01", "CO", "El Paso", 127682),
diff --git a/test/unit/helpers_test.py b/test/unit/helpers_test.py
index 3ca5671b41..85ba67905a 100644
--- a/test/unit/helpers_test.py
+++ b/test/unit/helpers_test.py
@@ -625,9 +625,9 @@ def test_flatten_mix_types():
def test_cems_selection():
"""Test CEMS asset selection remove cems assets."""
cems_selection = pudl.etl.create_non_cems_selection(pudl.etl.default_assets)
- assert AssetKey("hourly_emissions_epacems") not in cems_selection.resolve(
+ assert AssetKey("core_epacems__hourly_emissions") not in cems_selection.resolve(
pudl.etl.default_assets
- ), "hourly_emissions_epacems or downstream asset present in selection."
+ ), "core_epacems__hourly_emissions or downstream asset present in selection."
def test_sql_asset_factory_missing_file():
diff --git a/test/unit/transform/glue_test.py b/test/unit/transform/glue_test.py
index a2f454a2a1..9f6cb397a2 100644
--- a/test/unit/transform/glue_test.py
+++ b/test/unit/transform/glue_test.py
@@ -76,8 +76,8 @@ def test_epacamd_eia_subplant_ids():
)
)
- epacamd_eia_subplant_ids_got = glue_assets.epacamd_eia_subplant_ids(
- epacamd_eia_unique=epacamd_eia_test,
+ epacamd_eia_subplant_ids_got = glue_assets.core_epa__assn_epacamd_eia_subplant_ids(
+ _core_epa__assn_epacamd_eia_unique=epacamd_eia_test,
core_eia860__scd_generators=generators_entity_eia_test,
emissions_unit_ids_epacems=emissions_unit_ids_epacems_test,
core_eia860__assn_boiler_generator=boiler_generator_assn_eia860_test,
diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py
index b7e25b8089..36998a5c86 100644
--- a/test/validate/eia_test.py
+++ b/test/validate/eia_test.py
@@ -170,7 +170,7 @@ def test_minmax_rows(
"boiler_emissions_control_equipment_assn_eia860",
(
Resource.from_id(
- "core_eia860__annual_boiler_emissions_control_equipment_assn"
+ "core_eia860__yearly_boiler_emissions_control_equipment_assn"
).schema.primary_key
),
),
From b851fe79b18de32cdb87571f7150147156ed8a49 Mon Sep 17 00:00:00 2001
From: thinky
Date: Wed, 13 Sep 2023 08:45:18 -0400
Subject: [PATCH 08/70] update tests and rest of assets
---
....py => 2ba971d7e675_rename_core_assets.py} | 1568 ++++++++---------
src/pudl/etl/__init__.py | 8 +-
src/pudl/output/pudltabl.py | 2 +-
test/integration/glue_test.py | 46 +-
4 files changed, 812 insertions(+), 812 deletions(-)
rename migrations/versions/{947f3413295c_rename_core_assets.py => 2ba971d7e675_rename_core_assets.py} (92%)
diff --git a/migrations/versions/947f3413295c_rename_core_assets.py b/migrations/versions/2ba971d7e675_rename_core_assets.py
similarity index 92%
rename from migrations/versions/947f3413295c_rename_core_assets.py
rename to migrations/versions/2ba971d7e675_rename_core_assets.py
index b92d7366e0..2761f11089 100644
--- a/migrations/versions/947f3413295c_rename_core_assets.py
+++ b/migrations/versions/2ba971d7e675_rename_core_assets.py
@@ -1,8 +1,8 @@
"""rename core assets
-Revision ID: 947f3413295c
+Revision ID: 2ba971d7e675
Revises:
-Create Date: 2023-09-07 15:39:22.138031
+Create Date: 2023-09-13 08:44:05.985010
"""
from alembic import op
@@ -10,7 +10,7 @@
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
-revision = '947f3413295c'
+revision = '2ba971d7e675'
down_revision = None
branch_labels = None
depends_on = None
@@ -18,20 +18,6 @@
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('balancing_authority_assn_eia861',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_balancing_authority_assn_eia861'))
- )
- op.create_table('balancing_authority_eia861',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_balancing_authority_eia861'))
- )
op.create_table('compiled_geometry_balancing_authority_eia861',
sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
@@ -56,6 +42,26 @@ def upgrade() -> None:
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_compiled_geometry_utility_eia861'))
)
+ op.create_table('core_eia861__assn_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_balancing_authority'))
+ )
+ op.create_table('core_eia861__assn_utility',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_utility'))
+ )
+ op.create_table('core_eia861__yearly_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_core_eia861__yearly_balancing_authority'))
+ )
op.create_table('core_eia__codes_averaging_periods',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
@@ -255,12 +261,36 @@ def upgrade() -> None:
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
)
+ op.create_table('core_eia__yearly_fuel_receipts_costs_aggs',
+ sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
+ sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
+ sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
+ sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_core_eia__yearly_fuel_receipts_costs_aggs'))
+ )
+ op.create_table('core_epa__assn_epacamd_eia_subplant_ids',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
+ )
op.create_table('core_ferc1__codes_power_purchase_types',
sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
)
+ op.create_table('core_ferc714__respondent_id',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
+ )
op.create_table('core_ferc__codes_accounts',
sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
sa.Column('ferc_account_description', sa.Text(), nullable=True),
@@ -272,7 +302,7 @@ def upgrade() -> None:
sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
)
op.create_table('core_pudl__codes_datasources',
- sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
+ sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'core_epa__assn_epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
@@ -281,39 +311,26 @@ def upgrade() -> None:
op.create_table('core_pudl__codes_subdivisions',
sa.Column('country_code', sa.Enum('USA', 'CAN'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
- sa.Column('subdivision_code', sa.Enum('ME', 'WV', 'LA', 'AR', 'AZ', 'MA', 'NU', 'TX', 'WY', 'AB', 'MO', 'OR', 'DC', 'NC', 'SD', 'PE', 'NL', 'GU', 'IA', 'MS', 'NM', 'FL', 'HI', 'NJ', 'DE', 'SC', 'VA', 'MN', 'YT', 'KS', 'ON', 'SK', 'PR', 'ND', 'NB', 'ID', 'IL', 'RI', 'KY', 'MI', 'BC', 'GA', 'VT', 'OK', 'TN', 'MT', 'IN', 'CT', 'NT', 'VI', 'MB', 'WI', 'QC', 'CO', 'NY', 'CA', 'AS', 'OH', 'AL', 'NH', 'UT', 'NE', 'MP', 'NV', 'WA', 'MD', 'PA', 'AK', 'NS'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_code', sa.Enum('MD', 'NL', 'SD', 'NV', 'AS', 'WI', 'WY', 'MO', 'DE', 'AL', 'NC', 'ID', 'NM', 'SK', 'AR', 'OK', 'KS', 'NU', 'ME', 'IN', 'BC', 'MS', 'NS', 'DC', 'ND', 'TN', 'CO', 'LA', 'SC', 'CT', 'PA', 'PR', 'MT', 'IL', 'PE', 'TX', 'MB', 'AZ', 'FL', 'KY', 'NB', 'NJ', 'IA', 'NH', 'MA', 'AK', 'NT', 'ON', 'QC', 'GU', 'MP', 'NY', 'CA', 'HI', 'MI', 'OH', 'RI', 'WA', 'UT', 'MN', 'GA', 'VT', 'WV', 'AB', 'YT', 'NE', 'VA', 'VI', 'OR'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
- sa.Column('division_code_us_census', sa.Enum('MTN', 'WSC', 'WNC', 'ESC', 'NEW', 'MAT', 'PCC', 'ENC', 'PCN', 'SAT'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('division_code_us_census', sa.Enum('MTN', 'PCN', 'ESC', 'PCC', 'NEW', 'SAT', 'MAT', 'ENC', 'WSC', 'WNC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
)
- op.create_table('epacamd_eia_subplant_ids',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
- )
- op.create_table('fuel_receipts_costs_aggs_eia',
- sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
- sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
- sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
- sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_fuel_receipts_costs_aggs_eia'))
- )
- op.create_table('plants_pudl',
+ op.create_table('core_pudl__entity_plants_pudl',
sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
- sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_plants_pudl'))
+ sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_core_pudl__entity_plants_pudl'))
+ )
+ op.create_table('core_pudl__entity_utilities_pudl',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_core_pudl__entity_utilities_pudl'))
)
op.create_table('predicted_state_hourly_demand',
sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
@@ -322,43 +339,6 @@ def upgrade() -> None:
sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_predicted_state_hourly_demand'))
)
- op.create_table('respondent_id_ferc714',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_respondent_id_ferc714'))
- )
- op.create_table('utilities_pudl',
- sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
- sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_utilities_pudl'))
- )
- op.create_table('utility_assn_eia861',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_utility_assn_eia861'))
- )
- op.create_table('advanced_metering_infrastructure_eia861',
- sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
- sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
- sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
- sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('home_area_network', sa.Integer(), nullable=True),
- sa.Column('non_amr_ami', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_advanced_metering_infrastructure_eia861_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_advanced_metering_infrastructure_eia861'))
- )
op.create_table('core_eia860__scd_emissions_control_equipment',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -410,104 +390,27 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
)
- op.create_table('core_eia923__entity_coalmine',
- sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
- sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
- sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
- sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
- )
- op.create_table('core_eia923__monthly_generation_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
- )
- op.create_table('core_eia923__monthly_generation_fuel_nuclear',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ op.create_table('core_eia861__yearly_advanced_metering_infrastructure',
+ sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
+ sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
+ sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
+ sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('home_area_network', sa.Integer(), nullable=True),
+ sa.Column('non_amr_ami', sa.Integer(), nullable=True),
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
- )
- op.create_table('core_eia__entity_boilers',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
- )
- op.create_table('core_eia__entity_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
- )
- op.create_table('demand_hourly_pa_ferc714',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
- sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('demand_mwh', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['respondent_id_ferc714.respondent_id_ferc714'], name=op.f('fk_demand_hourly_pa_ferc714_respondent_id_ferc714_respondent_id_ferc714')),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_demand_hourly_pa_ferc714'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_advanced_metering_infrastructure'))
)
- op.create_table('demand_response_eia861',
+ op.create_table('core_eia861__yearly_demand_response',
sa.Column('actual_peak_demand_savings_mw', sa.Float(), nullable=True),
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
@@ -522,20 +425,20 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_response_eia861_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_demand_response_eia861'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response'))
)
- op.create_table('demand_response_water_heater_eia861',
+ op.create_table('core_eia861__yearly_demand_response_water_heater',
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
sa.Column('water_heater', sa.Integer(), nullable=True),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_response_water_heater_eia861_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_demand_response_water_heater_eia861'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response_water_heater'))
)
- op.create_table('demand_side_management_ee_dr_eia861',
+ op.create_table('core_eia861__yearly_demand_side_management_ee_dr',
sa.Column('annual_indirect_program_cost', sa.Float(), nullable=True),
sa.Column('annual_total_cost', sa.Float(), nullable=True),
sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
@@ -560,9 +463,9 @@ def upgrade() -> None:
sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_side_management_ee_dr_eia861_data_maturity_core_pudl__codes_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities'))
)
- op.create_table('demand_side_management_misc_eia861',
+ op.create_table('core_eia861__yearly_demand_side_management_misc',
sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
sa.Column('energy_savings_independently_verified', sa.Boolean(), nullable=True),
sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
@@ -577,9 +480,9 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_side_management_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities'))
)
- op.create_table('demand_side_management_sales_eia861',
+ op.create_table('core_eia861__yearly_demand_side_management_sales',
sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
@@ -587,62 +490,488 @@ def upgrade() -> None:
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_demand_side_management_sales_eia861_data_maturity_core_pudl__codes_data_maturities'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities'))
)
- op.create_table('denorm_emissions_control_equipment_eia860',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ op.create_table('core_eia861__yearly_distributed_generation_fuel',
+ sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
+ sa.Column('fuel_pct', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_denorm_emissions_control_equipment_eia860'))
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities'))
)
- op.create_table('denorm_fuel_receipts_costs_eia923',
+ op.create_table('core_eia861__yearly_distributed_generation_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('generators_number', sa.Float(), nullable=True),
sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_tech',
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distribution_systems',
+ sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
+ sa.Column('distribution_circuits', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_dynamic_pricing',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_energy_efficiency',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_green_pricing',
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_mergers',
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('merge_address', sa.Text(), nullable=True),
+ sa.Column('merge_city', sa.Text(), nullable=True),
+ sa.Column('merge_company', sa.Text(), nullable=True),
+ sa.Column('merge_date', sa.Date(), nullable=True),
+ sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
+ sa.Column('new_parent', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_misc',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_misc',
+ sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
+ sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
+ sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
+ sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
+ sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('total_sources_mwh', sa.Float(), nullable=True),
+ sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
+ sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
+ sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_revenue',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('revenue', sa.Float(), nullable=True),
+ sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_reliability',
+ sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
+ sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
+ sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
+ sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia861__yearly_sales',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_core_eia861__yearly_sales'))
+ )
+ op.create_table('core_eia861__yearly_service_territory',
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_core_eia861__yearly_service_territory'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_misc',
+ sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
+ sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
+ sa.Column('bundled_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('generation_activity', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_nerc',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_rto',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia923__entity_coalmine',
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel_nuclear',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
+ )
+ op.create_table('core_eia__entity_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
+ )
+ op.create_table('core_eia__entity_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc714__hourly_demand_pa',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_core_ferc714__hourly_demand_pa'))
+ )
+ op.create_table('core_pudl__assn_plants_eia',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_pudl__assn_plants_eia'))
+ )
+ op.create_table('core_pudl__assn_utilities_eia',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_pudl__assn_utilities_eia'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_pudl__assn_utilities_plants',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_core_pudl__assn_utilities_plants'))
+ )
+ op.create_table('denorm_emissions_control_equipment_eia860',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_denorm_emissions_control_equipment_eia860'))
+ )
+ op.create_table('denorm_fuel_receipts_costs_eia923',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
@@ -661,11 +990,11 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_fuel_receipts_costs_monthly_eia923',
sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
@@ -689,9 +1018,9 @@ def upgrade() -> None:
sa.Column('moisture_content_pct', sa.Float(), nullable=True),
sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_generation_fuel_combined_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -716,10 +1045,10 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_eia923'))
)
op.create_table('denorm_generation_fuel_combined_monthly_eia923',
@@ -741,93 +1070,11 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_monthly_eia923'))
- )
- op.create_table('distributed_generation_fuel_eia861',
- sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
- sa.Column('fuel_pct', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distributed_generation_fuel_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('distributed_generation_misc_eia861',
- sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
- sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
- sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
- sa.Column('generators_number', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distributed_generation_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('distributed_generation_tech_eia861',
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distributed_generation_tech_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('distribution_systems_eia861',
- sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
- sa.Column('distribution_circuits', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_distribution_systems_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('dynamic_pricing_eia861',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
- sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_dynamic_pricing_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('energy_efficiency_eia861',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
- sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
- sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
- sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_energy_efficiency_eia861_data_maturity_core_pudl__codes_data_maturities'))
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_monthly_eia923'))
)
op.create_table('fipsified_respondents_ferc714',
sa.Column('eia_code', sa.Integer(), nullable=True),
@@ -844,21 +1091,7 @@ def upgrade() -> None:
sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['respondent_id_ferc714.respondent_id_ferc714'], name=op.f('fk_fipsified_respondents_ferc714_respondent_id_ferc714_respondent_id_ferc714'))
- )
- op.create_table('green_pricing_eia861',
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
- sa.Column('rec_revenue', sa.Float(), nullable=True),
- sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_green_pricing_eia861_data_maturity_core_pudl__codes_data_maturities'))
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_fipsified_respondents_ferc714_respondent_id_ferc714_core_ferc714__respondent_id'))
)
op.create_table('heat_rate_by_unit_monthly',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -870,178 +1103,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_heat_rate_by_unit_monthly_plant_id_eia_core_eia__entity_plants')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk_heat_rate_by_unit_monthly'))
)
- op.create_table('mergers_eia861',
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('merge_address', sa.Text(), nullable=True),
- sa.Column('merge_city', sa.Text(), nullable=True),
- sa.Column('merge_company', sa.Text(), nullable=True),
- sa.Column('merge_date', sa.Date(), nullable=True),
- sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
- sa.Column('new_parent', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_mergers_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('net_metering_customer_fuel_class_eia861',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_net_metering_customer_fuel_class_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('net_metering_misc_eia861',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_net_metering_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('non_net_metering_customer_fuel_class_eia861',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_non_net_metering_customer_fuel_class_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('non_net_metering_misc_eia861',
- sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('generators_number', sa.Float(), nullable=True),
- sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_non_net_metering_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('operational_data_misc_eia861',
- sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
- sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
- sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
- sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
- sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
- sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
- sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
- sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
- sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
- sa.Column('total_sources_mwh', sa.Float(), nullable=True),
- sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
- sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
- sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
- sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_operational_data_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('operational_data_revenue_eia861',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('revenue', sa.Float(), nullable=True),
- sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_operational_data_revenue_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('plants_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_plants_eia_plant_id_pudl_plants_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_plants_eia'))
- )
- op.create_table('reliability_eia861',
- sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
- sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
- sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
- sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
- sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
- sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
- sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
- sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_reliability_eia861_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_reliability_eia861_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
- )
- op.create_table('sales_eia861',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
- sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_sales_eia861_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_sales_eia861'))
- )
- op.create_table('service_territory_eia861',
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_service_territory_eia861_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_service_territory_eia861'))
- )
op.create_table('summarized_demand_ferc714',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
@@ -1059,70 +1120,9 @@ def upgrade() -> None:
sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['respondent_id_ferc714.respondent_id_ferc714'], name=op.f('fk_summarized_demand_ferc714_respondent_id_ferc714_respondent_id_ferc714')),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_summarized_demand_ferc714_respondent_id_ferc714_core_ferc714__respondent_id')),
sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_summarized_demand_ferc714'))
)
- op.create_table('utilities_eia',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_utilities_eia_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_utilities_eia'))
- )
- op.create_table('utilities_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_utilities_ferc1_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_utilities_ferc1'))
- )
- op.create_table('utility_data_misc_eia861',
- sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
- sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
- sa.Column('bundled_activity', sa.Boolean(), nullable=True),
- sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
- sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
- sa.Column('distribution_activity', sa.Boolean(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('generation_activity', sa.Boolean(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('transmission_activity', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utility_data_misc_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('utility_data_nerc_eia861',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utility_data_nerc_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('utility_data_rto_eia861',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_utility_data_rto_eia861_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('utility_plant_assn',
- sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_utility_plant_assn_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_utility_plant_assn_utility_id_pudl_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_utility_plant_assn'))
- )
op.create_table('capacity_factor_by_generator_monthly',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -1240,6 +1240,17 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
)
+ op.create_table('core_epa__assn_epacamd_eia',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
+ )
op.create_table('core_ferc1__yearly_balance_sheet_assets',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -1250,7 +1261,7 @@ def upgrade() -> None:
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets'))
)
op.create_table('core_ferc1__yearly_balance_sheet_liabilities',
@@ -1263,7 +1274,7 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities'))
)
op.create_table('core_ferc1__yearly_cash_flow',
@@ -1274,7 +1285,7 @@ def upgrade() -> None:
sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flow_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flow'))
)
op.create_table('core_ferc1__yearly_depreciation_amortization_summary',
@@ -1285,7 +1296,7 @@ def upgrade() -> None:
sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_amortization_summary'))
)
op.create_table('core_ferc1__yearly_electric_energy_dispositions',
@@ -1295,7 +1306,7 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_electric_energy_dispositions'))
)
op.create_table('core_ferc1__yearly_electric_energy_sources',
@@ -1305,7 +1316,7 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_electric_energy_sources'))
)
op.create_table('core_ferc1__yearly_electric_operating_expenses',
@@ -1316,7 +1327,7 @@ def upgrade() -> None:
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_electric_operating_expenses'))
)
op.create_table('core_ferc1__yearly_electric_operating_revenues',
@@ -1329,7 +1340,7 @@ def upgrade() -> None:
sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_electric_operating_revenues'))
)
op.create_table('core_ferc1__yearly_electric_plant_depreciation_changes',
@@ -1343,7 +1354,7 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_changes'))
)
op.create_table('core_ferc1__yearly_electric_plant_depreciation_functional',
@@ -1357,7 +1368,7 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_functional'))
)
op.create_table('core_ferc1__yearly_electricity_sales_by_rate_schedule',
@@ -1372,7 +1383,7 @@ def upgrade() -> None:
sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_utilities_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
)
op.create_table('core_ferc1__yearly_income_statement',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
@@ -1384,7 +1395,7 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statement_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statement'))
)
op.create_table('core_ferc1__yearly_other_regulatory_liabilities',
@@ -1396,7 +1407,7 @@ def upgrade() -> None:
sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_utilities_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
)
op.create_table('core_ferc1__yearly_plant_in_service',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -1411,7 +1422,7 @@ def upgrade() -> None:
sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service'))
)
op.create_table('core_ferc1__yearly_purchased_power',
@@ -1432,7 +1443,7 @@ def upgrade() -> None:
sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_utility_id_ferc1_utilities_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
)
op.create_table('core_ferc1__yearly_retained_earnings',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -1444,7 +1455,7 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings'))
)
op.create_table('core_ferc1__yearly_transmission_statistics',
@@ -1467,7 +1478,7 @@ def upgrade() -> None:
sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_statistics_utility_id_ferc1_utilities_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
)
op.create_table('core_ferc1__yearly_utility_plant_summary',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -1478,9 +1489,29 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary'))
)
+ op.create_table('core_pudl__assn_plants_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1_dbf',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_core_pudl__assn_utilities_ferc1_dbf'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1_xbrl',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_core_pudl__assn_utilities_ferc1_xbrl'))
+ )
op.create_table('denorm_balance_sheet_assets_ferc1',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -1493,8 +1524,8 @@ def upgrade() -> None:
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_denorm_balance_sheet_assets_ferc1'))
)
op.create_table('denorm_balance_sheet_liabilities_ferc1',
@@ -1509,8 +1540,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_denorm_balance_sheet_liabilities_ferc1'))
)
op.create_table('denorm_boiler_fuel_eia923',
@@ -1533,10 +1564,10 @@ def upgrade() -> None:
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_eia923'))
)
op.create_table('denorm_boiler_fuel_monthly_eia923',
@@ -1559,10 +1590,10 @@ def upgrade() -> None:
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_monthly_eia923'))
)
op.create_table('denorm_cash_flow_ferc1',
@@ -1575,8 +1606,8 @@ def upgrade() -> None:
sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_cash_flow_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_denorm_cash_flow_ferc1'))
)
op.create_table('denorm_depreciation_amortization_summary_ferc1',
@@ -1589,8 +1620,8 @@ def upgrade() -> None:
sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_denorm_depreciation_amortization_summary_ferc1'))
)
op.create_table('denorm_electric_energy_dispositions_ferc1',
@@ -1602,8 +1633,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_denorm_electric_energy_dispositions_ferc1'))
)
op.create_table('denorm_electric_energy_sources_ferc1',
@@ -1615,8 +1646,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_denorm_electric_energy_sources_ferc1'))
)
op.create_table('denorm_electric_operating_expenses_ferc1',
@@ -1629,8 +1660,8 @@ def upgrade() -> None:
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_denorm_electric_operating_expenses_ferc1'))
)
op.create_table('denorm_electric_operating_revenues_ferc1',
@@ -1645,8 +1676,8 @@ def upgrade() -> None:
sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_denorm_electric_operating_revenues_ferc1'))
)
op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
@@ -1662,8 +1693,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_denorm_electric_plant_depreciation_changes_ferc1'))
)
op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
@@ -1679,8 +1710,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_denorm_electric_plant_depreciation_functional_ferc1'))
)
op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
@@ -1697,8 +1728,8 @@ def upgrade() -> None:
sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_generation_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -1714,9 +1745,9 @@ def upgrade() -> None:
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_generation_eia923_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_denorm_generation_eia923_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_eia923'))
)
op.create_table('denorm_generation_monthly_eia923',
@@ -1731,9 +1762,9 @@ def upgrade() -> None:
sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_monthly_eia923'))
)
op.create_table('denorm_income_statement_ferc1',
@@ -1748,8 +1779,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_income_statement_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_denorm_income_statement_ferc1'))
)
op.create_table('denorm_other_regulatory_liabilities_ferc1',
@@ -1763,8 +1794,8 @@ def upgrade() -> None:
sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_plant_in_service_ferc1',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -1781,8 +1812,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plant_in_service_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_denorm_plant_in_service_ferc1'))
)
op.create_table('denorm_purchased_power_ferc1',
@@ -1805,8 +1836,8 @@ def upgrade() -> None:
sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_purchased_power_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_retained_earnings_ferc1',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -1820,8 +1851,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_retained_earnings_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_denorm_retained_earnings_ferc1'))
)
op.create_table('denorm_transmission_statistics_ferc1',
@@ -1846,8 +1877,8 @@ def upgrade() -> None:
sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_transmission_statistics_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_utilities_eia',
sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
@@ -1879,7 +1910,7 @@ def upgrade() -> None:
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_utilities_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utilities_eia_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_denorm_utilities_eia'))
)
op.create_table('denorm_utility_plant_summary_ferc1',
@@ -1893,21 +1924,10 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_denorm_utility_plant_summary_ferc1'))
)
- op.create_table('epacamd_eia',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
- )
op.create_table('fuel_cost_by_generator_monthly',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -1925,9 +1945,9 @@ def upgrade() -> None:
sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_monthly'))
)
op.create_table('generation_fuel_by_generator_energy_source_monthly_eia923',
@@ -1959,9 +1979,9 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_generation_fuel_by_generator_monthly_eia923'))
)
op.create_table('heat_rate_by_generator_monthly',
@@ -2006,10 +2026,10 @@ def upgrade() -> None:
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_mcoe_generators_monthly_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_monthly_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_monthly_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_mcoe_generators_monthly_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_monthly_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_monthly'))
)
op.create_table('mcoe_monthly',
@@ -2028,26 +2048,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_mcoe_monthly_plant_id_eia_core_eia__entity_generators')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_monthly'))
)
- op.create_table('plants_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_plants_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_plants_ferc1_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_plants_ferc1'))
- )
- op.create_table('utilities_ferc1_dbf',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_utilities_ferc1_dbf_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_utilities_ferc1_dbf'))
- )
- op.create_table('utilities_ferc1_xbrl',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_utilities_ferc1_xbrl_utility_id_ferc1_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_utilities_ferc1_xbrl'))
- )
op.create_table('core_eia860__scd_boilers',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
@@ -2302,7 +2302,7 @@ def upgrade() -> None:
sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_fuel_utility_id_ferc1_plants_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
)
op.create_table('core_ferc1__yearly_plants_hydro',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
@@ -2310,7 +2310,7 @@ def upgrade() -> None:
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('plant_type', sa.Enum('run_of_river', 'na_category', 'storage', 'hydro', 'run_of_river_with_storage'), nullable=True),
+ sa.Column('plant_type', sa.Enum('hydro', 'run_of_river_with_storage', 'run_of_river', 'na_category', 'storage'), nullable=True),
sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
@@ -2342,7 +2342,7 @@ def upgrade() -> None:
sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_hydro_utility_id_ferc1_plants_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_hydro_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
)
op.create_table('core_ferc1__yearly_plants_pumped_storage',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
@@ -2386,7 +2386,7 @@ def upgrade() -> None:
sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_plants_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
)
op.create_table('core_ferc1__yearly_plants_small',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
@@ -2406,7 +2406,7 @@ def upgrade() -> None:
sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
sa.Column('fuel_type', sa.Text(), nullable=True),
sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_small_utility_id_ferc1_plants_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_small_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
)
op.create_table('core_ferc1__yearly_plants_steam',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
@@ -2414,7 +2414,7 @@ def upgrade() -> None:
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Enum('solar_thermal', 'combined_cycle', 'photovoltaic', 'geothermal', 'combustion_turbine', 'internal_combustion', 'wind', 'steam', 'nuclear', 'na_category'), nullable=True),
+ sa.Column('plant_type', sa.Enum('geothermal', 'solar_thermal', 'combined_cycle', 'combustion_turbine', 'internal_combustion', 'wind', 'photovoltaic', 'nuclear', 'na_category', 'steam'), nullable=True),
sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
@@ -2449,7 +2449,7 @@ def upgrade() -> None:
sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_plants_ferc1'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
)
op.create_table('denorm_fuel_by_plant_ferc1',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -2472,9 +2472,9 @@ def upgrade() -> None:
sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_by_plant_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_fuel_by_plant_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_by_plant_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_by_plant_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_fuel_by_plant_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_by_plant_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_denorm_fuel_by_plant_ferc1'))
)
op.create_table('denorm_fuel_ferc1',
@@ -2494,9 +2494,9 @@ def upgrade() -> None:
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_fuel_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_fuel_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_denorm_fuel_ferc1'))
)
op.create_table('denorm_fuel_receipts_costs_yearly_eia923',
@@ -2521,9 +2521,9 @@ def upgrade() -> None:
sa.Column('moisture_content_pct', sa.Float(), nullable=True),
sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('denorm_generation_fuel_combined_yearly_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
@@ -2544,10 +2544,10 @@ def upgrade() -> None:
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_denorm_generation_fuel_combined_yearly_eia923'))
)
op.create_table('denorm_plants_all_ferc1',
@@ -2629,9 +2629,9 @@ def upgrade() -> None:
sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_all_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_all_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_all_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_all_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_all_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_all_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_denorm_plants_all_ferc1'))
)
op.create_table('denorm_plants_eia',
@@ -2692,11 +2692,11 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_plants_eia_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_eia_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_plants_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_eia_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_denorm_plants_eia'))
)
op.create_table('denorm_plants_hydro_ferc1',
@@ -2742,9 +2742,9 @@ def upgrade() -> None:
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('plant_type', sa.Text(), nullable=True),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_hydro_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_hydro_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_hydro_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_hydro_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_hydro_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_hydro_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_denorm_plants_hydro_ferc1'))
)
op.create_table('denorm_plants_pumped_storage_ferc1',
@@ -2794,9 +2794,9 @@ def upgrade() -> None:
sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_pumped_storage_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_pumped_storage_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_pumped_storage_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_pumped_storage_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_pumped_storage_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_pumped_storage_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_denorm_plants_pumped_storage_ferc1'))
)
op.create_table('denorm_plants_small_ferc1',
@@ -2822,9 +2822,9 @@ def upgrade() -> None:
sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
sa.Column('plant_type', sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_small_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_small_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_small_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_small_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_small_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_small_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_denorm_plants_small_ferc1'))
)
op.create_table('denorm_plants_steam_ferc1',
@@ -2883,9 +2883,9 @@ def upgrade() -> None:
sa.Column('plant_type', sa.Text(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_steam_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_steam_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_steam_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_steam_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_steam_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_steam_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_denorm_plants_steam_ferc1'))
)
op.create_table('denorm_plants_utilities_eia',
@@ -2897,9 +2897,9 @@ def upgrade() -> None:
sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_denorm_plants_utilities_eia_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_utilities_eia_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_utilities_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_plants_utilities_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_utilities_eia_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk_denorm_plants_utilities_eia'))
)
op.create_table('denorm_plants_utilities_ferc1',
@@ -2908,9 +2908,9 @@ def upgrade() -> None:
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_utilities_ferc1_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_utilities_ferc1_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_utilities_ferc1_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_plants_utilities_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_denorm_plants_utilities_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_plants_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_denorm_plants_utilities_ferc1'))
)
op.create_table('heat_rate_by_unit_yearly',
@@ -2933,17 +2933,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_capacity_factor_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_capacity_factor_by_generator_yearly'))
)
- op.create_table('core_eia860__annual_boiler_emissions_control_equipment_assn',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
- sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__annual_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__annual_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__annual_boiler_emissions_control_equipment_assn'))
- )
op.create_table('core_eia860__assn_boiler_cooling',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -2990,7 +2979,7 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('ME', 'WV', 'LA', 'AR', 'AZ', 'MA', 'NU', 'TX', 'WY', 'AB', 'MO', 'OR', 'DC', 'NC', 'SD', 'PE', 'NL', 'GU', 'IA', 'MS', 'NM', 'FL', 'HI', 'NJ', 'DE', 'SC', 'VA', 'MN', 'YT', 'KS', 'ON', 'SK', 'PR', 'ND', 'NB', 'ID', 'IL', 'RI', 'KY', 'MI', 'BC', 'GA', 'VT', 'OK', 'TN', 'MT', 'IN', 'CT', 'NT', 'VI', 'MB', 'WI', 'QC', 'CO', 'NY', 'CA', 'AS', 'OH', 'AL', 'NH', 'UT', 'NE', 'MP', 'NV', 'WA', 'MD', 'PA', 'AK', 'NS'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('MD', 'NL', 'SD', 'NV', 'AS', 'WI', 'WY', 'MO', 'DE', 'AL', 'NC', 'ID', 'NM', 'SK', 'AR', 'OK', 'KS', 'NU', 'ME', 'IN', 'BC', 'MS', 'NS', 'DC', 'ND', 'TN', 'CO', 'LA', 'SC', 'CT', 'PA', 'PR', 'MT', 'IL', 'PE', 'TX', 'MB', 'AZ', 'FL', 'KY', 'NB', 'NJ', 'IA', 'NH', 'MA', 'AK', 'NT', 'ON', 'QC', 'GU', 'MP', 'NY', 'CA', 'HI', 'MI', 'OH', 'RI', 'WA', 'UT', 'MN', 'GA', 'VT', 'WV', 'AB', 'YT', 'NE', 'VA', 'VI', 'OR'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
@@ -3002,6 +2991,17 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_utility_id_eia_core_eia860__scd_utilities')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
)
+ op.create_table('core_eia860__yearly_boiler_emissions_control_equipment_assn',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
+ sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__yearly_boiler_emissions_control_equipment_assn'))
+ )
op.create_table('denorm_boiler_fuel_yearly_eia923',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -3022,10 +3022,10 @@ def upgrade() -> None:
sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_denorm_boiler_fuel_yearly_eia923'))
)
op.create_table('denorm_boilers_eia',
@@ -3171,7 +3171,7 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_denorm_boilers_eia_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boilers_eia_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_boilers_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_mercury_core_eia__codes_regulations')),
sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_nox_core_eia__codes_regulations')),
sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_denorm_boilers_eia_regulation_particulate_core_eia__codes_regulations')),
@@ -3189,7 +3189,7 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_denorm_boilers_eia_unit_particulate_core_eia__codes_particulate_units')),
sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_denorm_boilers_eia_unit_so2_core_eia__codes_so2_units')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_boilers_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boilers_eia_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_boilers_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_denorm_boilers_eia_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_denorm_boilers_eia'))
)
@@ -3205,9 +3205,9 @@ def upgrade() -> None:
sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_denorm_generation_yearly_eia923_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_yearly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generation_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_generation_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_yearly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generation_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generation_yearly_eia923'))
)
op.create_table('denorm_generators_eia',
@@ -3330,14 +3330,14 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_planned_energy_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generators_eia_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_denorm_generators_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generators_eia_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_denorm_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_2_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_3_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_denorm_generators_eia_startup_source_code_4_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generators_eia_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_denorm_generators_eia'))
)
op.create_table('denorm_ownership_eia860',
@@ -3351,7 +3351,7 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('ME', 'WV', 'LA', 'AR', 'AZ', 'MA', 'NU', 'TX', 'WY', 'AB', 'MO', 'OR', 'DC', 'NC', 'SD', 'PE', 'NL', 'GU', 'IA', 'MS', 'NM', 'FL', 'HI', 'NJ', 'DE', 'SC', 'VA', 'MN', 'YT', 'KS', 'ON', 'SK', 'PR', 'ND', 'NB', 'ID', 'IL', 'RI', 'KY', 'MI', 'BC', 'GA', 'VT', 'OK', 'TN', 'MT', 'IN', 'CT', 'NT', 'VI', 'MB', 'WI', 'QC', 'CO', 'NY', 'CA', 'AS', 'OH', 'AL', 'NH', 'UT', 'NE', 'MP', 'NV', 'WA', 'MD', 'PA', 'AK', 'NS'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('MD', 'NL', 'SD', 'NV', 'AS', 'WI', 'WY', 'MO', 'DE', 'AL', 'NC', 'ID', 'NM', 'SK', 'AR', 'OK', 'KS', 'NU', 'ME', 'IN', 'BC', 'MS', 'NS', 'DC', 'ND', 'TN', 'CO', 'LA', 'SC', 'CT', 'PA', 'PR', 'MT', 'IL', 'PE', 'TX', 'MB', 'AZ', 'FL', 'KY', 'NB', 'NJ', 'IA', 'NH', 'MA', 'AK', 'NT', 'ON', 'QC', 'GU', 'MP', 'NY', 'CA', 'HI', 'MI', 'OH', 'RI', 'WA', 'UT', 'MN', 'GA', 'VT', 'WV', 'AB', 'YT', 'NE', 'VA', 'VI', 'OR'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
@@ -3360,9 +3360,9 @@ def upgrade() -> None:
sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_denorm_ownership_eia860_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_ownership_eia860_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_denorm_ownership_eia860_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_denorm_ownership_eia860_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_ownership_eia860_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_denorm_ownership_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_denorm_ownership_eia860'))
)
op.create_table('fuel_cost_by_generator_yearly',
@@ -3382,9 +3382,9 @@ def upgrade() -> None:
sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_yearly'))
)
op.create_table('generation_fuel_by_generator_energy_source_owner_yearly_eia923',
@@ -3435,9 +3435,9 @@ def upgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_generation_fuel_by_generator_yearly_eia923'))
)
op.create_table('heat_rate_by_generator_yearly',
@@ -3482,10 +3482,10 @@ def upgrade() -> None:
sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources')),
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mcoe_generators_yearly_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_yearly_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_yearly_plant_id_pudl_core_pudl__entity_plants_pudl')),
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers')),
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mcoe_generators_yearly_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_yearly_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_yearly'))
)
op.create_table('mcoe_yearly',
@@ -3521,11 +3521,11 @@ def downgrade() -> None:
op.drop_table('denorm_generation_yearly_eia923')
op.drop_table('denorm_boilers_eia')
op.drop_table('denorm_boiler_fuel_yearly_eia923')
+ op.drop_table('core_eia860__yearly_boiler_emissions_control_equipment_assn')
op.drop_table('core_eia860__scd_ownership')
op.drop_table('core_eia860__assn_boiler_stack_flue')
op.drop_table('core_eia860__assn_boiler_generator')
op.drop_table('core_eia860__assn_boiler_cooling')
- op.drop_table('core_eia860__annual_boiler_emissions_control_equipment_assn')
op.drop_table('capacity_factor_by_generator_yearly')
op.drop_table('heat_rate_by_unit_yearly')
op.drop_table('denorm_plants_utilities_ferc1')
@@ -3547,16 +3547,12 @@ def downgrade() -> None:
op.drop_table('core_ferc1__yearly_fuel')
op.drop_table('core_eia860__scd_generators')
op.drop_table('core_eia860__scd_boilers')
- op.drop_table('utilities_ferc1_xbrl')
- op.drop_table('utilities_ferc1_dbf')
- op.drop_table('plants_ferc1')
op.drop_table('mcoe_monthly')
op.drop_table('mcoe_generators_monthly')
op.drop_table('heat_rate_by_generator_monthly')
op.drop_table('generation_fuel_by_generator_monthly_eia923')
op.drop_table('generation_fuel_by_generator_energy_source_monthly_eia923')
op.drop_table('fuel_cost_by_generator_monthly')
- op.drop_table('epacamd_eia')
op.drop_table('denorm_utility_plant_summary_ferc1')
op.drop_table('denorm_utilities_eia')
op.drop_table('denorm_transmission_statistics_ferc1')
@@ -3580,6 +3576,9 @@ def downgrade() -> None:
op.drop_table('denorm_boiler_fuel_eia923')
op.drop_table('denorm_balance_sheet_liabilities_ferc1')
op.drop_table('denorm_balance_sheet_assets_ferc1')
+ op.drop_table('core_pudl__assn_utilities_ferc1_xbrl')
+ op.drop_table('core_pudl__assn_utilities_ferc1_dbf')
+ op.drop_table('core_pudl__assn_plants_ferc1')
op.drop_table('core_ferc1__yearly_utility_plant_summary')
op.drop_table('core_ferc1__yearly_transmission_statistics')
op.drop_table('core_ferc1__yearly_retained_earnings')
@@ -3598,69 +3597,69 @@ def downgrade() -> None:
op.drop_table('core_ferc1__yearly_cash_flow')
op.drop_table('core_ferc1__yearly_balance_sheet_liabilities')
op.drop_table('core_ferc1__yearly_balance_sheet_assets')
+ op.drop_table('core_epa__assn_epacamd_eia')
op.drop_table('core_eia923__monthly_generation')
op.drop_table('core_eia923__monthly_fuel_receipts_costs')
op.drop_table('core_eia923__monthly_boiler_fuel')
op.drop_table('core_eia860__scd_plants')
op.drop_table('capacity_factor_by_generator_monthly')
- op.drop_table('utility_plant_assn')
- op.drop_table('utility_data_rto_eia861')
- op.drop_table('utility_data_nerc_eia861')
- op.drop_table('utility_data_misc_eia861')
- op.drop_table('utilities_ferc1')
- op.drop_table('utilities_eia')
op.drop_table('summarized_demand_ferc714')
- op.drop_table('service_territory_eia861')
- op.drop_table('sales_eia861')
- op.drop_table('reliability_eia861')
- op.drop_table('plants_eia')
- op.drop_table('operational_data_revenue_eia861')
- op.drop_table('operational_data_misc_eia861')
- op.drop_table('non_net_metering_misc_eia861')
- op.drop_table('non_net_metering_customer_fuel_class_eia861')
- op.drop_table('net_metering_misc_eia861')
- op.drop_table('net_metering_customer_fuel_class_eia861')
- op.drop_table('mergers_eia861')
op.drop_table('heat_rate_by_unit_monthly')
- op.drop_table('green_pricing_eia861')
op.drop_table('fipsified_respondents_ferc714')
- op.drop_table('energy_efficiency_eia861')
- op.drop_table('dynamic_pricing_eia861')
- op.drop_table('distribution_systems_eia861')
- op.drop_table('distributed_generation_tech_eia861')
- op.drop_table('distributed_generation_misc_eia861')
- op.drop_table('distributed_generation_fuel_eia861')
op.drop_table('denorm_generation_fuel_combined_monthly_eia923')
op.drop_table('denorm_generation_fuel_combined_eia923')
op.drop_table('denorm_fuel_receipts_costs_monthly_eia923')
op.drop_table('denorm_fuel_receipts_costs_eia923')
op.drop_table('denorm_emissions_control_equipment_eia860')
- op.drop_table('demand_side_management_sales_eia861')
- op.drop_table('demand_side_management_misc_eia861')
- op.drop_table('demand_side_management_ee_dr_eia861')
- op.drop_table('demand_response_water_heater_eia861')
- op.drop_table('demand_response_eia861')
- op.drop_table('demand_hourly_pa_ferc714')
+ op.drop_table('core_pudl__assn_utilities_plants')
+ op.drop_table('core_pudl__assn_utilities_ferc1')
+ op.drop_table('core_pudl__assn_utilities_eia')
+ op.drop_table('core_pudl__assn_plants_eia')
+ op.drop_table('core_ferc714__hourly_demand_pa')
op.drop_table('core_eia__entity_generators')
op.drop_table('core_eia__entity_boilers')
op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
op.drop_table('core_eia923__monthly_generation_fuel')
op.drop_table('core_eia923__entity_coalmine')
+ op.drop_table('core_eia861__yearly_utility_data_rto')
+ op.drop_table('core_eia861__yearly_utility_data_nerc')
+ op.drop_table('core_eia861__yearly_utility_data_misc')
+ op.drop_table('core_eia861__yearly_service_territory')
+ op.drop_table('core_eia861__yearly_sales')
+ op.drop_table('core_eia861__yearly_reliability')
+ op.drop_table('core_eia861__yearly_operational_data_revenue')
+ op.drop_table('core_eia861__yearly_operational_data_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_net_metering_misc')
+ op.drop_table('core_eia861__yearly_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_mergers')
+ op.drop_table('core_eia861__yearly_green_pricing')
+ op.drop_table('core_eia861__yearly_energy_efficiency')
+ op.drop_table('core_eia861__yearly_dynamic_pricing')
+ op.drop_table('core_eia861__yearly_distribution_systems')
+ op.drop_table('core_eia861__yearly_distributed_generation_tech')
+ op.drop_table('core_eia861__yearly_distributed_generation_misc')
+ op.drop_table('core_eia861__yearly_distributed_generation_fuel')
+ op.drop_table('core_eia861__yearly_demand_side_management_sales')
+ op.drop_table('core_eia861__yearly_demand_side_management_misc')
+ op.drop_table('core_eia861__yearly_demand_side_management_ee_dr')
+ op.drop_table('core_eia861__yearly_demand_response_water_heater')
+ op.drop_table('core_eia861__yearly_demand_response')
+ op.drop_table('core_eia861__yearly_advanced_metering_infrastructure')
op.drop_table('core_eia860__scd_utilities')
op.drop_table('core_eia860__scd_emissions_control_equipment')
- op.drop_table('advanced_metering_infrastructure_eia861')
- op.drop_table('utility_assn_eia861')
- op.drop_table('utilities_pudl')
- op.drop_table('respondent_id_ferc714')
op.drop_table('predicted_state_hourly_demand')
- op.drop_table('plants_pudl')
- op.drop_table('fuel_receipts_costs_aggs_eia')
- op.drop_table('epacamd_eia_subplant_ids')
+ op.drop_table('core_pudl__entity_utilities_pudl')
+ op.drop_table('core_pudl__entity_plants_pudl')
op.drop_table('core_pudl__codes_subdivisions')
op.drop_table('core_pudl__codes_datasources')
op.drop_table('core_pudl__codes_data_maturities')
op.drop_table('core_ferc__codes_accounts')
+ op.drop_table('core_ferc714__respondent_id')
op.drop_table('core_ferc1__codes_power_purchase_types')
+ op.drop_table('core_epa__assn_epacamd_eia_subplant_ids')
+ op.drop_table('core_eia__yearly_fuel_receipts_costs_aggs')
op.drop_table('core_eia__entity_utilities')
op.drop_table('core_eia__entity_plants')
op.drop_table('core_eia__codes_wet_dry_bottom')
@@ -3692,8 +3691,9 @@ def downgrade() -> None:
op.drop_table('core_eia__codes_boiler_generator_assn_types')
op.drop_table('core_eia__codes_balancing_authorities')
op.drop_table('core_eia__codes_averaging_periods')
+ op.drop_table('core_eia861__yearly_balancing_authority')
+ op.drop_table('core_eia861__assn_utility')
+ op.drop_table('core_eia861__assn_balancing_authority')
op.drop_table('compiled_geometry_utility_eia861')
op.drop_table('compiled_geometry_balancing_authority_eia861')
- op.drop_table('balancing_authority_eia861')
- op.drop_table('balancing_authority_assn_eia861')
# ### end Alembic commands ###
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index 98d506eb72..0e7f6bb207 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -26,7 +26,7 @@
logger = pudl.logging_helpers.get_logger(__name__)
default_assets = (
- *load_assets_from_modules([eia_bulk_elec_assets], group_name="eia_bulk_elec"),
+ *load_assets_from_modules([eia_bulk_elec_assets], group_name="core_eia_bulk_elec"),
*load_assets_from_modules([epacems_assets], group_name="core_epacems"),
*load_assets_from_modules([pudl.extract.eia860], group_name="raw_eia860"),
*load_assets_from_modules([pudl.transform.eia860], group_name="_core_eia860"),
@@ -44,10 +44,10 @@
*load_assets_from_modules([pudl.output.ferc714], group_name="respondents_ferc714"),
*load_assets_from_modules(
[pudl.convert.censusdp1tract_to_sqlite, pudl.output.censusdp1tract],
- group_name="censusdp1",
+ group_name="core_censusdp1",
),
- *load_assets_from_modules([glue_assets], group_name="glue"),
- *load_assets_from_modules([static_assets], group_name="static"),
+ *load_assets_from_modules([glue_assets], group_name="core_assn"),
+ *load_assets_from_modules([static_assets], group_name="core_codes"),
*load_assets_from_modules(
[
pudl.output.eia,
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 82d0713d5d..e887da23ef 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -202,7 +202,7 @@ def _register_output_methods(self: Self):
"core_eia861__yearly_utility_data_misc": "utility_data_misc_eia861",
"core_eia861__assn_utility": "core_eia861__assn_utility",
"core_eia861__yearly_balancing_authority": "balancing_authority_eia861",
- "balancing_authority_assn_eia861": "balancing_authority_assn_eia861",
+ "core_eia861__assn_balancing_authority": "balancing_authority_assn_eia861",
# eia923 (denormalized, data primarily from EIA-923)
"denorm_boiler_fuel_AGG_eia923": "bf_eia923",
"denorm_fuel_receipts_costs_AGG_eia923": "frc_eia923",
diff --git a/test/integration/glue_test.py b/test/integration/glue_test.py
index 3cc21e1a99..7c0fc74483 100644
--- a/test/integration/glue_test.py
+++ b/test/integration/glue_test.py
@@ -75,11 +75,11 @@ def glue_test_dfs(
glue_test_dfs.update(
{
"utilities_ferc1_dbf_labeled": label_utilities_ferc1_dbf(
- glue_test_dfs["utilities_ferc1_dbf"],
+ glue_test_dfs["core_pudl__assn_utilities_ferc1_dbf"],
glue_test_dfs["util_ids_ferc1_raw_dbf"],
),
"utilities_ferc1_xbrl_labeled": label_utilities_ferc1_xbrl(
- glue_test_dfs["utilities_ferc1_xbrl"],
+ glue_test_dfs["core_pudl__assn_utilities_ferc1_xbrl"],
glue_test_dfs["util_ids_ferc1_raw_xbrl"],
),
}
@@ -103,63 +103,63 @@ def save_to_devtools_glue(missing_df: pd.DataFrame, test_dir, file_name: str):
"ids_left,ids_right,id_cols,label_df",
[
pytest.param(
- "utilities_pudl",
- "utilities_ferc1",
+ "core_pudl__entity_utilities_pudl",
+ "core_pudl__assn_utilities_ferc1",
["utility_id_pudl"],
- "utilities_ferc1",
+ "core_pudl__assn_utilities_ferc1",
id="missing_utility_id_pudl_in_utilities_ferc1",
),
pytest.param(
- "utilities_ferc1",
- "utilities_ferc1_dbf",
+ "core_pudl__assn_utilities_ferc1",
+ "core_pudl__assn_utilities_ferc1_dbf",
["utility_id_ferc1"],
"utilities_ferc1_dbf_labeled",
id="missing_utility_id_ferc1_in_utilities_ferc1_dbf",
),
pytest.param(
- "utilities_ferc1",
- "utilities_ferc1_xbrl",
+ "core_pudl__assn_utilities_ferc1",
+ "core_pudl__assn_utilities_ferc1_xbrl",
["utility_id_ferc1"],
"utilities_ferc1_xbrl_labeled",
id="missing_utility_id_ferc1_in_utilities_ferc1_xbrl",
),
pytest.param(
- "utilities_ferc1",
- "plants_ferc1",
+ "core_pudl__assn_utilities_ferc1",
+ "core_pudl__assn_plants_ferc1",
["utility_id_ferc1"],
- "plants_ferc1",
+ "core_pudl__assn_plants_ferc1",
id="missing_utility_id_ferc1_in_plants_ferc1",
),
pytest.param(
- "utilities_ferc1_xbrl",
+ "core_pudl__assn_utilities_ferc1_xbrl",
"util_ids_ferc1_raw_xbrl",
["utility_id_ferc1_xbrl"],
"util_ids_ferc1_raw_xbrl",
id="missing_utility_id_ferc1_xbrl_in_raw_xbrl",
),
pytest.param(
- "utilities_ferc1_dbf",
+ "core_pudl__assn_utilities_ferc1_dbf",
"util_ids_ferc1_raw_dbf",
["utility_id_ferc1_dbf"],
"util_ids_ferc1_raw_dbf",
id="missing_utility_id_ferc1_dbf_in_raw_dbf",
),
pytest.param(
- "plants_pudl",
- "plants_ferc1",
+ "core_pudl__entity_plants_pudl",
+ "core_pudl__assn_plants_ferc1",
["plant_id_pudl"],
None, # should only ever happen if a plant is in the mapping sheet w/o a pudl id
id="missing_plant_id_pudl_in_plants_ferc1",
),
pytest.param(
- "plants_ferc1",
+ "core_pudl__assn_plants_ferc1",
"plants_ferc1_raw",
["utility_id_ferc1", "plant_name_ferc1"],
"plants_ferc1_raw",
id="missing_plants_in_plants_ferc1",
),
pytest.param(
- "plants_eia",
+ "core_pudl__assn_plants_eia",
"plants_eia_pudl_db",
["plant_id_eia"],
"plants_eia_labeled",
@@ -222,15 +222,15 @@ def test_for_fk_validation_and_unmapped_ids(
"ids_left,ids_right,id_cols,drop",
[
pytest.param(
- "plants_ferc1",
+ "core_pudl__assn_plants_ferc1",
"plants_ferc1_raw",
["utility_id_ferc1", "plant_name_ferc1"],
(227, "comanche"),
id="check_for_unmmapped_plants_in_plants_ferc1",
),
pytest.param(
- "utilities_ferc1",
- "utilities_ferc1_xbrl",
+ "core_pudl__assn_utilities_ferc1",
+ "core_pudl__assn_utilities_ferc1_xbrl",
["utility_id_ferc1"],
(227),
id="validate_utility_id_ferc1_in_utilities_ferc1_xbrl",
@@ -271,12 +271,12 @@ def test_unmapped_utils_eia(
This test has its own call signature because its more complex. In order to label the
missing utilities, we use both the ``pudl_out`` object as well as direct SQL
- queries. This test is duplicative with the sql foriegn key constraints.
+ queries. This test is duplicative with the sql foreign key constraints.
"""
unmapped_utils_eia = get_util_ids_eia_unmapped(
pudl_out,
pudl_engine,
- glue_test_dfs["utilities_eia"],
+ glue_test_dfs["core_pudl__assn_utilities_eia"],
)
if save_unmapped_ids:
From 2232577d3d29c612c616515c8d6a2001d650da75 Mon Sep 17 00:00:00 2001
From: thinky
Date: Wed, 13 Sep 2023 16:46:54 -0400
Subject: [PATCH 09/70] Fix validation tests
---
docs/release_notes.rst | 6 +++---
test/validate/eia_test.py | 2 +-
test/validate/ferc1_test.py | 34 +++++++++++++++++-----------------
3 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index eb8974ee12..c56745a0ee 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -75,9 +75,9 @@ Data Coverage
CAMPD API, and to include 2022 data. Due to changes in the ETL, Alaska, Puerto Rico
and Hawaii are now included in CEMS processing. See issue :issue:`1264` & PRs
:pr:`2779`, :pr:` 2816`.
-* New :ref:`epacamd_eia` crosswalk version v0.3, see issue :issue:`2317` and PR
- :pr:`2316`. EPA's updates add manual matches and exclusions focusing on operating
- units with a generator ID as of 2018.
+* New :ref:`core_epa__assn_epacamd_eia` crosswalk version v0.3, see issue :issue:`2317`
+ and PR :pr:`2316`. EPA's updates add manual matches and exclusions focusing on
+ operating units with a generator ID as of 2018.
* New PUDL tables from :doc:`data_sources/ferc1`, integrating older DBF and newer XBRL
data. See :issue:`1574` for an overview of our progress integrating FERC's XBRL data.
To see which DBF and XBRL tables the following PUDL tables are derived from, refer to
diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py
index 36998a5c86..b502464b39 100644
--- a/test/validate/eia_test.py
+++ b/test/validate/eia_test.py
@@ -159,7 +159,7 @@ def test_minmax_rows(
),
),
(
- "core_eia860__scd_emissions_control_equipment",
+ "emissions_control_equipment_eia860",
(
Resource.from_id(
"core_eia860__scd_emissions_control_equipment"
diff --git a/test/validate/ferc1_test.py b/test/validate/ferc1_test.py
index c251bddae3..aba39873cf 100644
--- a/test/validate/ferc1_test.py
+++ b/test/validate/ferc1_test.py
@@ -61,15 +61,15 @@ def test_record_id_dupes(pudl_engine, table_name):
"df_name,cols",
[
("fbp_ferc1", "all"),
- ("core_ferc1__yearly_fuel", "all"),
- ("core_ferc1__yearly_plant_in_service", "all"),
+ ("fuel_ferc1", "all"),
+ ("plant_in_service_ferc1", "all"),
("plants_all_ferc1", "all"),
- ("core_ferc1__yearly_plants_hydro", "all"),
- ("core_ferc1__yearly_plants_pumped_storage", "all"),
- ("core_ferc1__yearly_plants_small", "all"),
- ("core_ferc1__yearly_plants_steam", "all"),
+ ("plants_hydro_ferc1", "all"),
+ ("plants_pumped_storage_ferc1", "all"),
+ ("plants_small_ferc1", "all"),
+ ("plants_steam_ferc1", "all"),
("pu_ferc1", "all"),
- ("core_ferc1__yearly_purchased_power", "all"),
+ ("purchased_power_ferc1", "all"),
],
)
def test_no_null_cols_ferc1(pudl_out_ferc1, live_dbs, cols, df_name):
@@ -85,15 +85,15 @@ def test_no_null_cols_ferc1(pudl_out_ferc1, live_dbs, cols, df_name):
"df_name,expected_rows",
[
("fbp_ferc1", 25_421),
- ("core_ferc1__yearly_fuel", 48_841),
- ("core_ferc1__yearly_plant_in_service", 311_986),
+ ("fuel_ferc1", 48_841),
+ ("plant_in_service_ferc1", 311_986),
("plants_all_ferc1", 54_284),
- ("core_ferc1__yearly_plants_hydro", 6_796),
- ("core_ferc1__yearly_plants_pumped_storage", 544),
- ("core_ferc1__yearly_plants_small", 16_235),
- ("core_ferc1__yearly_plants_steam", 30_709),
+ ("plants_hydro_ferc1", 6_796),
+ ("plants_pumped_storage_ferc1", 544),
+ ("plants_small_ferc1", 16_235),
+ ("plants_steam_ferc1", 30_709),
("pu_ferc1", 7_425),
- ("core_ferc1__yearly_purchased_power", 197_523),
+ ("purchased_power_ferc1", 197_523),
],
)
def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
@@ -127,7 +127,7 @@ def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
("pu_ferc1", ["utility_id_ferc1", "plant_name_ferc1"]),
("fbp_ferc1", ["report_year", "utility_id_ferc1", "plant_name_ferc1"]),
(
- "core_ferc1__yearly_plants_hydro",
+ "plants_hydro_ferc1",
[
"report_year",
"utility_id_ferc1",
@@ -136,7 +136,7 @@ def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
],
),
(
- "core_ferc1__yearly_plants_pumped_storage",
+ "plants_pumped_storage_ferc1",
[
"report_year",
"utility_id_ferc1",
@@ -145,7 +145,7 @@ def test_minmax_rows(pudl_out_ferc1, live_dbs, expected_rows, df_name):
],
),
(
- "core_ferc1__yearly_plant_in_service",
+ "plant_in_service_ferc1",
["report_year", "utility_id_ferc1", "ferc_account_label"],
),
],
From 7e7303af46c2946d89e6a365610a76373e1827b0 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 13 Sep 2023 17:18:23 -0400
Subject: [PATCH 10/70] Rename ferc output assets
---
src/pudl/etl/__init__.py | 2 +-
src/pudl/metadata/resources/ferc1.py | 52 +++---
src/pudl/output/ferc1.py | 214 ++++++++++++-----------
src/pudl/output/pudltabl.py | 52 +++---
test/validate/fuel_ferc1_test.py | 8 +-
test/validate/plants_steam_ferc1_test.py | 12 +-
6 files changed, 177 insertions(+), 163 deletions(-)
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index 03c49357e5..590e69d6c2 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -59,7 +59,7 @@
[pudl.analysis.allocate_gen_fuel], group_name="allocate_gen_fuel"
),
*load_assets_from_modules([pudl.analysis.mcoe], group_name="mcoe"),
- *load_assets_from_modules([pudl.output.ferc1], group_name="denorm_ferc1"),
+ *load_assets_from_modules([pudl.output.ferc1], group_name="out_ferc1"),
*load_assets_from_modules(
[pudl.analysis.service_territory], group_name="service_territory_eia861"
),
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index 22d99de01f..761f6aa79b 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -824,7 +824,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "denorm_plants_utilities_ferc1": {
+ "_out_ferc1__yearly_plants_utilities": {
"description": "Denormalized table that contains FERC plant and utility information.",
"schema": {
"fields": [
@@ -840,7 +840,7 @@
"etl_group": "outputs",
"sources": ["ferc1"],
},
- "denorm_balance_sheet_assets_ferc1": {
+ "out_ferc1__yearly_balance_sheet_assets": {
"description": "Denormalized table that contains FERC balance sheet asset information.",
"schema": {
"fields": [
@@ -866,7 +866,7 @@
"etl_group": "outputs",
"sources": ["ferc1"],
},
- "denorm_balance_sheet_liabilities_ferc1": {
+ "out_ferc1__yearly_balance_sheet_liabilities": {
"description": "Denormalized table that contains FERC balance sheet liability information.",
"schema": {
"fields": [
@@ -892,7 +892,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_cash_flow_ferc1": {
+ "out_ferc1__yearly_cash_flow": {
"description": "Denormalized table that contains FERC cash flow information.",
"schema": {
"fields": [
@@ -916,7 +916,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_depreciation_amortization_summary_ferc1": {
+ "out_ferc1__yearly_depreciation_amortization_summary": {
"description": "Denormalized table that contains FERC depreciation amortization information.",
"schema": {
"fields": [
@@ -941,7 +941,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electric_energy_dispositions_ferc1": {
+ "out_ferc1__yearly_electric_energy_dispositions": {
"description": "Denormalized table that contains FERC electric energy dispositions information.",
"schema": {
"fields": [
@@ -964,7 +964,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electric_energy_sources_ferc1": {
+ "out_ferc1__yearly_electric_energy_sources": {
"description": "Denormalized table that contains FERC electric energy sources information.",
"schema": {
"fields": [
@@ -987,7 +987,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electric_operating_expenses_ferc1": {
+ "out_ferc1__yearly_electric_operating_expenses": {
"description": "Denormalized table that contains FERC electric operating expense information.",
"schema": {
"fields": [
@@ -1007,7 +1007,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electric_operating_revenues_ferc1": {
+ "out_ferc1__yearly_electric_operating_revenues": {
"description": "Denormalized table that contains FERC electric operating revenue information.",
"schema": {
"fields": [
@@ -1033,7 +1033,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electric_plant_depreciation_changes_ferc1": {
+ "out_ferc1__yearly_electric_plant_depreciation_changes": {
"description": "Denormalized table that contains FERC electric plant depreciation changes information.",
"schema": {
"fields": [
@@ -1062,7 +1062,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electric_plant_depreciation_functional_ferc1": {
+ "out_ferc1__yearly_electric_plant_depreciation_functional": {
"description": "Denormalized table that contains FERC electric plant depreciation functional information.",
"schema": {
"fields": [
@@ -1091,7 +1091,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_electricity_sales_by_rate_schedule_ferc1": {
+ "out_ferc1__yearly_electricity_sales_by_rate_schedule": {
"description": "Denormalized table that contains FERC electricity sales by rate schedule information.",
"schema": {
"fields": [
@@ -1114,7 +1114,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_income_statement_ferc1": {
+ "out_ferc1__yearly_income_statement": {
"description": "Denormalized table that contains FERC income statement information.",
"schema": {
"fields": [
@@ -1141,7 +1141,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_other_regulatory_liabilities_ferc1": {
+ "out_ferc1__yearly_other_regulatory_liabilities": {
"description": "Denormalized table that contains FERC other regulatory liabilities information.",
"schema": {
"fields": [
@@ -1161,7 +1161,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_retained_earnings_ferc1": {
+ "out_ferc1__yearly_retained_earnings": {
"description": "Denormalized table that contains FERC retained earnings information.",
"schema": {
"fields": [
@@ -1187,7 +1187,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_transmission_statistics_ferc1": {
+ "out_ferc1__yearly_transmission_statistics": {
"description": "Denormalized table that contains FERC transmission statistics information.",
"schema": {
"fields": [
@@ -1218,7 +1218,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_utility_plant_summary_ferc1": {
+ "out_ferc1__yearly_utility_plant_summary": {
"description": "Denormalized table that contains FERC utility plant summary information.",
"schema": {
"fields": [
@@ -1244,7 +1244,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_plants_steam_ferc1": {
+ "_out_ferc1__yearly_steam_plants": {
"description": "Denormalized table that contains steam plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1312,7 +1312,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_plants_small_ferc1": {
+ "_out_ferc1__yearly_small_plants": {
"description": "Denormalized table that contains small plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1347,7 +1347,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_plants_hydro_ferc1": {
+ "_out_ferc1__yearly_hydro_plants": {
"description": "Denormalized table that contains small plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1402,7 +1402,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_plants_pumped_storage_ferc1": {
+ "_out_ferc1__yearly_pumped_storage_plants": {
"description": "Denormalized table that contains pumped storage plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1461,7 +1461,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_fuel_ferc1": {
+ "out_ferc1__yearly_fuel": {
"description": "Denormalized table that contains fuel information from FERC Form 1.",
"schema": {
"fields": [
@@ -1490,7 +1490,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_purchased_power_ferc1": {
+ "out_ferc1__yearly_purchased_power": {
"description": "Denormalized table of FERC Form 1 Purchased Power data.",
"schema": {
"fields": [
@@ -1518,7 +1518,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_plant_in_service_ferc1": {
+ "out_ferc1__yearly_plant_in_service": {
"description": "Denormalized table of FERC Form 1 Electric Plant in Service data.",
"schema": {
"fields": [
@@ -1543,7 +1543,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_plants_all_ferc1": {
+ "out_ferc1__yearly_all_plants": {
"description": "Denormalized table combining the steam, small generators, hydro, and pumped storage tables from FERC Form 1.",
"schema": {
"fields": [
@@ -1632,7 +1632,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "denorm_fuel_by_plant_ferc1": {
+ "out_ferc1__yearly_fuel_by_plant": {
"description": "A table summarizing FERC fuel data by plant, using FERC Form 1 data.",
"schema": {
"fields": [
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 57b4eb50d0..9709646f08 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -9,7 +9,7 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_utilities_ferc1(
+def _out_ferc1__yearly_plants_utilities(
plants_ferc1: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
@@ -18,8 +18,8 @@ def denorm_plants_utilities_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_steam_ferc1(
- denorm_plants_utilities_ferc1: pd.DataFrame,
+def _out_ferc1__yearly_steam_plants(
+ _out_ferc1__yearly_plants_utilities: pd.DataFrame,
core_ferc1__yearly_plants_steam: pd.DataFrame,
) -> pd.DataFrame:
"""Select and joins some useful fields from the FERC Form 1 steam table.
@@ -31,7 +31,7 @@ def denorm_plants_steam_ferc1(
``capacity_mw``)
Args:
- denorm_plants_utilities_ferc1: Denormalized dataframe of FERC Form 1 plants and
+ _out_ferc1__yearly_plants_utilities: Denormalized dataframe of FERC Form 1 plants and
utilities data.
core_ferc1__yearly_plants_steam: The normalized FERC Form 1 steam table.
@@ -40,7 +40,7 @@ def denorm_plants_steam_ferc1(
"""
steam_df = (
core_ferc1__yearly_plants_steam.merge(
- denorm_plants_utilities_ferc1,
+ _out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
)
@@ -73,14 +73,14 @@ def denorm_plants_steam_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_small_ferc1(
+def _out_ferc1__yearly_small_plants(
core_ferc1__yearly_plants_small: pd.DataFrame,
- denorm_plants_utilities_ferc1: pd.DataFrame,
+ _out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 small plants."""
plants_small_df = (
core_ferc1__yearly_plants_small.merge(
- denorm_plants_utilities_ferc1,
+ _out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
)
@@ -110,14 +110,14 @@ def denorm_plants_small_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_hydro_ferc1(
+def _out_ferc1__yearly_hydro_plants(
core_ferc1__yearly_plants_hydro: pd.DataFrame,
- denorm_plants_utilities_ferc1: pd.DataFrame,
+ _out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 hydro plants."""
plants_hydro_df = (
core_ferc1__yearly_plants_hydro.merge(
- denorm_plants_utilities_ferc1,
+ _out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
)
@@ -141,14 +141,14 @@ def denorm_plants_hydro_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_pumped_storage_ferc1(
+def _out_ferc1__yearly_pumped_storage_plants(
core_ferc1__yearly_plants_pumped_storage: pd.DataFrame,
- denorm_plants_utilities_ferc1: pd.DataFrame,
+ _out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Pumped Storage plant data."""
pumped_storage_df = (
core_ferc1__yearly_plants_pumped_storage.merge(
- denorm_plants_utilities_ferc1,
+ _out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
)
@@ -172,8 +172,9 @@ def denorm_plants_pumped_storage_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_fuel_ferc1(
- core_ferc1__yearly_fuel: pd.DataFrame, denorm_plants_utilities_ferc1: pd.DataFrame
+def out_ferc1__yearly_fuel(
+ core_ferc1__yearly_fuel: pd.DataFrame,
+ _out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to FERC Form 1 fuel information.
@@ -200,7 +201,7 @@ def denorm_fuel_ferc1(
* x["fuel_cost_per_unit_burned"],
)
.merge(
- denorm_plants_utilities_ferc1,
+ _out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
)
.pipe(
@@ -219,7 +220,7 @@ def denorm_fuel_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_purchased_power_ferc1(
+def out_ferc1__yearly_purchased_power(
core_ferc1__yearly_purchased_power: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
@@ -240,7 +241,7 @@ def denorm_purchased_power_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plant_in_service_ferc1(
+def out_ferc1__yearly_plant_in_service(
core_ferc1__yearly_plant_in_service: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Electric Plant in Service data."""
@@ -260,34 +261,36 @@ def denorm_plant_in_service_ferc1(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_balance_sheet_assets_ferc1(
+def out_ferc1__yearly_balance_sheet_assets(
core_ferc1__yearly_balance_sheet_assets: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance sheet assets data."""
- denorm_balance_sheet_assets_ferc1 = core_ferc1__yearly_balance_sheet_assets.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "asset_type",
- ],
+ out_ferc1__yearly_balance_sheet_assets = (
+ core_ferc1__yearly_balance_sheet_assets.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "asset_type",
+ ],
+ )
)
- return denorm_balance_sheet_assets_ferc1
+ return out_ferc1__yearly_balance_sheet_assets
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_balance_sheet_liabilities_ferc1(
+def out_ferc1__yearly_balance_sheet_liabilities(
core_ferc1__yearly_balance_sheet_liabilities: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance_sheet liabilities data."""
- denorm_balance_sheet_liabilities_ferc1 = (
+ out_ferc1__yearly_balance_sheet_liabilities = (
core_ferc1__yearly_balance_sheet_liabilities.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -302,15 +305,15 @@ def denorm_balance_sheet_liabilities_ferc1(
],
)
)
- return denorm_balance_sheet_liabilities_ferc1
+ return out_ferc1__yearly_balance_sheet_liabilities
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_cash_flow_ferc1(
+def out_ferc1__yearly_cash_flow(
core_ferc1__yearly_cash_flow: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 cash flow data."""
- denorm_cash_flow_ferc1 = core_ferc1__yearly_cash_flow.merge(
+ out_ferc1__yearly_cash_flow = core_ferc1__yearly_cash_flow.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -323,16 +326,16 @@ def denorm_cash_flow_ferc1(
"amount_type",
],
)
- return denorm_cash_flow_ferc1
+ return out_ferc1__yearly_cash_flow
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_depreciation_amortization_summary_ferc1(
+def out_ferc1__yearly_depreciation_amortization_summary(
core_ferc1__yearly_depreciation_amortization_summary: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 depreciation amortization data."""
- denorm_depreciation_amortization_summary_ferc1 = (
+ out_ferc1__yearly_depreciation_amortization_summary = (
core_ferc1__yearly_depreciation_amortization_summary.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -348,16 +351,16 @@ def denorm_depreciation_amortization_summary_ferc1(
],
)
)
- return denorm_depreciation_amortization_summary_ferc1
+ return out_ferc1__yearly_depreciation_amortization_summary
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electric_energy_dispositions_ferc1(
+def out_ferc1__yearly_electric_energy_dispositions(
core_ferc1__yearly_electric_energy_dispositions: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 energy dispositions data."""
- denorm_electric_energy_dispositions_ferc1 = (
+ out_ferc1__yearly_electric_energy_dispositions = (
core_ferc1__yearly_electric_energy_dispositions.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -372,16 +375,16 @@ def denorm_electric_energy_dispositions_ferc1(
],
)
)
- return denorm_electric_energy_dispositions_ferc1
+ return out_ferc1__yearly_electric_energy_dispositions
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electric_energy_sources_ferc1(
+def out_ferc1__yearly_electric_energy_sources(
core_ferc1__yearly_electric_energy_sources: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_energy_sources_ferc1 = (
+ out_ferc1__yearly_electric_energy_sources = (
core_ferc1__yearly_electric_energy_sources.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -396,16 +399,16 @@ def denorm_electric_energy_sources_ferc1(
],
)
)
- return denorm_electric_energy_sources_ferc1
+ return out_ferc1__yearly_electric_energy_sources
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electric_operating_expenses_ferc1(
+def out_ferc1__yearly_electric_operating_expenses(
core_ferc1__yearly_electric_operating_expenses: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_operating_expenses_ferc1 = (
+ out_ferc1__yearly_electric_operating_expenses = (
core_ferc1__yearly_electric_operating_expenses.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -420,16 +423,16 @@ def denorm_electric_operating_expenses_ferc1(
],
)
)
- return denorm_electric_operating_expenses_ferc1
+ return out_ferc1__yearly_electric_operating_expenses
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electric_operating_revenues_ferc1(
+def out_ferc1__yearly_electric_operating_revenues(
core_ferc1__yearly_electric_operating_revenues: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_operating_revenues_ferc1 = (
+ out_ferc1__yearly_electric_operating_revenues = (
core_ferc1__yearly_electric_operating_revenues.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -444,16 +447,16 @@ def denorm_electric_operating_revenues_ferc1(
],
)
)
- return denorm_electric_operating_revenues_ferc1
+ return out_ferc1__yearly_electric_operating_revenues
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electric_plant_depreciation_changes_ferc1(
+def out_ferc1__yearly_electric_plant_depreciation_changes(
core_ferc1__yearly_electric_plant_depreciation_changes: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_plant_depreciation_changes_ferc1 = (
+ out_ferc1__yearly_electric_plant_depreciation_changes = (
core_ferc1__yearly_electric_plant_depreciation_changes.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -470,16 +473,16 @@ def denorm_electric_plant_depreciation_changes_ferc1(
],
)
)
- return denorm_electric_plant_depreciation_changes_ferc1
+ return out_ferc1__yearly_electric_plant_depreciation_changes
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electric_plant_depreciation_functional_ferc1(
+def out_ferc1__yearly_electric_plant_depreciation_functional(
core_ferc1__yearly_electric_plant_depreciation_functional: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electric_plant_depreciation_functional_ferc1 = (
+ out_ferc1__yearly_electric_plant_depreciation_functional = (
core_ferc1__yearly_electric_plant_depreciation_functional.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -496,16 +499,16 @@ def denorm_electric_plant_depreciation_functional_ferc1(
],
)
)
- return denorm_electric_plant_depreciation_functional_ferc1
+ return out_ferc1__yearly_electric_plant_depreciation_functional
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_electricity_sales_by_rate_schedule_ferc1(
+def out_ferc1__yearly_electricity_sales_by_rate_schedule(
core_ferc1__yearly_electricity_sales_by_rate_schedule: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_electricity_sales_by_rate_schedule_ferc1 = (
+ out_ferc1__yearly_electricity_sales_by_rate_schedule = (
core_ferc1__yearly_electricity_sales_by_rate_schedule.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -519,15 +522,15 @@ def denorm_electricity_sales_by_rate_schedule_ferc1(
],
)
)
- return denorm_electricity_sales_by_rate_schedule_ferc1
+ return out_ferc1__yearly_electricity_sales_by_rate_schedule
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_income_statement_ferc1(
+def out_ferc1__yearly_income_statement(
core_ferc1__yearly_income_statement: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_income_statement_ferc1 = core_ferc1__yearly_income_statement.merge(
+ out_ferc1__yearly_income_statement = core_ferc1__yearly_income_statement.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -541,16 +544,16 @@ def denorm_income_statement_ferc1(
"income_type",
],
)
- return denorm_income_statement_ferc1
+ return out_ferc1__yearly_income_statement
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_other_regulatory_liabilities_ferc1(
+def out_ferc1__yearly_other_regulatory_liabilities(
core_ferc1__yearly_other_regulatory_liabilities: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_other_regulatory_liabilities_ferc1 = (
+ out_ferc1__yearly_other_regulatory_liabilities = (
core_ferc1__yearly_other_regulatory_liabilities.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -563,15 +566,15 @@ def denorm_other_regulatory_liabilities_ferc1(
],
)
)
- return denorm_other_regulatory_liabilities_ferc1
+ return out_ferc1__yearly_other_regulatory_liabilities
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_retained_earnings_ferc1(
+def out_ferc1__yearly_retained_earnings(
core_ferc1__yearly_retained_earnings: pd.DataFrame, utilities_ferc1: pd.DataFrame
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_retained_earnings_ferc1 = core_ferc1__yearly_retained_earnings.merge(
+ out_ferc1__yearly_retained_earnings = core_ferc1__yearly_retained_earnings.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -584,16 +587,16 @@ def denorm_retained_earnings_ferc1(
"earnings_type",
],
)
- return denorm_retained_earnings_ferc1
+ return out_ferc1__yearly_retained_earnings
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_transmission_statistics_ferc1(
+def out_ferc1__yearly_transmission_statistics(
core_ferc1__yearly_transmission_statistics: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_transmission_statistics_ferc1 = (
+ out_ferc1__yearly_transmission_statistics = (
core_ferc1__yearly_transmission_statistics.merge(
utilities_ferc1, on="utility_id_ferc1"
).pipe(
@@ -606,38 +609,40 @@ def denorm_transmission_statistics_ferc1(
],
)
)
- return denorm_transmission_statistics_ferc1
+ return out_ferc1__yearly_transmission_statistics
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_utility_plant_summary_ferc1(
+def out_ferc1__yearly_utility_plant_summary(
core_ferc1__yearly_utility_plant_summary: pd.DataFrame,
utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- denorm_utility_plant_summary_ferc1 = core_ferc1__yearly_utility_plant_summary.merge(
- utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "utility_type",
- "utility_plant_asset_type",
- ],
+ out_ferc1__yearly_utility_plant_summary = (
+ core_ferc1__yearly_utility_plant_summary.merge(
+ utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "utility_type",
+ "utility_plant_asset_type",
+ ],
+ )
)
- return denorm_utility_plant_summary_ferc1
+ return out_ferc1__yearly_utility_plant_summary
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_all_ferc1(
- denorm_plants_steam_ferc1: pd.DataFrame,
- denorm_plants_small_ferc1: pd.DataFrame,
- denorm_plants_hydro_ferc1: pd.DataFrame,
- denorm_plants_pumped_storage_ferc1: pd.DataFrame,
+def out_ferc1__yearly_all_plants(
+ _out_ferc1__yearly_steam_plants: pd.DataFrame,
+ _out_ferc1__yearly_small_plants: pd.DataFrame,
+ _out_ferc1__yearly_hydro_plants: pd.DataFrame,
+ _out_ferc1__yearly_pumped_storage_plants: pd.DataFrame,
) -> pd.DataFrame:
"""Combine the steam, small generators, hydro, and pumped storage tables.
@@ -649,21 +654,23 @@ def denorm_plants_all_ferc1(
"""
# Prep steam table
logger.debug("prepping steam table")
- steam_df = denorm_plants_steam_ferc1.rename(columns={"opex_plants": "opex_plant"})
+ steam_df = _out_ferc1__yearly_steam_plants.rename(
+ columns={"opex_plants": "opex_plant"}
+ )
# Prep hydro tables (Add this to the meta data later)
logger.debug("prepping hydro tables")
- hydro_df = denorm_plants_hydro_ferc1.rename(
+ hydro_df = _out_ferc1__yearly_hydro_plants.rename(
columns={"project_num": "ferc_license_id"}
)
- pump_df = denorm_plants_pumped_storage_ferc1.rename(
+ pump_df = _out_ferc1__yearly_pumped_storage_plants.rename(
columns={"project_num": "ferc_license_id"}
)
# Combine all the tables together
logger.debug("combining all tables")
all_df = (
- pd.concat([steam_df, denorm_plants_small_ferc1, hydro_df, pump_df])
+ pd.concat([steam_df, _out_ferc1__yearly_small_plants, hydro_df, pump_df])
.rename(
columns={
"fuel_cost": "total_fuel_cost",
@@ -693,10 +700,10 @@ def denorm_plants_all_ferc1(
},
compute_kind="Python",
)
-def denorm_fuel_by_plant_ferc1(
+def out_ferc1__yearly_fuel_by_plant(
context,
core_ferc1__yearly_fuel: pd.DataFrame,
- denorm_plants_utilities_ferc1: pd.DataFrame,
+ _out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Summarize FERC fuel data by plant for output.
@@ -709,7 +716,7 @@ def denorm_fuel_by_plant_ferc1(
Args:
context: Dagster context object
core_ferc1__yearly_fuel: Normalized FERC fuel table.
- denorm_plants_utilities_ferc1: Denormalized table of FERC1 plant & utility IDs.
+ _out_ferc1__yearly_plants_utilities: Denormalized table of FERC1 plant & utility IDs.
Returns:
A DataFrame with fuel use summarized by plant.
@@ -747,7 +754,8 @@ def drop_other_fuel_types(df):
.pipe(pudl.analysis.classify_plants_ferc1.revert_filled_in_float_nulls)
.pipe(pudl.analysis.classify_plants_ferc1.revert_filled_in_string_nulls)
.merge(
- denorm_plants_utilities_ferc1, on=["utility_id_ferc1", "plant_name_ferc1"]
+ _out_ferc1__yearly_plants_utilities,
+ on=["utility_id_ferc1", "plant_name_ferc1"],
)
.pipe(
pudl.helpers.organize_cols,
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 12e6428b54..40c5bdf518 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -133,32 +133,32 @@ def _register_output_methods(self: Self):
# PudlTabl will generate a method to read each table from the DB with the given method name
table_method_map_any_freq = { # table_name: method_name
# denorm_ferc1
- "denorm_balance_sheet_assets_ferc1": "denorm_balance_sheet_assets_ferc1",
- "denorm_balance_sheet_liabilities_ferc1": "denorm_balance_sheet_liabilities_ferc1",
- "denorm_cash_flow_ferc1": "denorm_cash_flow_ferc1",
- "denorm_depreciation_amortization_summary_ferc1": "denorm_depreciation_amortization_summary_ferc1",
- "denorm_electric_energy_dispositions_ferc1": "denorm_electric_energy_dispositions_ferc1",
- "denorm_electric_energy_sources_ferc1": "denorm_electric_energy_sources_ferc1",
- "denorm_electric_operating_expenses_ferc1": "denorm_electric_operating_expenses_ferc1",
- "denorm_electric_operating_revenues_ferc1": "denorm_electric_operating_revenues_ferc1",
- "denorm_electric_plant_depreciation_changes_ferc1": "denorm_electric_plant_depreciation_changes_ferc1",
- "denorm_electric_plant_depreciation_functional_ferc1": "denorm_electric_plant_depreciation_functional_ferc1",
- "denorm_electricity_sales_by_rate_schedule_ferc1": "denorm_electricity_sales_by_rate_schedule_ferc1",
- "denorm_income_statement_ferc1": "denorm_income_statement_ferc1",
- "denorm_other_regulatory_liabilities_ferc1": "denorm_other_regulatory_liabilities_ferc1",
- "denorm_retained_earnings_ferc1": "denorm_retained_earnings_ferc1",
- "denorm_transmission_statistics_ferc1": "denorm_transmission_statistics_ferc1",
- "denorm_utility_plant_summary_ferc1": "denorm_utility_plant_summary_ferc1",
- "denorm_plants_utilities_ferc1": "pu_ferc1",
- "denorm_plants_steam_ferc1": "plants_steam_ferc1",
- "denorm_fuel_ferc1": "fuel_ferc1",
- "denorm_fuel_by_plant_ferc1": "fbp_ferc1",
- "denorm_plants_small_ferc1": "plants_small_ferc1",
- "denorm_plants_hydro_ferc1": "plants_hydro_ferc1",
- "denorm_plants_pumped_storage_ferc1": "plants_pumped_storage_ferc1",
- "denorm_purchased_power_ferc1": "purchased_power_ferc1",
- "denorm_plant_in_service_ferc1": "plant_in_service_ferc1",
- "denorm_plants_all_ferc1": "plants_all_ferc1",
+ "out_ferc1__yearly_balance_sheet_assets": "denorm_balance_sheet_assets_ferc1",
+ "out_ferc1__yearly_balance_sheet_liabilities": "denorm_balance_sheet_liabilities_ferc1",
+ "out_ferc1__yearly_cash_flow": "denorm_cash_flow_ferc1",
+ "out_ferc1__yearly_depreciation_amortization_summary": "denorm_depreciation_amortization_summary_ferc1",
+ "out_ferc1__yearly_electric_energy_dispositions": "denorm_electric_energy_dispositions_ferc1",
+ "out_ferc1__yearly_electric_energy_sources": "denorm_electric_energy_sources_ferc1",
+ "out_ferc1__yearly_electric_operating_expenses": "denorm_electric_operating_expenses_ferc1",
+ "out_ferc1__yearly_electric_operating_revenues": "denorm_electric_operating_revenues_ferc1",
+ "out_ferc1__yearly_electric_plant_depreciation_changes": "denorm_electric_plant_depreciation_changes_ferc1",
+ "out_ferc1__yearly_electric_plant_depreciation_functional": "denorm_electric_plant_depreciation_functional_ferc1",
+ "out_ferc1__yearly_electricity_sales_by_rate_schedule": "denorm_electricity_sales_by_rate_schedule_ferc1",
+ "out_ferc1__yearly_income_statement": "denorm_income_statement_ferc1",
+ "out_ferc1__yearly_other_regulatory_liabilities": "denorm_other_regulatory_liabilities_ferc1",
+ "out_ferc1__yearly_retained_earnings": "denorm_retained_earnings_ferc1",
+ "out_ferc1__yearly_transmission_statistics": "denorm_transmission_statistics_ferc1",
+ "out_ferc1__yearly_utility_plant_summary": "denorm_utility_plant_summary_ferc1",
+ "_out_ferc1__yearly_plants_utilities": "pu_ferc1",
+ "_out_ferc1__yearly_steam_plants": "plants_steam_ferc1",
+ "out_ferc1__yearly_fuel": "fuel_ferc1",
+ "out_ferc1__yearly_fuel_by_plant": "fbp_ferc1",
+ "_out_ferc1__yearly_small_plants": "plants_small_ferc1",
+ "_out_ferc1__yearly_hydro_plants": "plants_hydro_ferc1",
+ "_out_ferc1__yearly_pumped_storage_plants": "plants_pumped_storage_ferc1",
+ "out_ferc1__yearly_purchased_power": "purchased_power_ferc1",
+ "out_ferc1__yearly_plant_in_service": "plant_in_service_ferc1",
+ "out_ferc1__yearly_all_plants": "plants_all_ferc1",
# denorm_eia (data comes from multiple EIA forms)
"denorm_plants_eia": "plants_eia860",
"denorm_utilities_eia": "utils_eia860",
diff --git a/test/validate/fuel_ferc1_test.py b/test/validate/fuel_ferc1_test.py
index 9644ba98be..4135eff948 100644
--- a/test/validate/fuel_ferc1_test.py
+++ b/test/validate/fuel_ferc1_test.py
@@ -16,7 +16,7 @@
def test_fuel_ferc1_trivial(pudl_out_ferc1):
"""Test output routines for tables from FERC Form 1."""
logger.info("Compiling FERC Form 1 fuel table...")
- fuel_tab = pd.read_sql("denorm_fuel_ferc1", pudl_out_ferc1.pudl_engine)
+ fuel_tab = pd.read_sql("out_ferc1__yearly_fuel", pudl_out_ferc1.pudl_engine)
assert len(fuel_tab) > 0, "FERC Form 1 fuel table is empty."
logger.info(f"{len(fuel_tab)} fuel records found")
@@ -55,7 +55,7 @@ def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
pytest.skip("Data validation only works with a live PUDL DB.")
for case in cases:
pv.vs_bounds(
- pd.read_sql("denorm_fuel_ferc1", pudl_out_ferc1.pudl_engine), **case
+ pd.read_sql("out_ferc1__yearly_fuel", pudl_out_ferc1.pudl_engine), **case
)
@@ -64,4 +64,6 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
for args in pv.fuel_ferc1_self:
- pv.vs_self(pd.read_sql("denorm_fuel_ferc1", pudl_out_ferc1.pudl_engine), **args)
+ pv.vs_self(
+ pd.read_sql("out_ferc1__yearly_fuel", pudl_out_ferc1.pudl_engine), **args
+ )
diff --git a/test/validate/plants_steam_ferc1_test.py b/test/validate/plants_steam_ferc1_test.py
index 17a04b5eca..9f31bdd619 100644
--- a/test/validate/plants_steam_ferc1_test.py
+++ b/test/validate/plants_steam_ferc1_test.py
@@ -34,7 +34,7 @@ def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
validate_df = pd.read_sql(
- "denorm_plants_steam_ferc1", pudl_out_ferc1.pudl_engine
+ "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
).assign(
water_limited_ratio=lambda x: x.water_limited_capacity_mw / x.capacity_mw,
not_water_limited_ratio=lambda x: x.not_water_limited_capacity_mw
@@ -51,7 +51,7 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
validate_df = pd.read_sql(
- "denorm_plants_steam_ferc1", pudl_out_ferc1.pudl_engine
+ "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
).assign(
water_limited_ratio=lambda x: x.water_limited_capacity_mw / x.capacity_mw,
not_water_limited_ratio=lambda x: x.not_water_limited_capacity_mw
@@ -71,7 +71,9 @@ def test_dupe_years_in_plant_id_ferc1(pudl_out_ferc1):
more than one record from a given year. Fail the test if we find such cases
(which... we do, as of writing).
"""
- steam_df = pd.read_sql("denorm_plants_steam_ferc1", pudl_out_ferc1.pudl_engine)
+ steam_df = pd.read_sql(
+ "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
+ )
year_dupes = (
steam_df.groupby(["plant_id_ferc1", "report_year"])["utility_id_ferc1"]
.count()
@@ -99,7 +101,9 @@ def test_plant_id_clash(pudl_out_ferc1):
only ever appear within a single PUDL Plant ID. Test this assertion and fail if it
is untrue (as... we know it is right now).
"""
- steam_df = pd.read_sql("denorm_plants_steam_ferc1", pudl_out_ferc1.pudl_engine)
+ steam_df = pd.read_sql(
+ "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
+ )
bad_plant_ids_ferc1 = (
steam_df[["plant_id_pudl", "plant_id_ferc1"]]
.drop_duplicates()
From 2ee75b2badb2ddf0bf928c86b89396f7bd87d251 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 13 Sep 2023 18:59:29 -0400
Subject: [PATCH 11/70] Rename denorm_cash_flow_ferc1 and remove leading
underscore from cross refs in pudl_db docs
---
docs/templates/package.rst.jinja | 2 +-
src/pudl/output/ferc1.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/templates/package.rst.jinja b/docs/templates/package.rst.jinja
index 7a450b53cb..48bd4854a9 100644
--- a/docs/templates/package.rst.jinja
+++ b/docs/templates/package.rst.jinja
@@ -7,7 +7,7 @@ Please note that tables beginning with "denorm" are temporary tables whose names
metadata will shortly change, as we migrate new tables into our database.
{% for resource in package.resources %}
-.. _{{ resource.name }}:
+.. _{{ resource.name.lstrip("_") }}:
{% include 'resource.rst.jinja' %}
{% endfor %}
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 6e7af8bae5..50da7d84cf 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -315,7 +315,7 @@ def out_ferc1__yearly_balance_sheet_liabilities(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_cash_flow_ferc1(
+def out_ferc1__yearly_cash_flow(
core_ferc1__yearly_cash_flow: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
From ada8b012e1035f271d95f1691b05060701c64333 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 14 Sep 2023 10:21:26 -0400
Subject: [PATCH 12/70] Rename a missing ferc output table and add migration
---
...660af87f81c5_rename_ferc1_output_assets.py | 1331 +++++++++++++++++
src/pudl/output/ferc1.py | 2 +-
2 files changed, 1332 insertions(+), 1 deletion(-)
create mode 100644 migrations/versions/660af87f81c5_rename_ferc1_output_assets.py
diff --git a/migrations/versions/660af87f81c5_rename_ferc1_output_assets.py b/migrations/versions/660af87f81c5_rename_ferc1_output_assets.py
new file mode 100644
index 0000000000..4efd02354d
--- /dev/null
+++ b/migrations/versions/660af87f81c5_rename_ferc1_output_assets.py
@@ -0,0 +1,1331 @@
+"""Rename ferc1 output assets
+
+Revision ID: 660af87f81c5
+Revises: 947f3413295c
+Create Date: 2023-09-13 16:23:27.596939
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '660af87f81c5'
+down_revision = '947f3413295c'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_ferc1__yearly_balance_sheet_assets',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_liabilities',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities'))
+ )
+ op.create_table('out_ferc1__yearly_cash_flow',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flow'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_amortization_summary',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_amortization_summary'))
+ )
+ op.create_table('out_ferc1__yearly_electric_energy_dispositions',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_electric_energy_dispositions'))
+ )
+ op.create_table('out_ferc1__yearly_electric_energy_sources',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_electric_energy_sources'))
+ )
+ op.create_table('out_ferc1__yearly_electric_operating_expenses',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_electric_operating_expenses'))
+ )
+ op.create_table('out_ferc1__yearly_electric_operating_revenues',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_electric_operating_revenues'))
+ )
+ op.create_table('out_ferc1__yearly_electric_plant_depreciation_changes',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_changes'))
+ )
+ op.create_table('out_ferc1__yearly_electric_plant_depreciation_functional',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_functional'))
+ )
+ op.create_table('out_ferc1__yearly_electricity_sales_by_rate_schedule',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_income_statement',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statement'))
+ )
+ op.create_table('out_ferc1__yearly_other_regulatory_liabilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_plant_in_service',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service'))
+ )
+ op.create_table('out_ferc1__yearly_purchased_power',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_retained_earnings',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings'))
+ )
+ op.create_table('out_ferc1__yearly_transmission_statistics',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_pudl_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_utility_plant_summary',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_ferc1_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary'))
+ )
+ op.create_table('_out_ferc1__yearly_hydro_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydro_plants'))
+ )
+ op.create_table('_out_ferc1__yearly_plants_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
+ )
+ op.create_table('_out_ferc1__yearly_pumped_storage_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants'))
+ )
+ op.create_table('_out_ferc1__yearly_small_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants'))
+ )
+ op.create_table('_out_ferc1__yearly_steam_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants'))
+ )
+ op.create_table('out_ferc1__yearly_all_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
+ )
+ op.create_table('out_ferc1__yearly_fuel',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_fuel'))
+ )
+ op.create_table('out_ferc1__yearly_fuel_by_plant',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
+ sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
+ sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
+ sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
+ sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
+ sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
+ sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
+ sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
+ sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
+ sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
+ sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_plant_id_pudl_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_ferc1_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_pudl_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_fuel_by_plant'))
+ )
+ op.drop_table('denorm_electric_energy_dispositions_ferc1')
+ op.drop_table('denorm_plants_all_ferc1')
+ op.drop_table('denorm_electric_operating_expenses_ferc1')
+ op.drop_table('denorm_electric_plant_depreciation_functional_ferc1')
+ op.drop_table('denorm_income_statement_ferc1')
+ op.drop_table('denorm_electric_plant_depreciation_changes_ferc1')
+ op.drop_table('denorm_plant_in_service_ferc1')
+ op.drop_table('denorm_plants_steam_ferc1')
+ op.drop_table('denorm_depreciation_amortization_summary_ferc1')
+ op.drop_table('denorm_utility_plant_summary_ferc1')
+ op.drop_table('denorm_other_regulatory_liabilities_ferc1')
+ op.drop_table('denorm_balance_sheet_liabilities_ferc1')
+ op.drop_table('denorm_purchased_power_ferc1')
+ op.drop_table('denorm_plants_pumped_storage_ferc1')
+ op.drop_table('denorm_plants_small_ferc1')
+ op.drop_table('denorm_plants_hydro_ferc1')
+ op.drop_table('denorm_fuel_by_plant_ferc1')
+ op.drop_table('denorm_cash_flow_ferc1')
+ op.drop_table('denorm_balance_sheet_assets_ferc1')
+ op.drop_table('denorm_transmission_statistics_ferc1')
+ op.drop_table('denorm_plants_utilities_ferc1')
+ op.drop_table('denorm_fuel_ferc1')
+ op.drop_table('denorm_electric_energy_sources_ferc1')
+ op.drop_table('denorm_electric_operating_revenues_ferc1')
+ op.drop_table('denorm_retained_earnings_ferc1')
+ op.drop_table('denorm_electricity_sales_by_rate_schedule_ferc1')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('rate_schedule_type', sa.TEXT(), nullable=True),
+ sa.Column('billing_status', sa.TEXT(), nullable=True),
+ sa.Column('rate_schedule_description', sa.TEXT(), nullable=True),
+ sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
+ sa.Column('kwh_per_customer', sa.FLOAT(), nullable=True),
+ sa.Column('revenue_per_kwh', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_utilities_pudl')
+ )
+ op.create_table('denorm_retained_earnings_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('earnings_type', sa.TEXT(), nullable=False),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_retained_earnings_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_retained_earnings_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name='pk_denorm_retained_earnings_ferc1')
+ )
+ op.create_table('denorm_electric_operating_revenues_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('revenue_type', sa.TEXT(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name='pk_denorm_electric_operating_revenues_ferc1')
+ )
+ op.create_table('denorm_electric_energy_sources_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('energy_source_type', sa.TEXT(), nullable=False),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name='pk_denorm_electric_energy_sources_ferc1')
+ )
+ op.create_table('denorm_fuel_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_total_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_unit_burned', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_unit_delivered', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_units', sa.VARCHAR(length=6), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_fuel_ferc1')
+ )
+ op.create_table('denorm_plants_utilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_utilities_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name='pk_denorm_plants_utilities_ferc1')
+ )
+ op.create_table('denorm_transmission_statistics_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('start_point', sa.TEXT(), nullable=True),
+ sa.Column('end_point', sa.TEXT(), nullable=True),
+ sa.Column('operating_voltage_kv', sa.FLOAT(), nullable=True),
+ sa.Column('designed_voltage_kv', sa.FLOAT(), nullable=True),
+ sa.Column('supporting_structure_type', sa.TEXT(), nullable=True),
+ sa.Column('transmission_line_length_miles', sa.FLOAT(), nullable=True),
+ sa.Column('transmission_line_and_structures_length_miles', sa.FLOAT(), nullable=True),
+ sa.Column('num_transmission_circuits', sa.INTEGER(), nullable=True),
+ sa.Column('conductor_size_and_material', sa.TEXT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
+ sa.Column('capex_other', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_transmission_statistics_ferc1_utility_id_pudl_utilities_pudl')
+ )
+ op.create_table('denorm_balance_sheet_assets_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('asset_type', sa.TEXT(), nullable=False),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name='pk_denorm_balance_sheet_assets_ferc1')
+ )
+ op.create_table('denorm_cash_flow_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('amount_type', sa.TEXT(), nullable=False),
+ sa.Column('amount', sa.FLOAT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_cash_flow_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_cash_flow_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name='pk_denorm_cash_flow_ferc1')
+ )
+ op.create_table('denorm_fuel_by_plant_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=False),
+ sa.Column('coal_fraction_cost', sa.FLOAT(), nullable=True),
+ sa.Column('coal_fraction_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('gas_fraction_cost', sa.FLOAT(), nullable=True),
+ sa.Column('gas_fraction_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('nuclear_fraction_cost', sa.FLOAT(), nullable=True),
+ sa.Column('nuclear_fraction_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('oil_fraction_cost', sa.FLOAT(), nullable=True),
+ sa.Column('oil_fraction_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('primary_fuel_by_cost', sa.TEXT(), nullable=True),
+ sa.Column('primary_fuel_by_mmbtu', sa.TEXT(), nullable=True),
+ sa.Column('waste_fraction_cost', sa.FLOAT(), nullable=True),
+ sa.Column('waste_fraction_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name='pk_denorm_fuel_by_plant_ferc1')
+ )
+ op.create_table('denorm_plants_hydro_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
+ sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
+ sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
+ sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_roads', sa.FLOAT(), nullable=True),
+ sa.Column('capex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_dams', sa.FLOAT(), nullable=True),
+ sa.Column('opex_electric', sa.FLOAT(), nullable=True),
+ sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
+ sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
+ sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
+ sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_type', sa.TEXT(), nullable=True),
+ sa.Column('project_num', sa.INTEGER(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_hydro_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_hydro_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_hydro_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_hydro_ferc1')
+ )
+ op.create_table('denorm_plants_small_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type', sa.TEXT(), nullable=True),
+ sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
+ sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_type', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_small_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_small_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_small_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_small_ferc1')
+ )
+ op.create_table('denorm_plants_pumped_storage_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
+ sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
+ sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
+ sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_roads', sa.FLOAT(), nullable=True),
+ sa.Column('capex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
+ sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_dams', sa.FLOAT(), nullable=True),
+ sa.Column('opex_electric', sa.FLOAT(), nullable=True),
+ sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
+ sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
+ sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('project_num', sa.INTEGER(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_pumped_storage_ferc1')
+ )
+ op.create_table('denorm_purchased_power_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('seller_name', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('billing_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('delivered_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('demand_charges', sa.FLOAT(), nullable=True),
+ sa.Column('energy_charges', sa.FLOAT(), nullable=True),
+ sa.Column('non_coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('other_charges', sa.FLOAT(), nullable=True),
+ sa.Column('purchase_type_code', sa.TEXT(), nullable=True),
+ sa.Column('purchased_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('received_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('tariff', sa.TEXT(), nullable=True),
+ sa.Column('total_settlement', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name='fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_purchased_power_ferc1_utility_id_pudl_utilities_pudl')
+ )
+ op.create_table('denorm_balance_sheet_liabilities_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('liability_type', sa.TEXT(), nullable=False),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name='pk_denorm_balance_sheet_liabilities_ferc1')
+ )
+ op.create_table('denorm_other_regulatory_liabilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('description', sa.TEXT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
+ sa.Column('account_detail', sa.TEXT(), nullable=True),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_utilities_pudl')
+ )
+ op.create_table('denorm_utility_plant_summary_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('utility_type_other', sa.TEXT(), nullable=True),
+ sa.Column('utility_plant_asset_type', sa.TEXT(), nullable=False),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name='pk_denorm_utility_plant_summary_ferc1')
+ )
+ op.create_table('denorm_depreciation_amortization_summary_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_function', sa.TEXT(), nullable=False),
+ sa.Column('ferc_account_label', sa.TEXT(), nullable=False),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name='pk_denorm_depreciation_amortization_summary_ferc1')
+ )
+ op.create_table('denorm_plants_steam_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
+ sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_addition', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_addition_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_kw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mw_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mwh_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
+ sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wo_retirement_total', sa.FLOAT(), nullable=True),
+ sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('not_water_limited_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('opex_allowances', sa.FLOAT(), nullable=True),
+ sa.Column('opex_boiler', sa.FLOAT(), nullable=True),
+ sa.Column('opex_coolants', sa.FLOAT(), nullable=True),
+ sa.Column('opex_electric', sa.FLOAT(), nullable=True),
+ sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
+ sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_fuel_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_power', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_steam', sa.FLOAT(), nullable=True),
+ sa.Column('opex_nonfuel_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_plants', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_steam', sa.FLOAT(), nullable=True),
+ sa.Column('opex_steam_other', sa.FLOAT(), nullable=True),
+ sa.Column('opex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_transfer', sa.FLOAT(), nullable=True),
+ sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
+ sa.Column('plant_type', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_steam_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_steam_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_steam_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_steam_ferc1')
+ )
+ op.create_table('denorm_plant_in_service_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('additions', sa.FLOAT(), nullable=True),
+ sa.Column('adjustments', sa.FLOAT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account_label', sa.TEXT(), nullable=False),
+ sa.Column('retirements', sa.FLOAT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('transfers', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_plant_in_service_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plant_in_service_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name='pk_denorm_plant_in_service_ferc1')
+ )
+ op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('depreciation_type', sa.TEXT(), nullable=False),
+ sa.Column('plant_status', sa.TEXT(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_changes_ferc1')
+ )
+ op.create_table('denorm_income_statement_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('income_type', sa.TEXT(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_income_statement_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_income_statement_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name='pk_denorm_income_statement_ferc1')
+ )
+ op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('plant_function', sa.TEXT(), nullable=False),
+ sa.Column('plant_status', sa.TEXT(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_functional_ferc1')
+ )
+ op.create_table('denorm_electric_operating_expenses_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('expense_type', sa.TEXT(), nullable=False),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name='pk_denorm_electric_operating_expenses_ferc1')
+ )
+ op.create_table('denorm_plants_all_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
+ sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_addition', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_addition_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_kw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mw_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mwh_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
+ sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wo_retirement_total', sa.FLOAT(), nullable=True),
+ sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('not_water_limited_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('opex_allowances', sa.FLOAT(), nullable=True),
+ sa.Column('opex_boiler', sa.FLOAT(), nullable=True),
+ sa.Column('opex_coolants', sa.FLOAT(), nullable=True),
+ sa.Column('opex_electric', sa.FLOAT(), nullable=True),
+ sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
+ sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_power', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_steam', sa.FLOAT(), nullable=True),
+ sa.Column('opex_nonfuel_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_steam', sa.FLOAT(), nullable=True),
+ sa.Column('opex_steam_other', sa.FLOAT(), nullable=True),
+ sa.Column('opex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_transfer', sa.FLOAT(), nullable=True),
+ sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
+ sa.Column('plant_type', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type', sa.TEXT(), nullable=True),
+ sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
+ sa.Column('capex_roads', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('opex_dams', sa.FLOAT(), nullable=True),
+ sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
+ sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_license_id', sa.TEXT(), nullable=True),
+ sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
+ sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_all_ferc1_plant_id_pudl_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_all_ferc1_utility_id_ferc1_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_all_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_all_ferc1')
+ )
+ op.create_table('denorm_electric_energy_dispositions_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('energy_disposition_type', sa.TEXT(), nullable=False),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name='pk_denorm_electric_energy_dispositions_ferc1')
+ )
+ op.drop_table('out_ferc1__yearly_fuel_by_plant')
+ op.drop_table('out_ferc1__yearly_fuel')
+ op.drop_table('out_ferc1__yearly_all_plants')
+ op.drop_table('_out_ferc1__yearly_steam_plants')
+ op.drop_table('_out_ferc1__yearly_small_plants')
+ op.drop_table('_out_ferc1__yearly_pumped_storage_plants')
+ op.drop_table('_out_ferc1__yearly_plants_utilities')
+ op.drop_table('_out_ferc1__yearly_hydro_plants')
+ op.drop_table('out_ferc1__yearly_utility_plant_summary')
+ op.drop_table('out_ferc1__yearly_transmission_statistics')
+ op.drop_table('out_ferc1__yearly_retained_earnings')
+ op.drop_table('out_ferc1__yearly_purchased_power')
+ op.drop_table('out_ferc1__yearly_plant_in_service')
+ op.drop_table('out_ferc1__yearly_other_regulatory_liabilities')
+ op.drop_table('out_ferc1__yearly_income_statement')
+ op.drop_table('out_ferc1__yearly_electricity_sales_by_rate_schedule')
+ op.drop_table('out_ferc1__yearly_electric_plant_depreciation_functional')
+ op.drop_table('out_ferc1__yearly_electric_plant_depreciation_changes')
+ op.drop_table('out_ferc1__yearly_electric_operating_revenues')
+ op.drop_table('out_ferc1__yearly_electric_operating_expenses')
+ op.drop_table('out_ferc1__yearly_electric_energy_sources')
+ op.drop_table('out_ferc1__yearly_electric_energy_dispositions')
+ op.drop_table('out_ferc1__yearly_depreciation_amortization_summary')
+ op.drop_table('out_ferc1__yearly_cash_flow')
+ op.drop_table('out_ferc1__yearly_balance_sheet_liabilities')
+ op.drop_table('out_ferc1__yearly_balance_sheet_assets')
+ # ### end Alembic commands ###
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 50da7d84cf..6a8dbcbfd8 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -533,7 +533,7 @@ def out_ferc1__yearly_electricity_sales_by_rate_schedule(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_income_statement_ferc1(
+def out_ferc1__yearly_income_statement(
core_ferc1__yearly_income_statement: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
From 62f0f50ff338e3ccefb656806cd27e109a18be31 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 15 Sep 2023 14:00:10 -0400
Subject: [PATCH 13/70] Rename EIA denorm assets
---
.../c73882df0765_rename_eia_denorm_assets.py | 1607 +++++++++++++++++
src/pudl/analysis/allocate_gen_fuel.py | 18 +-
src/pudl/analysis/mcoe.py | 10 +-
src/pudl/analysis/service_territory.py | 18 +-
src/pudl/etl/__init__.py | 2 +-
src/pudl/metadata/resources/eia.py | 10 +-
src/pudl/metadata/resources/eia860.py | 44 +-
src/pudl/metadata/resources/eia923.py | 24 +-
src/pudl/output/eia.py | 34 +-
src/pudl/output/eia860.py | 16 +-
src/pudl/output/eia923.py | 74 +-
src/pudl/output/ferc714.py | 4 +-
src/pudl/output/pudltabl.py | 22 +-
test/validate/eia_test.py | 8 +-
14 files changed, 1749 insertions(+), 142 deletions(-)
create mode 100644 migrations/versions/c73882df0765_rename_eia_denorm_assets.py
diff --git a/migrations/versions/c73882df0765_rename_eia_denorm_assets.py b/migrations/versions/c73882df0765_rename_eia_denorm_assets.py
new file mode 100644
index 0000000000..5653302de1
--- /dev/null
+++ b/migrations/versions/c73882df0765_rename_eia_denorm_assets.py
@@ -0,0 +1,1607 @@
+"""Rename eia denorm assets
+
+Revision ID: c73882df0765
+Revises: 2ba971d7e675
+Create Date: 2023-09-15 13:11:05.940269
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'c73882df0765'
+down_revision = '2ba971d7e675'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia860__yearly_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
+ )
+ op.create_table('out_eia923__fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
+ sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
+ )
+ op.create_table('out_eia923__monthly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
+ )
+ op.create_table('out_eia923__boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
+ )
+ op.create_table('out_eia923__generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
+ )
+ op.create_table('out_eia923__monthly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__monthly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
+ )
+ op.create_table('out_eia__yearly_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
+ )
+ op.create_table('_out_eia__plants_utilities',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
+ )
+ op.create_table('out_eia923__yearly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
+ )
+ op.create_table('out_eia__yearly_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
+ )
+ op.create_table('out_eia860__yearly_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
+ sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
+ sa.Column('owner_state', sa.Enum('DC', 'OH', 'OK', 'KS', 'NB', 'PR', 'VA', 'SD', 'GA', 'WV', 'ND', 'GU', 'IL', 'TN', 'NT', 'CT', 'VI', 'ID', 'QC', 'NU', 'AK', 'MI', 'MT', 'NH', 'ON', 'AZ', 'MS', 'OR', 'AS', 'CO', 'ME', 'NC', 'MD', 'NY', 'AB', 'YT', 'KY', 'SK', 'DE', 'NV', 'NM', 'AL', 'NS', 'WY', 'WA', 'WI', 'NJ', 'SC', 'LA', 'MO', 'CA', 'BC', 'HI', 'MP', 'NE', 'NL', 'PA', 'MB', 'PE', 'IN', 'IA', 'UT', 'TX', 'VT', 'AR', 'MA', 'RI', 'MN', 'FL'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
+ )
+ op.create_table('out_eia923__yearly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__yearly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
+ )
+ op.create_table('out_eia__yearly_boilers',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
+ )
+ op.create_table('out_eia__yearly_generators',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia__yearly_generators'))
+ )
+ op.drop_table('denorm_generation_monthly_eia923')
+ op.drop_table('denorm_fuel_receipts_costs_eia923')
+ op.drop_table('denorm_plants_utilities_eia')
+ op.drop_table('denorm_boiler_fuel_eia923')
+ op.drop_table('denorm_emissions_control_equipment_eia860')
+ op.drop_table('denorm_generation_fuel_combined_yearly_eia923')
+ op.drop_table('denorm_generation_yearly_eia923')
+ op.drop_table('denorm_utilities_eia')
+ op.drop_table('denorm_generators_eia')
+ op.drop_table('denorm_generation_eia923')
+ op.drop_table('denorm_generation_fuel_combined_eia923')
+ op.drop_table('denorm_plants_eia')
+ op.drop_table('denorm_boilers_eia')
+ op.drop_table('denorm_generation_fuel_combined_monthly_eia923')
+ op.drop_table('denorm_boiler_fuel_monthly_eia923')
+ op.drop_table('denorm_fuel_receipts_costs_yearly_eia923')
+ op.drop_table('denorm_boiler_fuel_yearly_eia923')
+ op.drop_table('denorm_fuel_receipts_costs_monthly_eia923')
+ op.drop_table('denorm_ownership_eia860')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('denorm_ownership_eia860',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('owner_utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('owner_name', sa.TEXT(), nullable=True),
+ sa.Column('owner_state', sa.VARCHAR(length=2), nullable=True),
+ sa.Column('owner_city', sa.TEXT(), nullable=True),
+ sa.Column('owner_country', sa.VARCHAR(length=3), nullable=True),
+ sa.Column('owner_street_address', sa.TEXT(), nullable=True),
+ sa.Column('owner_zip_code', sa.TEXT(), nullable=True),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_ownership_eia860_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_ownership_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_ownership_eia860_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_ownership_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name='pk_denorm_ownership_eia860')
+ )
+ op.create_table('denorm_fuel_receipts_costs_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
+ sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_boiler_fuel_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('boiler_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_core_eia860__scd_boilers'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_yearly_eia923')
+ )
+ op.create_table('denorm_fuel_receipts_costs_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
+ sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_boiler_fuel_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('boiler_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_core_eia__entity_boilers'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_monthly_eia923')
+ )
+ op.create_table('denorm_generation_fuel_combined_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_monthly_eia923')
+ )
+ op.create_table('denorm_boilers_eia',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('boiler_id', sa.TEXT(), nullable=False),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.FLOAT(), nullable=True),
+ sa.Column('boiler_fuel_code_1', sa.TEXT(), nullable=True),
+ sa.Column('boiler_fuel_code_2', sa.TEXT(), nullable=True),
+ sa.Column('boiler_fuel_code_3', sa.TEXT(), nullable=True),
+ sa.Column('boiler_fuel_code_4', sa.TEXT(), nullable=True),
+ sa.Column('boiler_manufacturer', sa.TEXT(), nullable=True),
+ sa.Column('boiler_manufacturer_code', sa.TEXT(), nullable=True),
+ sa.Column('boiler_operating_date', sa.DATE(), nullable=True),
+ sa.Column('boiler_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('boiler_status', sa.TEXT(), nullable=True),
+ sa.Column('boiler_type', sa.TEXT(), nullable=True),
+ sa.Column('city', sa.TEXT(), nullable=True),
+ sa.Column('compliance_year_mercury', sa.INTEGER(), nullable=True),
+ sa.Column('compliance_year_nox', sa.INTEGER(), nullable=True),
+ sa.Column('compliance_year_particulate', sa.INTEGER(), nullable=True),
+ sa.Column('compliance_year_so2', sa.INTEGER(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.Column('efficiency_100pct_load', sa.FLOAT(), nullable=True),
+ sa.Column('efficiency_50pct_load', sa.FLOAT(), nullable=True),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.FLOAT(), nullable=True),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.FLOAT(), nullable=True),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.FLOAT(), nullable=True),
+ sa.Column('firing_rate_using_other_fuels', sa.FLOAT(), nullable=True),
+ sa.Column('firing_type_1', sa.TEXT(), nullable=True),
+ sa.Column('firing_type_2', sa.TEXT(), nullable=True),
+ sa.Column('firing_type_3', sa.TEXT(), nullable=True),
+ sa.Column('fly_ash_reinjection', sa.BOOLEAN(), nullable=True),
+ sa.Column('hrsg', sa.BOOLEAN(), nullable=True),
+ sa.Column('latitude', sa.FLOAT(), nullable=True),
+ sa.Column('longitude', sa.FLOAT(), nullable=True),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.FLOAT(), nullable=True),
+ sa.Column('mercury_control_existing_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_existing_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_existing_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_existing_strategy_4', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_existing_strategy_5', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_existing_strategy_6', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_proposed_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_proposed_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_proposed_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('new_source_review', sa.BOOLEAN(), nullable=True),
+ sa.Column('new_source_review_date', sa.DATE(), nullable=True),
+ sa.Column('new_source_review_permit', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_existing_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_existing_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_existing_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_manufacturer', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_manufacturer_code', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_proposed_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_proposed_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_proposed_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_status_code', sa.TEXT(), nullable=True),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('regulation_mercury', sa.TEXT(), nullable=True),
+ sa.Column('regulation_nox', sa.TEXT(), nullable=True),
+ sa.Column('regulation_particulate', sa.TEXT(), nullable=True),
+ sa.Column('regulation_so2', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_existing_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_existing_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_existing_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_proposed_strategy_1', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_proposed_strategy_2', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_proposed_strategy_3', sa.TEXT(), nullable=True),
+ sa.Column('standard_nox_rate', sa.FLOAT(), nullable=True),
+ sa.Column('standard_particulate_rate', sa.FLOAT(), nullable=True),
+ sa.Column('standard_so2_percent_scrubbed', sa.FLOAT(), nullable=True),
+ sa.Column('standard_so2_rate', sa.FLOAT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('street_address', sa.TEXT(), nullable=True),
+ sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
+ sa.Column('turndown_ratio', sa.FLOAT(), nullable=True),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('unit_nox', sa.TEXT(), nullable=True),
+ sa.Column('unit_particulate', sa.TEXT(), nullable=True),
+ sa.Column('unit_so2', sa.TEXT(), nullable=True),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.FLOAT(), nullable=True),
+ sa.Column('wet_dry_bottom', sa.TEXT(), nullable=True),
+ sa.Column('zip_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_2_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_3_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_4_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name='fk_denorm_boilers_eia_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers'),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name='fk_denorm_boilers_eia_boiler_status_core_eia__codes_boiler_status'),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name='fk_denorm_boilers_eia_boiler_type_core_eia__codes_boiler_types'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_boilers_eia_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name='fk_denorm_boilers_eia_firing_type_1_core_eia__codes_firing_types'),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name='fk_denorm_boilers_eia_firing_type_2_core_eia__codes_firing_types'),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name='fk_denorm_boilers_eia_firing_type_3_core_eia__codes_firing_types'),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name='fk_denorm_boilers_eia_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers'),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies'),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name='fk_denorm_boilers_eia_nox_control_status_code_core_eia__codes_nox_control_status'),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name='fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies'),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name='fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies'),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name='fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name='fk_denorm_boilers_eia_plant_id_eia_core_eia860__scd_boilers'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boilers_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_mercury_core_eia__codes_regulations'),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_nox_core_eia__codes_regulations'),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_particulate_core_eia__codes_regulations'),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_so2_core_eia__codes_regulations'),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies'),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name='fk_denorm_boilers_eia_unit_nox_core_eia__codes_nox_units'),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name='fk_denorm_boilers_eia_unit_particulate_core_eia__codes_particulate_units'),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name='fk_denorm_boilers_eia_unit_so2_core_eia__codes_so2_units'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_boilers_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boilers_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name='fk_denorm_boilers_eia_wet_dry_bottom_core_eia__codes_wet_dry_bottom'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name='pk_denorm_boilers_eia')
+ )
+ op.create_table('denorm_plants_eia',
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('city', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('latitude', sa.FLOAT(), nullable=True),
+ sa.Column('longitude', sa.FLOAT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('street_address', sa.TEXT(), nullable=True),
+ sa.Column('zip_code', sa.TEXT(), nullable=True),
+ sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('ash_impoundment', sa.BOOLEAN(), nullable=True),
+ sa.Column('ash_impoundment_lined', sa.BOOLEAN(), nullable=True),
+ sa.Column('ash_impoundment_status', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('datum', sa.TEXT(), nullable=True),
+ sa.Column('energy_storage', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_cogen_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('ferc_cogen_status', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('ferc_exempt_wholesale_generator', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_small_power_producer_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('ferc_small_power_producer', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('grid_voltage_1_kv', sa.FLOAT(), nullable=True),
+ sa.Column('grid_voltage_2_kv', sa.FLOAT(), nullable=True),
+ sa.Column('grid_voltage_3_kv', sa.FLOAT(), nullable=True),
+ sa.Column('iso_rto_code', sa.TEXT(), nullable=True),
+ sa.Column('liquefied_natural_gas_storage', sa.BOOLEAN(), nullable=True),
+ sa.Column('natural_gas_local_distribution_company', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_storage', sa.BOOLEAN(), nullable=True),
+ sa.Column('natural_gas_pipeline_name_1', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_pipeline_name_2', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_pipeline_name_3', sa.TEXT(), nullable=True),
+ sa.Column('nerc_region', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('net_metering', sa.BOOLEAN(), nullable=True),
+ sa.Column('pipeline_notes', sa.TEXT(), nullable=True),
+ sa.Column('primary_purpose_id_naics', sa.INTEGER(), nullable=True),
+ sa.Column('regulatory_status_code', sa.TEXT(), nullable=True),
+ sa.Column('reporting_frequency_code', sa.VARCHAR(length=2), nullable=True),
+ sa.Column('sector_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('sector_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('service_area', sa.TEXT(), nullable=True),
+ sa.Column('transmission_distribution_owner_id', sa.INTEGER(), nullable=True),
+ sa.Column('transmission_distribution_owner_name', sa.TEXT(), nullable=True),
+ sa.Column('transmission_distribution_owner_state', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('water_source', sa.TEXT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('balancing_authority_code_eia_consistent_rate', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name='fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_eia_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name='fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies'),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name='fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name='pk_denorm_plants_eia')
+ )
+ op.create_table('denorm_generation_fuel_combined_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_type_code_aer', sa.TEXT(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generation_fuel_combined_eia923_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name='fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_eia923')
+ )
+ op.create_table('denorm_generation_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generation_eia923_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_denorm_generation_eia923_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_eia923')
+ )
+ op.create_table('denorm_generators_eia',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('associated_combined_heat_power', sa.BOOLEAN(), nullable=True),
+ sa.Column('bga_source', sa.TEXT(), nullable=True),
+ sa.Column('bypass_heat_recovery', sa.BOOLEAN(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('carbon_capture', sa.BOOLEAN(), nullable=True),
+ sa.Column('city', sa.TEXT(), nullable=True),
+ sa.Column('cofire_fuels', sa.BOOLEAN(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('current_planned_generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.Column('deliver_power_transgrid', sa.BOOLEAN(), nullable=True),
+ sa.Column('distributed_generation', sa.BOOLEAN(), nullable=True),
+ sa.Column('duct_burners', sa.BOOLEAN(), nullable=True),
+ sa.Column('energy_source_1_transport_1', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_1_transport_2', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_1_transport_3', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_2_transport_1', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_2_transport_2', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_2_transport_3', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_2', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_3', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_4', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_5', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_6', sa.TEXT(), nullable=True),
+ sa.Column('energy_storage_capacity_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_qualifying_facility', sa.BOOLEAN(), nullable=True),
+ sa.Column('fluidized_bed_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('latitude', sa.FLOAT(), nullable=True),
+ sa.Column('longitude', sa.FLOAT(), nullable=True),
+ sa.Column('minimum_load_mw', sa.FLOAT(), nullable=True),
+ sa.Column('multiple_fuels', sa.BOOLEAN(), nullable=True),
+ sa.Column('nameplate_power_factor', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_mwdc', sa.FLOAT(), nullable=True),
+ sa.Column('operating_switch', sa.TEXT(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('operational_status_code', sa.TEXT(), nullable=True),
+ sa.Column('original_planned_generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('other_combustion_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('other_modifications_date', sa.DATE(), nullable=True),
+ sa.Column('other_planned_modifications', sa.BOOLEAN(), nullable=True),
+ sa.Column('owned_by_non_utility', sa.BOOLEAN(), nullable=True),
+ sa.Column('ownership_code', sa.TEXT(), nullable=True),
+ sa.Column('planned_derate_date', sa.DATE(), nullable=True),
+ sa.Column('planned_energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('planned_modifications', sa.BOOLEAN(), nullable=True),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.FLOAT(), nullable=True),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.FLOAT(), nullable=True),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.FLOAT(), nullable=True),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.FLOAT(), nullable=True),
+ sa.Column('planned_new_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('planned_new_prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('planned_repower_date', sa.DATE(), nullable=True),
+ sa.Column('planned_uprate_date', sa.DATE(), nullable=True),
+ sa.Column('previously_canceled', sa.BOOLEAN(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('pulverized_coal_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('reactive_power_output_mvar', sa.FLOAT(), nullable=True),
+ sa.Column('rto_iso_lmp_node_id', sa.TEXT(), nullable=True),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.TEXT(), nullable=True),
+ sa.Column('solid_fuel_gasification', sa.BOOLEAN(), nullable=True),
+ sa.Column('startup_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('startup_source_code_2', sa.TEXT(), nullable=True),
+ sa.Column('startup_source_code_3', sa.TEXT(), nullable=True),
+ sa.Column('startup_source_code_4', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('stoker_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('street_address', sa.TEXT(), nullable=True),
+ sa.Column('subcritical_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('summer_capacity_estimate', sa.BOOLEAN(), nullable=True),
+ sa.Column('summer_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('summer_estimated_capability_mw', sa.FLOAT(), nullable=True),
+ sa.Column('supercritical_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('switch_oil_gas', sa.BOOLEAN(), nullable=True),
+ sa.Column('syncronized_transmission_grid', sa.BOOLEAN(), nullable=True),
+ sa.Column('technology_description', sa.TEXT(), nullable=True),
+ sa.Column('time_cold_shutdown_full_load_code', sa.TEXT(), nullable=True),
+ sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
+ sa.Column('topping_bottoming_code', sa.TEXT(), nullable=True),
+ sa.Column('turbines_inverters_hydrokinetics', sa.INTEGER(), nullable=True),
+ sa.Column('turbines_num', sa.INTEGER(), nullable=True),
+ sa.Column('ultrasupercritical_tech', sa.BOOLEAN(), nullable=True),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('uprate_derate_completed_date', sa.DATE(), nullable=True),
+ sa.Column('uprate_derate_during_year', sa.BOOLEAN(), nullable=True),
+ sa.Column('winter_capacity_estimate', sa.BOOLEAN(), nullable=True),
+ sa.Column('winter_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('winter_estimated_capability_mw', sa.FLOAT(), nullable=True),
+ sa.Column('zip_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generators_eia_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_2_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_3_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_4_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_5_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_6_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name='fk_denorm_generators_eia_operational_status_code_core_eia__codes_operational_status'),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_planned_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generators_eia_planned_new_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_generators_eia_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generators_eia_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_2_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_3_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_4_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generators_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generators_eia')
+ )
+ op.create_table('denorm_utilities_eia',
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('street_address', sa.TEXT(), nullable=True),
+ sa.Column('city', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('zip_code', sa.TEXT(), nullable=True),
+ sa.Column('plants_reported_owner', sa.BOOLEAN(), nullable=True),
+ sa.Column('plants_reported_operator', sa.BOOLEAN(), nullable=True),
+ sa.Column('plants_reported_asset_manager', sa.BOOLEAN(), nullable=True),
+ sa.Column('plants_reported_other_relationship', sa.BOOLEAN(), nullable=True),
+ sa.Column('entity_type', sa.TEXT(), nullable=True),
+ sa.Column('attention_line', sa.TEXT(), nullable=True),
+ sa.Column('address_2', sa.TEXT(), nullable=True),
+ sa.Column('zip_code_4', sa.TEXT(), nullable=True),
+ sa.Column('contact_firstname', sa.TEXT(), nullable=True),
+ sa.Column('contact_lastname', sa.TEXT(), nullable=True),
+ sa.Column('contact_title', sa.TEXT(), nullable=True),
+ sa.Column('phone_number', sa.TEXT(), nullable=True),
+ sa.Column('phone_extension', sa.TEXT(), nullable=True),
+ sa.Column('contact_firstname_2', sa.TEXT(), nullable=True),
+ sa.Column('contact_lastname_2', sa.TEXT(), nullable=True),
+ sa.Column('contact_title_2', sa.TEXT(), nullable=True),
+ sa.Column('phone_number_2', sa.TEXT(), nullable=True),
+ sa.Column('phone_extension_2', sa.TEXT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name='pk_denorm_utilities_eia')
+ )
+ op.create_table('denorm_generation_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_generation_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generation_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_yearly_eia923')
+ )
+ op.create_table('denorm_generation_fuel_combined_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_yearly_eia923')
+ )
+ op.create_table('denorm_emissions_control_equipment_eia860',
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('emission_control_id_pudl', sa.FLOAT(), nullable=False),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.Column('emission_control_equipment_type_code', sa.TEXT(), nullable=True),
+ sa.Column('operational_status_code', sa.TEXT(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('particulate_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('acid_gas_control', sa.BOOLEAN(), nullable=True),
+ sa.Column('emission_control_equipment_cost', sa.FLOAT(), nullable=True),
+ sa.Column('emission_control_operating_date', sa.DATE(), nullable=True),
+ sa.Column('emission_control_retirement_date', sa.DATE(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name='fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types'),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name='fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name='pk_denorm_emissions_control_equipment_eia860')
+ )
+ op.create_table('denorm_boiler_fuel_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('boiler_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name='fk_denorm_boiler_fuel_eia923_plant_id_eia_core_eia__entity_boilers'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_boiler_fuel_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_eia923')
+ )
+ op.create_table('denorm_plants_utilities_eia',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_utilities_eia_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name='pk_denorm_plants_utilities_eia')
+ )
+ op.create_table('denorm_fuel_receipts_costs_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('contract_type_code', sa.VARCHAR(length=2), nullable=True),
+ sa.Column('contract_expiration_date', sa.DATE(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_group_code', sa.VARCHAR(length=14), nullable=True),
+ sa.Column('supplier_name', sa.TEXT(), nullable=True),
+ sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
+ sa.Column('primary_transportation_mode_code', sa.TEXT(), nullable=True),
+ sa.Column('secondary_transportation_mode_code', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_transport_code', sa.VARCHAR(length=13), nullable=True),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.VARCHAR(length=13), nullable=True),
+ sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.Column('mine_id_msha', sa.INTEGER(), nullable=True),
+ sa.Column('mine_name', sa.TEXT(), nullable=True),
+ sa.Column('mine_state', sa.TEXT(), nullable=True),
+ sa.Column('coalmine_county_id_fips', sa.TEXT(), nullable=True),
+ sa.Column('mine_type_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_generation_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_denorm_generation_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_monthly_eia923')
+ )
+ op.drop_table('out_eia__yearly_generators')
+ op.drop_table('out_eia__yearly_boilers')
+ op.drop_table('out_eia923__yearly_generation')
+ op.drop_table('out_eia923__yearly_boiler_fuel')
+ op.drop_table('out_eia860__yearly_ownership')
+ op.drop_table('out_eia__yearly_plants')
+ op.drop_table('out_eia923__yearly_generation_fuel_combined')
+ op.drop_table('out_eia923__yearly_fuel_receipts_costs')
+ op.drop_table('_out_eia__plants_utilities')
+ op.drop_table('out_eia__yearly_utilities')
+ op.drop_table('out_eia923__monthly_generation')
+ op.drop_table('out_eia923__monthly_boiler_fuel')
+ op.drop_table('out_eia923__generation')
+ op.drop_table('out_eia923__boiler_fuel')
+ op.drop_table('out_eia923__monthly_generation_fuel_combined')
+ op.drop_table('out_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('out_eia923__generation_fuel_combined')
+ op.drop_table('out_eia923__fuel_receipts_costs')
+ op.drop_table('out_eia860__yearly_emissions_control_equipment')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/allocate_gen_fuel.py b/src/pudl/analysis/allocate_gen_fuel.py
index 8bc60f9d7b..2407dc9140 100644
--- a/src/pudl/analysis/allocate_gen_fuel.py
+++ b/src/pudl/analysis/allocate_gen_fuel.py
@@ -211,12 +211,12 @@ def allocate_gen_fuel_asset_factory(
name=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923",
ins={
"gf": AssetIn(
- key=f"denorm_generation_fuel_combined_{agg_freqs[freq]}_eia923"
+ key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_combined"
),
- "bf": AssetIn(key=f"denorm_boiler_fuel_{agg_freqs[freq]}_eia923"),
- "gen": AssetIn(key=f"denorm_generation_{agg_freqs[freq]}_eia923"),
+ "bf": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_boiler_fuel"),
+ "gen": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_generation"),
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
- "gens": AssetIn(key="denorm_generators_eia"),
+ "gens": AssetIn(key="out_eia__yearly_generators"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -261,7 +261,7 @@ def gen_fuel_by_gen_esc(
"net_gen_fuel_alloc": AssetIn(
key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
),
- "pu": AssetIn(key="denorm_plants_utilities_eia"),
+ "pu": AssetIn(key="_out_eia__plants_utilities"),
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
},
io_manager_key=io_manager_key,
@@ -277,7 +277,7 @@ def gen_fuel_by_gen(
net_gen_fuel_alloc=net_gen_fuel_alloc,
sum_cols=DATA_COLUMNS,
)
- # make the output resemble denorm_generation_eia923:
+ # make the output resemble out_eia923__generation:
.pipe(pudl.output.eia923.denorm_by_gen, pu=pu, bga=bga)
)
@@ -287,8 +287,8 @@ def gen_fuel_by_gen(
"net_gen_fuel_alloc": AssetIn(
key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
),
- "gens": AssetIn(key="denorm_generators_eia"),
- "own_eia860": AssetIn(key="denorm_ownership_eia860"),
+ "gens": AssetIn(key="out_eia__yearly_generators"),
+ "own_eia860": AssetIn(key="out_eia860__yearly_ownership"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -348,7 +348,7 @@ def allocate_gen_fuel_by_generator_energy_source(
net generation from the :ref:`core_eia923__monthly_generation_fuel` table.
Args:
- gf: Temporally aggregated :ref:`denorm_generation_fuel_combined_eia923` dataframe.
+ gf: Temporally aggregated :ref:`out_eia923__generation_fuel_combined` dataframe.
bf: Temporally aggregated :ref:`core_eia923__monthly_boiler_fuel` dataframe.
gen: Temporally aggregated :ref:`core_eia923__monthly_generation` dataframe.
bga: :ref:`core_eia860__assn_boiler_generator` dataframe.
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 9e43a10916..3d4ac4a320 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -67,7 +67,7 @@ def hr_by_unit_asset(gen: pd.DataFrame, bga: pd.DataFrame) -> pd.DataFrame:
ins={
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
"hr_by_unit": AssetIn(key=f"heat_rate_by_unit_{agg_freqs[freq]}"),
- "gens": AssetIn(key="denorm_generators_eia"),
+ "gens": AssetIn(key="out_eia__yearly_generators"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -81,8 +81,8 @@ def hr_by_gen_asset(
name=f"fuel_cost_by_generator_{agg_freqs[freq]}",
ins={
"hr_by_gen": AssetIn(key=f"heat_rate_by_generator_{agg_freqs[freq]}"),
- "gens": AssetIn(key="denorm_generators_eia"),
- "frc": AssetIn(key=f"denorm_fuel_receipts_costs_{agg_freqs[freq]}_eia923"),
+ "gens": AssetIn(key="out_eia__yearly_generators"),
+ "frc": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_fuel_receipts_costs"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -98,7 +98,7 @@ def fc_asset(
"gen": AssetIn(
key=f"generation_fuel_by_generator_{agg_freqs[freq]}_eia923"
),
- "gens": AssetIn(key="denorm_generators_eia"),
+ "gens": AssetIn(key="out_eia__yearly_generators"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -172,7 +172,7 @@ def mcoe_asset(
name=f"mcoe_generators_{agg_freqs[freq]}",
ins={
"mcoe": AssetIn(key=f"mcoe_{agg_freqs[freq]}"),
- "gens": AssetIn(key="denorm_generators_eia"),
+ "gens": AssetIn(key="out_eia__yearly_generators"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
diff --git a/src/pudl/analysis/service_territory.py b/src/pudl/analysis/service_territory.py
index c32062bb28..dd38185d1d 100644
--- a/src/pudl/analysis/service_territory.py
+++ b/src/pudl/analysis/service_territory.py
@@ -32,7 +32,7 @@
def utility_ids_all_eia(
- denorm_utilities_eia: pd.DataFrame,
+ out_eia__yearly_utilities: pd.DataFrame,
core_eia861__yearly_service_territory: pd.DataFrame,
) -> pd.DataFrame:
"""Compile IDs and Names of all known EIA Utilities.
@@ -43,7 +43,7 @@ def utility_ids_all_eia(
process and PUDL database yet.
Args:
- denorm_utilities_eia: De-normalized EIA 860 utility attributes table.
+ out_eia__yearly_utilities: De-normalized EIA 860 utility attributes table.
core_eia861__yearly_service_territory: Normalized EIA 861 Service Territory table.
Returns:
@@ -52,7 +52,7 @@ def utility_ids_all_eia(
return (
pd.concat(
[
- denorm_utilities_eia[["utility_id_eia", "utility_name_eia"]],
+ out_eia__yearly_utilities[["utility_id_eia", "utility_name_eia"]],
core_eia861__yearly_service_territory[
["utility_id_eia", "utility_name_eia"]
],
@@ -279,7 +279,7 @@ def _save_geoparquet(gdf, entity_type, dissolve, limit_by_state):
def compile_geoms(
core_eia861__yearly_balancing_authority: pd.DataFrame,
core_eia861__assn_balancing_authority: pd.DataFrame,
- denorm_utilities_eia: pd.DataFrame,
+ out_eia__yearly_utilities: pd.DataFrame,
core_eia861__yearly_service_territory: pd.DataFrame,
core_eia861__assn_utility: pd.DataFrame,
census_counties: pd.DataFrame,
@@ -303,7 +303,7 @@ def compile_geoms(
)
utilids_all_eia = utility_ids_all_eia(
- denorm_utilities_eia, core_eia861__yearly_service_territory
+ out_eia__yearly_utilities, core_eia861__yearly_service_territory
)
if entity_type == "ba":
@@ -386,7 +386,7 @@ def dagster_compile_geoms(
context,
core_eia861__yearly_balancing_authority: pd.DataFrame,
core_eia861__assn_balancing_authority: pd.DataFrame,
- denorm_utilities_eia: pd.DataFrame,
+ out_eia__yearly_utilities: pd.DataFrame,
core_eia861__yearly_service_territory: pd.DataFrame,
core_eia861__assn_utility: pd.DataFrame,
core_censusdp1__entity_county: pd.DataFrame,
@@ -404,7 +404,7 @@ def dagster_compile_geoms(
return compile_geoms(
core_eia861__yearly_balancing_authority=core_eia861__yearly_balancing_authority,
core_eia861__assn_balancing_authority=core_eia861__assn_balancing_authority,
- denorm_utilities_eia=denorm_utilities_eia,
+ out_eia__yearly_utilities=out_eia__yearly_utilities,
core_eia861__yearly_service_territory=core_eia861__yearly_service_territory,
core_eia861__assn_utility=core_eia861__assn_utility,
census_counties=core_censusdp1__entity_county,
@@ -605,7 +605,9 @@ def main():
core_eia861__assn_balancing_authority=pd.read_sql(
"core_eia861__assn_balancing_authority", pudl_engine
),
- denorm_utilities_eia=pd.read_sql(AssetKey("denorm_utilities_eia")),
+ out_eia__yearly_utilities=pd.read_sql(
+ AssetKey("out_eia__yearly_utilities")
+ ),
core_eia861__yearly_service_territory=pd.read_sql(
AssetKey("core_eia861__yearly_service_territory")
),
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index 29a1d04731..8c01cdbcaf 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -59,7 +59,7 @@
pudl.output.eia923,
pudl.output.eia_bulk_elec,
],
- group_name="denorm_eia",
+ group_name="out_eia",
),
*load_assets_from_modules(
[pudl.analysis.allocate_gen_fuel], group_name="allocate_gen_fuel"
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 33f8634a92..eeed3bbbcf 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -736,7 +736,7 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "denorm_utilities_eia": {
+ "out_eia__yearly_utilities": {
"description": ("Denormalized table containing all EIA utility attributes."),
"schema": {
"fields": [
@@ -774,7 +774,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "outputs",
},
- "denorm_plants_eia": {
+ "out_eia__yearly_plants": {
"description": ("Denormalized table containing all EIA plant attributes."),
"schema": {
"fields": [
@@ -839,7 +839,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "outputs",
},
- "denorm_plants_utilities_eia": {
+ "_out_eia__plants_utilities": {
"description": (
"Denormalized table containing all plant and utility IDs and names from EIA."
),
@@ -859,7 +859,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "outputs",
},
- "denorm_boilers_eia": {
+ "out_eia__yearly_boilers": {
"description": ("Denormalized table containing all EIA boiler attributes."),
"schema": {
"fields": [
@@ -977,7 +977,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "outputs",
},
- "denorm_generators_eia": {
+ "out_eia__yearly_generators": {
"description": ("Denormalized table containing all EIA generator attributes."),
"schema": {
"fields": [
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index 54574ed531..863c2b9ebe 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -109,8 +109,8 @@
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
"core_eia923__monthly_boiler_fuel",
- "denorm_boiler_fuel_eia923",
- "denorm_boiler_fuel_monthly_eia923",
+ "out_eia923__boiler_fuel",
+ "out_eia923__monthly_boiler_fuel",
],
},
},
@@ -229,8 +229,8 @@
"exclude": [
"core_eia923__monthly_boiler_fuel",
"capacity_factor_by_generator_monthly",
- "denorm_generation_eia923",
- "denorm_generation_monthly_eia923",
+ "out_eia923__generation",
+ "out_eia923__monthly_generation",
"fuel_cost_by_generator_monthly",
"core_eia923__monthly_fuel_receipts_costs",
"core_eia923__monthly_generation",
@@ -279,7 +279,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "denorm_ownership_eia860": {
+ "out_eia860__yearly_ownership": {
"description": (
"Generator Ownership, reported in EIA-860 Schedule 4. Includes only "
"jointly or third-party owned generators. Denormalized to include plant "
@@ -374,14 +374,14 @@
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
"core_eia923__monthly_boiler_fuel",
- "denorm_boiler_fuel_eia923",
- "denorm_boiler_fuel_monthly_eia923",
- "denorm_fuel_receipts_costs_eia923",
- "denorm_fuel_receipts_costs_monthly_eia923",
- "denorm_generation_eia923",
- "denorm_generation_monthly_eia923",
- "denorm_generation_fuel_combined_eia923",
- "denorm_generation_fuel_combined_monthly_eia923",
+ "out_eia923__boiler_fuel",
+ "out_eia923__monthly_boiler_fuel",
+ "out_eia923__fuel_receipts_costs",
+ "out_eia923__monthly_fuel_receipts_costs",
+ "out_eia923__generation",
+ "out_eia923__monthly_generation",
+ "out_eia923__generation_fuel_combined",
+ "out_eia923__monthly_generation_fuel_combined",
"generation_fuel_by_generator_energy_source_monthly_eia923",
"generation_fuel_by_generator_monthly_eia923",
"core_eia923__monthly_fuel_receipts_costs",
@@ -456,14 +456,14 @@
"core_eia861__yearly_demand_side_management_ee_dr",
"core_eia861__yearly_demand_side_management_misc",
"core_eia861__yearly_demand_side_management_sales",
- "denorm_boiler_fuel_eia923",
- "denorm_boiler_fuel_monthly_eia923",
- "denorm_fuel_receipts_costs_eia923",
- "denorm_fuel_receipts_costs_monthly_eia923",
- "denorm_generation_eia923",
- "denorm_generation_monthly_eia923",
- "denorm_generation_fuel_combined_eia923",
- "denorm_generation_fuel_combined_monthly_eia923",
+ "out_eia923__boiler_fuel",
+ "out_eia923__monthly_boiler_fuel",
+ "out_eia923__fuel_receipts_costs",
+ "out_eia923__monthly_fuel_receipts_costs",
+ "out_eia923__generation",
+ "out_eia923__monthly_generation",
+ "out_eia923__generation_fuel_combined",
+ "out_eia923__monthly_generation_fuel_combined",
"fuel_cost_by_generator_monthly",
"generation_fuel_by_generator_energy_source_monthly_eia923",
"generation_fuel_by_generator_monthly_eia923",
@@ -533,7 +533,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "denorm_emissions_control_equipment_eia860": {
+ "out_eia860__yearly_emissions_control_equipment": {
"description": (
"""The cost, type, operating status, retirement date, and install year of
emissions control equipment reported to EIA. Includes control ids for sulfur dioxide
diff --git a/src/pudl/metadata/resources/eia923.py b/src/pudl/metadata/resources/eia923.py
index 8c341c61b7..b08632733c 100644
--- a/src/pudl/metadata/resources/eia923.py
+++ b/src/pudl/metadata/resources/eia923.py
@@ -137,7 +137,7 @@
"sources": ["eia923"],
"etl_group": "eia923",
},
- "denorm_boiler_fuel_eia923": {
+ "out_eia923__boiler_fuel": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
@@ -173,7 +173,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_boiler_fuel_yearly_eia923": {
+ "out_eia923__yearly_boiler_fuel": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
@@ -209,7 +209,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_boiler_fuel_monthly_eia923": {
+ "out_eia923__monthly_boiler_fuel": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
@@ -312,7 +312,7 @@
"sources": ["eia923"],
"etl_group": "eia923",
},
- "denorm_fuel_receipts_costs_eia923": {
+ "out_eia923__fuel_receipts_costs": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
@@ -358,7 +358,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_fuel_receipts_costs_yearly_eia923": {
+ "out_eia923__yearly_fuel_receipts_costs": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
@@ -388,7 +388,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_fuel_receipts_costs_monthly_eia923": {
+ "out_eia923__monthly_fuel_receipts_costs": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_fuel_receipts_costs"],
"schema": {
"fields": [
@@ -434,7 +434,7 @@
"sources": ["eia923"],
"etl_group": "eia923",
},
- "denorm_generation_eia923": {
+ "out_eia923__generation": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
@@ -456,7 +456,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_generation_monthly_eia923": {
+ "out_eia923__monthly_generation": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
@@ -477,7 +477,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_generation_yearly_eia923": {
+ "out_eia923__yearly_generation": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
@@ -527,7 +527,7 @@
"sources": ["eia923"],
"etl_group": "eia923",
},
- "denorm_generation_fuel_combined_eia923": {
+ "out_eia923__generation_fuel_combined": {
"description": TABLE_DESCRIPTIONS["generation_fuel_combined_eia923"],
"schema": {
"fields": [
@@ -561,7 +561,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_generation_fuel_combined_yearly_eia923": {
+ "out_eia923__yearly_generation_fuel_combined": {
"description": TABLE_DESCRIPTIONS["generation_fuel_combined_eia923"],
"schema": {
"fields": [
@@ -593,7 +593,7 @@
"sources": ["eia923"],
"etl_group": "outputs",
},
- "denorm_generation_fuel_combined_monthly_eia923": {
+ "out_eia923__monthly_generation_fuel_combined": {
"description": TABLE_DESCRIPTIONS["generation_fuel_combined_eia923"],
"schema": {
"fields": [
diff --git a/src/pudl/output/eia.py b/src/pudl/output/eia.py
index 043d1daeb2..91a58ec794 100644
--- a/src/pudl/output/eia.py
+++ b/src/pudl/output/eia.py
@@ -12,7 +12,7 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_utilities_eia(
+def out_eia__yearly_utilities(
core_eia__entity_utilities: pd.DataFrame,
core_eia860__scd_utilities: pd.DataFrame,
core_pudl__assn_utilities_eia: pd.DataFrame,
@@ -53,7 +53,7 @@ def denorm_utilities_eia(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_eia(
+def out_eia__yearly_plants(
core_eia__entity_plants: pd.DataFrame,
core_eia860__scd_plants: pd.DataFrame,
core_pudl__assn_plants_eia: pd.DataFrame,
@@ -114,12 +114,12 @@ def denorm_plants_eia(
},
compute_kind="Python",
)
-def denorm_generators_eia(
+def out_eia__yearly_generators(
context,
core_eia860__scd_generators: pd.DataFrame,
core_eia__entity_generators: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Utilities table.
@@ -129,7 +129,7 @@ def denorm_generators_eia(
core_eia860__scd_generators: EIA 860 annual generator table.
core_eia__entity_generators: EIA generators entity table.
core_eia__entity_plants: EIA plant entity table.
- denorm_plants_utilities_eia: Denormalized plant_utility EIA ID table.
+ _out_eia__plants_utilities: Denormalized plant_utility EIA ID table.
core_eia860__assn_boiler_generator: Associations between EIA boiler and generator IDs.
Returns:
@@ -153,7 +153,7 @@ def denorm_generators_eia(
out_df.report_date = pd.to_datetime(out_df.report_date)
# Bring in some generic plant & utility information:
- pu_eia = denorm_plants_utilities_eia.drop(
+ pu_eia = _out_eia__plants_utilities.drop(
["plant_name_eia", "utility_id_eia"], axis="columns"
)
out_df = pd.merge(out_df, pu_eia, on=["report_date", "plant_id_eia"], how="left")
@@ -222,11 +222,11 @@ def denorm_generators_eia(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_boilers_eia(
+def out_eia__yearly_boilers(
core_eia860__scd_boilers: pd.DataFrame,
core_eia__entity_boilers: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields reported in the EIA boilers tables.
@@ -240,7 +240,7 @@ def denorm_boilers_eia(
core_eia860__scd_boilers: EIA 860 annual boiler table.
core_eia__entity_boilers: EIA boiler entity table.
core_eia__entity_plants: EIA plant entity table.
- denorm_plants_utilities_eia: Denormalized plant_utility EIA ID table.
+ _out_eia__plants_utilities: Denormalized plant_utility EIA ID table.
core_eia860__assn_boiler_generator: Associations between EIA boiler and generator IDs.
Returns:
@@ -262,7 +262,7 @@ def denorm_boilers_eia(
# Bring in some generic plant & utility information:
out_df = pd.merge(
out_df,
- denorm_plants_utilities_eia.drop(["plant_name_eia"], axis="columns"),
+ _out_eia__plants_utilities.drop(["plant_name_eia"], axis="columns"),
on=["report_date", "plant_id_eia"],
how="left",
)
@@ -304,9 +304,9 @@ def denorm_boilers_eia(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_plants_utilities_eia(
- denorm_plants_eia: pd.DataFrame,
- denorm_utilities_eia: pd.DataFrame,
+def _out_eia__plants_utilities(
+ out_eia__yearly_plants: pd.DataFrame,
+ out_eia__yearly_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Create a dataframe of plant and utility IDs and names from EIA 860.
@@ -320,14 +320,14 @@ def denorm_plants_utilities_eia(
- utility_id_pudl
Args:
- denorm_plants_eia: Denormalized EIA plants table.
- denorm_utilities_eia: Denormalized EIA utilities table.
+ out_eia__yearly_plants: Denormalized EIA plants table.
+ out_eia__yearly_utilities: Denormalized EIA utilities table.
Returns:
A DataFrame containing plant and utility IDs and names from EIA 860.
"""
# Contains the one-to-one mapping of EIA plants to their operators
- core_pudl__assn_plants_eia = denorm_plants_eia.drop(
+ core_pudl__assn_plants_eia = out_eia__yearly_plants.drop(
[
"utility_id_pudl",
"city",
@@ -344,7 +344,7 @@ def denorm_plants_utilities_eia(
# to avoid duplicate columns on the merge...
out_df = pd.merge(
core_pudl__assn_plants_eia,
- denorm_utilities_eia,
+ out_eia__yearly_utilities,
how="left",
on=["report_date", "utility_id_eia"],
)
diff --git a/src/pudl/output/eia860.py b/src/pudl/output/eia860.py
index cab6b90c2f..26821f434e 100644
--- a/src/pudl/output/eia860.py
+++ b/src/pudl/output/eia860.py
@@ -7,21 +7,21 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_ownership_eia860(
- denorm_plants_utilities_eia: pd.DataFrame,
+def out_eia860__yearly_ownership(
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__scd_ownership: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized version of the EIA 860 ownership table.
Args:
- denorm_plants_utilities_eia: Denormalized table containing plant and utility
+ _out_eia__plants_utilities: Denormalized table containing plant and utility
names and IDs.
core_eia860__scd_ownership: EIA 860 ownership table.
Returns:
A denormalized version of the EIA 860 ownership table.
"""
- pu_df = denorm_plants_utilities_eia.loc[
+ pu_df = _out_eia__plants_utilities.loc[
:,
[
"plant_id_eia",
@@ -58,21 +58,21 @@ def denorm_ownership_eia860(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_emissions_control_equipment_eia860(
+def out_eia860__yearly_emissions_control_equipment(
core_eia860__scd_emissions_control_equipment: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized version of the EIA 860 emission control equipment table.
Args:
core_eia860__scd_emissions_control_equipment: EIA 860 emissions control equipment table.
- denorm_plants_utilities_eia: Denormalized table containing plant and utility
+ _out_eia__plants_utilities: Denormalized table containing plant and utility
names and IDs.
Returns:
A denormalized version of the EIA 860 emissions control equipment table.
"""
- pu_df = denorm_plants_utilities_eia.loc[
+ pu_df = _out_eia__plants_utilities.loc[
:,
[
"plant_id_eia",
diff --git a/src/pudl/output/eia923.py b/src/pudl/output/eia923.py
index a7b558b038..3786bbd282 100644
--- a/src/pudl/output/eia923.py
+++ b/src/pudl/output/eia923.py
@@ -130,24 +130,24 @@ def _fill_fuel_costs_by_state(
# Simple Denormalized Assets
#####################################################################################
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_generation_eia923(
+def out_eia923__generation(
core_eia923__monthly_generation: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Denormalize the :ref:`core_eia923__monthly_generation` table."""
return denorm_by_gen(
core_eia923__monthly_generation,
- pu=denorm_plants_utilities_eia,
+ pu=_out_eia__plants_utilities,
bga=core_eia860__assn_boiler_generator,
)
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_generation_fuel_combined_eia923(
+def out_eia923__generation_fuel_combined(
core_eia923__monthly_generation_fuel: pd.DataFrame,
core_eia923__monthly_generation_fuel_nuclear: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Denormalize the `generation_fuel_combined_eia923` table.
@@ -212,13 +212,13 @@ def denorm_generation_fuel_combined_eia923(
.sort_values(primary_key)
.reset_index(drop=True)
)
- return denorm_by_plant(gf, pu=denorm_plants_utilities_eia)
+ return denorm_by_plant(gf, pu=_out_eia__plants_utilities)
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def denorm_boiler_fuel_eia923(
+def out_eia923__boiler_fuel(
core_eia923__monthly_boiler_fuel: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Denormalize the :ref:`core_eia923__monthly_boiler_fuel` table.
@@ -232,7 +232,7 @@ def denorm_boiler_fuel_eia923(
)
return denorm_by_boil(
core_eia923__monthly_boiler_fuel,
- pu=denorm_plants_utilities_eia,
+ pu=_out_eia__plants_utilities,
bga=core_eia860__assn_boiler_generator,
)
@@ -255,11 +255,11 @@ def denorm_boiler_fuel_eia923(
},
compute_kind="Python",
)
-def denorm_fuel_receipts_costs_eia923(
+def out_eia923__fuel_receipts_costs(
context,
core_eia923__monthly_fuel_receipts_costs: pd.DataFrame,
core_eia923__entity_coalmine: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
state_average_fuel_costs_eia: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
) -> pd.DataFrame:
@@ -312,7 +312,7 @@ def denorm_fuel_receipts_costs_eia923(
frc_df["fuel_consumed_mmbtu"] * frc_df["fuel_cost_per_mmbtu"]
)
- return denorm_by_plant(frc_df, pu=denorm_plants_utilities_eia)
+ return denorm_by_plant(frc_df, pu=_out_eia__plants_utilities)
#####################################################################################
@@ -326,20 +326,20 @@ def time_aggregated_eia923_asset_factory(
agg_freqs = {"AS": "yearly", "MS": "monthly"}
@asset(
- name=f"denorm_generation_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_generation",
io_manager_key=io_manager_key,
compute_kind="Python",
)
def generation_agg_eia923(
- denorm_generation_eia923: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ out_eia923__generation: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
- """Aggregate :ref:`denorm_generation_eia923` monthly or annually."""
+ """Aggregate :ref:`out_eia923__generation` monthly or annually."""
return (
# Create a date index for grouping based on freq
- denorm_generation_eia923.set_index(
- pd.DatetimeIndex(denorm_generation_eia923.report_date)
+ out_eia923__generation.set_index(
+ pd.DatetimeIndex(out_eia923__generation.report_date)
)
.groupby(
by=["plant_id_eia", "generator_id", pd.Grouper(freq=freq)],
@@ -349,25 +349,25 @@ def generation_agg_eia923(
.reset_index()
.pipe(
denorm_by_gen,
- pu=denorm_plants_utilities_eia,
+ pu=_out_eia__plants_utilities,
bga=core_eia860__assn_boiler_generator,
)
)
@asset(
- name=f"denorm_generation_fuel_combined_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_generation_fuel_combined",
io_manager_key=io_manager_key,
compute_kind="Python",
)
def generation_fuel_combined_agg_eia923(
- denorm_generation_fuel_combined_eia923: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ out_eia923__generation_fuel_combined: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Aggregate :ref:`generation_fuel_combined_eia923` monthly or annually."""
gf_both = (
# Create a date index for temporal resampling:
- denorm_generation_fuel_combined_eia923.set_index(
- pd.DatetimeIndex(denorm_generation_fuel_combined_eia923.report_date)
+ out_eia923__generation_fuel_combined.set_index(
+ pd.DatetimeIndex(out_eia923__generation_fuel_combined.report_date)
)
.groupby(
by=[
@@ -418,29 +418,29 @@ def generation_fuel_combined_agg_eia923(
]
)
.reset_index(drop=True)
- .pipe(denorm_by_plant, pu=denorm_plants_utilities_eia)
+ .pipe(denorm_by_plant, pu=_out_eia__plants_utilities)
)
@asset(
- name=f"denorm_boiler_fuel_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_boiler_fuel",
io_manager_key=io_manager_key,
compute_kind="Python",
)
def boiler_fuel_agg_eia923(
- denorm_boiler_fuel_eia923: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ out_eia923__boiler_fuel: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Aggregate :ref:`core_eia923__monthly_boiler_fuel` monthly or annually."""
# In order to calculate the weighted average sulfur
# content and ash content we need to calculate these totals.
return (
- denorm_boiler_fuel_eia923.assign(
+ out_eia923__boiler_fuel.assign(
total_sulfur_content=lambda x: x.fuel_consumed_units
* x.sulfur_content_pct,
total_ash_content=lambda x: x.fuel_consumed_units * x.ash_content_pct,
)
- .set_index(pd.DatetimeIndex(denorm_boiler_fuel_eia923.report_date))
+ .set_index(pd.DatetimeIndex(out_eia923__boiler_fuel.report_date))
.groupby(
by=[
"plant_id_eia",
@@ -473,24 +473,24 @@ def boiler_fuel_agg_eia923(
.reset_index()
.pipe(
denorm_by_boil,
- pu=denorm_plants_utilities_eia,
+ pu=_out_eia__plants_utilities,
bga=core_eia860__assn_boiler_generator,
)
)
@asset(
- name=f"denorm_fuel_receipts_costs_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_fuel_receipts_costs",
io_manager_key=io_manager_key,
compute_kind="Python",
)
def fuel_receipts_costs_agg_eia923(
- denorm_fuel_receipts_costs_eia923: pd.DataFrame,
- denorm_plants_utilities_eia: pd.DataFrame,
+ out_eia923__fuel_receipts_costs: pd.DataFrame,
+ _out_eia__plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Aggregate the :ref:`core_eia923__monthly_fuel_receipts_costs` table monthly or annually."""
return (
- denorm_fuel_receipts_costs_eia923.set_index(
- pd.DatetimeIndex(denorm_fuel_receipts_costs_eia923.report_date)
+ out_eia923__fuel_receipts_costs.set_index(
+ pd.DatetimeIndex(out_eia923__fuel_receipts_costs.report_date)
)
.assign(
total_ash_content=lambda x: x.ash_content_pct * x.fuel_received_units,
@@ -545,7 +545,7 @@ def fuel_receipts_costs_agg_eia923(
]
)
.reset_index()
- .pipe(denorm_by_plant, pu=denorm_plants_utilities_eia)
+ .pipe(denorm_by_plant, pu=_out_eia__plants_utilities)
)
return [
diff --git a/src/pudl/output/ferc714.py b/src/pudl/output/ferc714.py
index 485f4673ee..ab0150cbbd 100644
--- a/src/pudl/output/ferc714.py
+++ b/src/pudl/output/ferc714.py
@@ -415,7 +415,7 @@ def annualized_respondents_ferc714(
def categorized_respondents_ferc714(
context,
core_ferc714__respondent_id: pd.DataFrame,
- denorm_utilities_eia: pd.DataFrame,
+ out_eia__yearly_utilities: pd.DataFrame,
core_eia861__yearly_service_territory: pd.DataFrame,
core_eia861__yearly_balancing_authority: pd.DataFrame,
annualized_respondents_ferc714: pd.DataFrame,
@@ -436,7 +436,7 @@ def categorized_respondents_ferc714(
core_eia861__yearly_balancing_authority
)
utilids_all_eia = utility_ids_all_eia(
- denorm_utilities_eia, core_eia861__yearly_service_territory
+ out_eia__yearly_utilities, core_eia861__yearly_service_territory
)
categorized = categorize_eia_code(
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index e887da23ef..5e91ec7cda 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -160,15 +160,15 @@ def _register_output_methods(self: Self):
"denorm_plant_in_service_ferc1": "plant_in_service_ferc1",
"denorm_plants_all_ferc1": "plants_all_ferc1",
# denorm_eia (data comes from multiple EIA forms)
- "denorm_plants_eia": "plants_eia860",
- "denorm_utilities_eia": "utils_eia860",
- "denorm_boilers_eia": "boil_eia860",
- "denorm_generators_eia": "gens_eia860",
- "denorm_plants_utilities_eia": "pu_eia860",
+ "out_eia__yearly_plants": "plants_eia860",
+ "out_eia__yearly_utilities": "utils_eia860",
+ "out_eia__yearly_boilers": "boil_eia860",
+ "out_eia__yearly_generators": "gens_eia860",
+ "_out_eia__plants_utilities": "pu_eia860",
# eia860 (denormalized, data primarily from EIA-860)
- "denorm_ownership_eia860": "own_eia860",
+ "out_eia860__yearly_ownership": "own_eia860",
"core_eia860__assn_boiler_generator": "bga_eia860",
- "denorm_emissions_control_equipment_eia860": "denorm_emissions_control_equipment_eia860",
+ "out_eia860__yearly_emissions_control_equipment": "denorm_emissions_control_equipment_eia860",
"core_eia860__yearly_boiler_emissions_control_equipment_assn": "boiler_emissions_control_equipment_assn_eia860",
"core_eia860__scd_emissions_control_equipment": "emissions_control_equipment_eia860",
"core_eia860__assn_boiler_stack_flue": "boiler_stack_flue_assn_eia860",
@@ -204,10 +204,10 @@ def _register_output_methods(self: Self):
"core_eia861__yearly_balancing_authority": "balancing_authority_eia861",
"core_eia861__assn_balancing_authority": "balancing_authority_assn_eia861",
# eia923 (denormalized, data primarily from EIA-923)
- "denorm_boiler_fuel_AGG_eia923": "bf_eia923",
- "denorm_fuel_receipts_costs_AGG_eia923": "frc_eia923",
- "denorm_generation_AGG_eia923": "gen_original_eia923",
- "denorm_generation_fuel_combined_AGG_eia923": "gf_eia923",
+ "out_eia923__AGG_boiler_fuel": "bf_eia923",
+ "out_eia923__AGG_fuel_receipts_costs": "frc_eia923",
+ "out_eia__AGG_generators": "gen_original_eia923",
+ "out_eia923__AGG_generation_fuel_combined": "gf_eia923",
# ferc714
"core_ferc714__respondent_id": "respondent_id_ferc714",
"core_ferc714__hourly_demand_pa": "demand_hourly_pa_ferc714",
diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py
index b502464b39..439be1c69f 100644
--- a/test/validate/eia_test.py
+++ b/test/validate/eia_test.py
@@ -130,9 +130,7 @@ def test_minmax_rows(
),
(
"gf_eia923",
- Resource.from_id(
- "denorm_generation_fuel_combined_eia923"
- ).schema.primary_key,
+ Resource.from_id("out_eia923__generation_fuel_combined").schema.primary_key,
),
(
"own_eia860",
@@ -144,7 +142,7 @@ def test_minmax_rows(
),
(
"pu_eia860",
- Resource.from_id("denorm_plants_utilities_eia").schema.primary_key,
+ Resource.from_id("_out_eia__plants_utilities").schema.primary_key,
),
(
"utils_eia860",
@@ -154,7 +152,7 @@ def test_minmax_rows(
"denorm_emissions_control_equipment_eia860",
(
Resource.from_id(
- "denorm_emissions_control_equipment_eia860"
+ "out_eia860__yearly_emissions_control_equipment"
).schema.primary_key
),
),
From 00ce1e9335e28e443bee67297d2598f1480b9680 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 15 Sep 2023 14:36:54 -0400
Subject: [PATCH 14/70] Recreate ferc rename migration
---
...1c2c961a7be5_rename_ferc_output_assets.py} | 830 +++++++++---------
1 file changed, 415 insertions(+), 415 deletions(-)
rename migrations/versions/{660af87f81c5_rename_ferc1_output_assets.py => 1c2c961a7be5_rename_ferc_output_assets.py} (83%)
diff --git a/migrations/versions/660af87f81c5_rename_ferc1_output_assets.py b/migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py
similarity index 83%
rename from migrations/versions/660af87f81c5_rename_ferc1_output_assets.py
rename to migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py
index 4efd02354d..ab18d0278a 100644
--- a/migrations/versions/660af87f81c5_rename_ferc1_output_assets.py
+++ b/migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py
@@ -1,16 +1,16 @@
-"""Rename ferc1 output assets
+"""Rename ferc output assets
-Revision ID: 660af87f81c5
-Revises: 947f3413295c
-Create Date: 2023-09-13 16:23:27.596939
+Revision ID: 1c2c961a7be5
+Revises: 2ba971d7e675
+Create Date: 2023-09-15 14:34:47.739335
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
-revision = '660af87f81c5'
-down_revision = '947f3413295c'
+revision = '1c2c961a7be5'
+down_revision = '2ba971d7e675'
branch_labels = None
depends_on = None
@@ -29,8 +29,8 @@ def upgrade() -> None:
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets'))
)
op.create_table('out_ferc1__yearly_balance_sheet_liabilities',
@@ -45,8 +45,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities'))
)
op.create_table('out_ferc1__yearly_cash_flow',
@@ -59,8 +59,8 @@ def upgrade() -> None:
sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flow'))
)
op.create_table('out_ferc1__yearly_depreciation_amortization_summary',
@@ -73,8 +73,8 @@ def upgrade() -> None:
sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_amortization_summary'))
)
op.create_table('out_ferc1__yearly_electric_energy_dispositions',
@@ -86,8 +86,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_electric_energy_dispositions'))
)
op.create_table('out_ferc1__yearly_electric_energy_sources',
@@ -99,8 +99,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_electric_energy_sources'))
)
op.create_table('out_ferc1__yearly_electric_operating_expenses',
@@ -113,8 +113,8 @@ def upgrade() -> None:
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_electric_operating_expenses'))
)
op.create_table('out_ferc1__yearly_electric_operating_revenues',
@@ -129,8 +129,8 @@ def upgrade() -> None:
sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_electric_operating_revenues'))
)
op.create_table('out_ferc1__yearly_electric_plant_depreciation_changes',
@@ -146,8 +146,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_changes'))
)
op.create_table('out_ferc1__yearly_electric_plant_depreciation_functional',
@@ -163,8 +163,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_functional'))
)
op.create_table('out_ferc1__yearly_electricity_sales_by_rate_schedule',
@@ -181,8 +181,8 @@ def upgrade() -> None:
sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('out_ferc1__yearly_income_statement',
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
@@ -196,8 +196,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statement'))
)
op.create_table('out_ferc1__yearly_other_regulatory_liabilities',
@@ -211,8 +211,8 @@ def upgrade() -> None:
sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('out_ferc1__yearly_plant_in_service',
sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
@@ -229,8 +229,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service'))
)
op.create_table('out_ferc1__yearly_purchased_power',
@@ -253,8 +253,8 @@ def upgrade() -> None:
sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('out_ferc1__yearly_retained_earnings',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -268,8 +268,8 @@ def upgrade() -> None:
sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings'))
)
op.create_table('out_ferc1__yearly_transmission_statistics',
@@ -294,8 +294,8 @@ def upgrade() -> None:
sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_pudl_utilities_pudl'))
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
op.create_table('out_ferc1__yearly_utility_plant_summary',
sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
@@ -308,8 +308,8 @@ def upgrade() -> None:
sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_ferc1_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary'))
)
op.create_table('_out_ferc1__yearly_hydro_plants',
@@ -355,9 +355,9 @@ def upgrade() -> None:
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('plant_type', sa.Text(), nullable=True),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydro_plants'))
)
op.create_table('_out_ferc1__yearly_plants_utilities',
@@ -366,9 +366,9 @@ def upgrade() -> None:
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
)
op.create_table('_out_ferc1__yearly_pumped_storage_plants',
@@ -418,9 +418,9 @@ def upgrade() -> None:
sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants'))
)
op.create_table('_out_ferc1__yearly_small_plants',
@@ -446,9 +446,9 @@ def upgrade() -> None:
sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
sa.Column('plant_type', sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants'))
)
op.create_table('_out_ferc1__yearly_steam_plants',
@@ -507,9 +507,9 @@ def upgrade() -> None:
sa.Column('plant_type', sa.Text(), nullable=True),
sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants'))
)
op.create_table('out_ferc1__yearly_all_plants',
@@ -591,9 +591,9 @@ def upgrade() -> None:
sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
)
op.create_table('out_ferc1__yearly_fuel',
@@ -613,9 +613,9 @@ def upgrade() -> None:
sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_fuel'))
)
op.create_table('out_ferc1__yearly_fuel_by_plant',
@@ -639,125 +639,139 @@ def upgrade() -> None:
sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_plant_id_pudl_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_ferc1_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_pudl_utilities_pudl')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_fuel_by_plant'))
)
- op.drop_table('denorm_electric_energy_dispositions_ferc1')
- op.drop_table('denorm_plants_all_ferc1')
- op.drop_table('denorm_electric_operating_expenses_ferc1')
- op.drop_table('denorm_electric_plant_depreciation_functional_ferc1')
- op.drop_table('denorm_income_statement_ferc1')
- op.drop_table('denorm_electric_plant_depreciation_changes_ferc1')
+ op.drop_table('denorm_plants_small_ferc1')
op.drop_table('denorm_plant_in_service_ferc1')
op.drop_table('denorm_plants_steam_ferc1')
- op.drop_table('denorm_depreciation_amortization_summary_ferc1')
- op.drop_table('denorm_utility_plant_summary_ferc1')
+ op.drop_table('denorm_income_statement_ferc1')
op.drop_table('denorm_other_regulatory_liabilities_ferc1')
- op.drop_table('denorm_balance_sheet_liabilities_ferc1')
+ op.drop_table('denorm_utility_plant_summary_ferc1')
+ op.drop_table('denorm_transmission_statistics_ferc1')
+ op.drop_table('denorm_electricity_sales_by_rate_schedule_ferc1')
+ op.drop_table('denorm_plants_hydro_ferc1')
+ op.drop_table('denorm_electric_operating_expenses_ferc1')
+ op.drop_table('denorm_cash_flow_ferc1')
op.drop_table('denorm_purchased_power_ferc1')
+ op.drop_table('denorm_plants_all_ferc1')
op.drop_table('denorm_plants_pumped_storage_ferc1')
- op.drop_table('denorm_plants_small_ferc1')
- op.drop_table('denorm_plants_hydro_ferc1')
op.drop_table('denorm_fuel_by_plant_ferc1')
- op.drop_table('denorm_cash_flow_ferc1')
+ op.drop_table('denorm_electric_operating_revenues_ferc1')
+ op.drop_table('denorm_electric_plant_depreciation_functional_ferc1')
+ op.drop_table('denorm_electric_energy_dispositions_ferc1')
op.drop_table('denorm_balance_sheet_assets_ferc1')
- op.drop_table('denorm_transmission_statistics_ferc1')
op.drop_table('denorm_plants_utilities_ferc1')
- op.drop_table('denorm_fuel_ferc1')
- op.drop_table('denorm_electric_energy_sources_ferc1')
- op.drop_table('denorm_electric_operating_revenues_ferc1')
+ op.drop_table('denorm_balance_sheet_liabilities_ferc1')
op.drop_table('denorm_retained_earnings_ferc1')
- op.drop_table('denorm_electricity_sales_by_rate_schedule_ferc1')
+ op.drop_table('denorm_depreciation_amortization_summary_ferc1')
+ op.drop_table('denorm_electric_plant_depreciation_changes_ferc1')
+ op.drop_table('denorm_electric_energy_sources_ferc1')
+ op.drop_table('denorm_fuel_ferc1')
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
+ op.create_table('denorm_fuel_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('rate_schedule_type', sa.TEXT(), nullable=True),
- sa.Column('billing_status', sa.TEXT(), nullable=True),
- sa.Column('rate_schedule_description', sa.TEXT(), nullable=True),
- sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
- sa.Column('kwh_per_customer', sa.FLOAT(), nullable=True),
- sa.Column('revenue_per_kwh', sa.FLOAT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_total_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_unit_burned', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_unit_delivered', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_units', sa.VARCHAR(length=6), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_fuel_ferc1')
+ )
+ op.create_table('denorm_electric_energy_sources_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('energy_source_type', sa.TEXT(), nullable=False),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_utilities_pudl')
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name='pk_denorm_electric_energy_sources_ferc1')
)
- op.create_table('denorm_retained_earnings_ferc1',
+ op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('depreciation_type', sa.TEXT(), nullable=False),
+ sa.Column('plant_status', sa.TEXT(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('earnings_type', sa.TEXT(), nullable=False),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
sa.Column('balance', sa.TEXT(), nullable=True),
sa.Column('ferc_account', sa.TEXT(), nullable=True),
sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_retained_earnings_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_retained_earnings_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name='pk_denorm_retained_earnings_ferc1')
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_changes_ferc1')
)
- op.create_table('denorm_electric_operating_revenues_ferc1',
+ op.create_table('denorm_depreciation_amortization_summary_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('revenue_type', sa.TEXT(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
- sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
+ sa.Column('plant_function', sa.TEXT(), nullable=False),
+ sa.Column('ferc_account_label', sa.TEXT(), nullable=False),
sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name='pk_denorm_electric_operating_revenues_ferc1')
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name='pk_denorm_depreciation_amortization_summary_ferc1')
)
- op.create_table('denorm_electric_energy_sources_ferc1',
+ op.create_table('denorm_retained_earnings_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('energy_source_type', sa.TEXT(), nullable=False),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name='pk_denorm_electric_energy_sources_ferc1')
+ sa.Column('earnings_type', sa.TEXT(), nullable=False),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_retained_earnings_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_retained_earnings_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name='pk_denorm_retained_earnings_ferc1')
)
- op.create_table('denorm_fuel_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ op.create_table('denorm_balance_sheet_liabilities_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_total_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_unit_burned', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_unit_delivered', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_units', sa.VARCHAR(length=6), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_fuel_ferc1')
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('liability_type', sa.TEXT(), nullable=False),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name='pk_denorm_balance_sheet_liabilities_ferc1')
)
op.create_table('denorm_plants_utilities_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
@@ -765,36 +779,11 @@ def downgrade() -> None:
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_utilities_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_utilities_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name='pk_denorm_plants_utilities_ferc1')
)
- op.create_table('denorm_transmission_statistics_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('start_point', sa.TEXT(), nullable=True),
- sa.Column('end_point', sa.TEXT(), nullable=True),
- sa.Column('operating_voltage_kv', sa.FLOAT(), nullable=True),
- sa.Column('designed_voltage_kv', sa.FLOAT(), nullable=True),
- sa.Column('supporting_structure_type', sa.TEXT(), nullable=True),
- sa.Column('transmission_line_length_miles', sa.FLOAT(), nullable=True),
- sa.Column('transmission_line_and_structures_length_miles', sa.FLOAT(), nullable=True),
- sa.Column('num_transmission_circuits', sa.INTEGER(), nullable=True),
- sa.Column('conductor_size_and_material', sa.TEXT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
- sa.Column('capex_other', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_transmission_statistics_ferc1_utility_id_pudl_utilities_pudl')
- )
op.create_table('denorm_balance_sheet_assets_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=False),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
@@ -807,23 +796,55 @@ def downgrade() -> None:
sa.Column('ferc_account', sa.TEXT(), nullable=True),
sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name='pk_denorm_balance_sheet_assets_ferc1')
)
- op.create_table('denorm_cash_flow_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
+ op.create_table('denorm_electric_energy_dispositions_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('energy_disposition_type', sa.TEXT(), nullable=False),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name='pk_denorm_electric_energy_dispositions_ferc1')
+ )
+ op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('amount_type', sa.TEXT(), nullable=False),
- sa.Column('amount', sa.FLOAT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('plant_function', sa.TEXT(), nullable=False),
+ sa.Column('plant_status', sa.TEXT(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_cash_flow_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_cash_flow_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name='pk_denorm_cash_flow_ferc1')
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_functional_ferc1')
+ )
+ op.create_table('denorm_electric_operating_revenues_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('revenue_type', sa.TEXT(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name='pk_denorm_electric_operating_revenues_ferc1')
)
op.create_table('denorm_fuel_by_plant_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=False),
@@ -846,12 +867,12 @@ def downgrade() -> None:
sa.Column('primary_fuel_by_mmbtu', sa.TEXT(), nullable=True),
sa.Column('waste_fraction_cost', sa.FLOAT(), nullable=True),
sa.Column('waste_fraction_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name='pk_denorm_fuel_by_plant_ferc1')
)
- op.create_table('denorm_plants_hydro_ferc1',
+ op.create_table('denorm_plants_pumped_storage_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=True),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
@@ -862,72 +883,183 @@ def downgrade() -> None:
sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
sa.Column('capex_land', sa.FLOAT(), nullable=True),
sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
sa.Column('capex_roads', sa.FLOAT(), nullable=True),
sa.Column('capex_structures', sa.FLOAT(), nullable=True),
sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
sa.Column('installation_year', sa.INTEGER(), nullable=True),
- sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
sa.Column('opex_dams', sa.FLOAT(), nullable=True),
sa.Column('opex_electric', sa.FLOAT(), nullable=True),
sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
- sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
sa.Column('opex_operations', sa.FLOAT(), nullable=True),
sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
sa.Column('opex_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
sa.Column('opex_rents', sa.FLOAT(), nullable=True),
sa.Column('opex_structures', sa.FLOAT(), nullable=True),
sa.Column('opex_total', sa.FLOAT(), nullable=True),
sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_type', sa.TEXT(), nullable=True),
sa.Column('project_num', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_hydro_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_hydro_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_hydro_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_hydro_ferc1')
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_pumped_storage_ferc1')
)
- op.create_table('denorm_plants_small_ferc1',
+ op.create_table('denorm_plants_all_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=True),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
+ sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_addition', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_addition_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_kw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mw_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capex_annual_per_mwh_rolling', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capex_structures', sa.FLOAT(), nullable=True),
sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wo_retirement_total', sa.FLOAT(), nullable=True),
+ sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type', sa.TEXT(), nullable=True),
- sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('not_water_limited_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('opex_allowances', sa.FLOAT(), nullable=True),
+ sa.Column('opex_boiler', sa.FLOAT(), nullable=True),
+ sa.Column('opex_coolants', sa.FLOAT(), nullable=True),
+ sa.Column('opex_electric', sa.FLOAT(), nullable=True),
+ sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_power', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_steam', sa.FLOAT(), nullable=True),
+ sa.Column('opex_nonfuel_per_mwh', sa.FLOAT(), nullable=True),
sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_steam', sa.FLOAT(), nullable=True),
+ sa.Column('opex_steam_other', sa.FLOAT(), nullable=True),
+ sa.Column('opex_structures', sa.FLOAT(), nullable=True),
sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
+ sa.Column('opex_transfer', sa.FLOAT(), nullable=True),
sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
+ sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
sa.Column('plant_type', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_small_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_small_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_small_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_small_ferc1')
+ sa.Column('record_id', sa.TEXT(), nullable=False),
+ sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type', sa.TEXT(), nullable=True),
+ sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
+ sa.Column('capex_roads', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('opex_dams', sa.FLOAT(), nullable=True),
+ sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
+ sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
+ sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
+ sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_license_id', sa.TEXT(), nullable=True),
+ sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
+ sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
+ sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
+ sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_all_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_all_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_all_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_all_ferc1')
+ )
+ op.create_table('denorm_purchased_power_ferc1',
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('seller_name', sa.TEXT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('billing_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('delivered_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('demand_charges', sa.FLOAT(), nullable=True),
+ sa.Column('energy_charges', sa.FLOAT(), nullable=True),
+ sa.Column('non_coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
+ sa.Column('other_charges', sa.FLOAT(), nullable=True),
+ sa.Column('purchase_type_code', sa.TEXT(), nullable=True),
+ sa.Column('purchased_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('received_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('tariff', sa.TEXT(), nullable=True),
+ sa.Column('total_settlement', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name='fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_purchased_power_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_purchased_power_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_cash_flow_ferc1',
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('amount_type', sa.TEXT(), nullable=False),
+ sa.Column('amount', sa.FLOAT(), nullable=True),
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_cash_flow_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_cash_flow_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name='pk_denorm_cash_flow_ferc1')
+ )
+ op.create_table('denorm_electric_operating_expenses_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('expense_type', sa.TEXT(), nullable=False),
+ sa.Column('record_id', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name='pk_denorm_electric_operating_expenses_ferc1')
)
- op.create_table('denorm_plants_pumped_storage_ferc1',
+ op.create_table('denorm_plants_hydro_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=True),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
@@ -938,99 +1070,84 @@ def downgrade() -> None:
sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
+ sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
sa.Column('capex_land', sa.FLOAT(), nullable=True),
sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
sa.Column('capex_roads', sa.FLOAT(), nullable=True),
sa.Column('capex_structures', sa.FLOAT(), nullable=True),
sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
sa.Column('opex_dams', sa.FLOAT(), nullable=True),
sa.Column('opex_electric', sa.FLOAT(), nullable=True),
sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
+ sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
sa.Column('opex_operations', sa.FLOAT(), nullable=True),
sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
sa.Column('opex_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
sa.Column('opex_rents', sa.FLOAT(), nullable=True),
sa.Column('opex_structures', sa.FLOAT(), nullable=True),
sa.Column('opex_total', sa.FLOAT(), nullable=True),
sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_type', sa.TEXT(), nullable=True),
sa.Column('project_num', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_pumped_storage_ferc1')
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_hydro_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_hydro_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_hydro_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_hydro_ferc1')
)
- op.create_table('denorm_purchased_power_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
+ op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('seller_name', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('rate_schedule_type', sa.TEXT(), nullable=True),
+ sa.Column('billing_status', sa.TEXT(), nullable=True),
+ sa.Column('rate_schedule_description', sa.TEXT(), nullable=True),
+ sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('dollar_value', sa.FLOAT(), nullable=True),
+ sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
+ sa.Column('kwh_per_customer', sa.FLOAT(), nullable=True),
+ sa.Column('revenue_per_kwh', sa.FLOAT(), nullable=True),
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('billing_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('delivered_mwh', sa.FLOAT(), nullable=True),
- sa.Column('demand_charges', sa.FLOAT(), nullable=True),
- sa.Column('energy_charges', sa.FLOAT(), nullable=True),
- sa.Column('non_coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('other_charges', sa.FLOAT(), nullable=True),
- sa.Column('purchase_type_code', sa.TEXT(), nullable=True),
- sa.Column('purchased_mwh', sa.FLOAT(), nullable=True),
- sa.Column('received_mwh', sa.FLOAT(), nullable=True),
- sa.Column('tariff', sa.TEXT(), nullable=True),
- sa.Column('total_settlement', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name='fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_purchased_power_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_purchased_power_ferc1_utility_id_pudl_utilities_pudl')
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
)
- op.create_table('denorm_balance_sheet_liabilities_ferc1',
+ op.create_table('denorm_transmission_statistics_ferc1',
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('liability_type', sa.TEXT(), nullable=False),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name='pk_denorm_balance_sheet_liabilities_ferc1')
- )
- op.create_table('denorm_other_regulatory_liabilities_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('description', sa.TEXT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('increase_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
- sa.Column('account_detail', sa.TEXT(), nullable=True),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_utilities_pudl')
+ sa.Column('start_point', sa.TEXT(), nullable=True),
+ sa.Column('end_point', sa.TEXT(), nullable=True),
+ sa.Column('operating_voltage_kv', sa.FLOAT(), nullable=True),
+ sa.Column('designed_voltage_kv', sa.FLOAT(), nullable=True),
+ sa.Column('supporting_structure_type', sa.TEXT(), nullable=True),
+ sa.Column('transmission_line_length_miles', sa.FLOAT(), nullable=True),
+ sa.Column('transmission_line_and_structures_length_miles', sa.FLOAT(), nullable=True),
+ sa.Column('num_transmission_circuits', sa.INTEGER(), nullable=True),
+ sa.Column('conductor_size_and_material', sa.TEXT(), nullable=True),
+ sa.Column('capex_land', sa.FLOAT(), nullable=True),
+ sa.Column('capex_other', sa.FLOAT(), nullable=True),
+ sa.Column('capex_total', sa.FLOAT(), nullable=True),
+ sa.Column('opex_operations', sa.FLOAT(), nullable=True),
+ sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
+ sa.Column('opex_rents', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_transmission_statistics_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
)
op.create_table('denorm_utility_plant_summary_ferc1',
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
@@ -1043,23 +1160,39 @@ def downgrade() -> None:
sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
sa.Column('ending_balance', sa.FLOAT(), nullable=True),
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name='pk_denorm_utility_plant_summary_ferc1')
)
- op.create_table('denorm_depreciation_amortization_summary_ferc1',
+ op.create_table('denorm_other_regulatory_liabilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('description', sa.TEXT(), nullable=True),
+ sa.Column('ending_balance', sa.FLOAT(), nullable=True),
+ sa.Column('starting_balance', sa.FLOAT(), nullable=True),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
+ sa.Column('account_detail', sa.TEXT(), nullable=True),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_income_statement_ferc1',
sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_function', sa.TEXT(), nullable=False),
- sa.Column('ferc_account_label', sa.TEXT(), nullable=False),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
+ sa.Column('utility_type', sa.TEXT(), nullable=False),
+ sa.Column('income_type', sa.TEXT(), nullable=False),
sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name='pk_denorm_depreciation_amortization_summary_ferc1')
+ sa.Column('balance', sa.TEXT(), nullable=True),
+ sa.Column('ferc_account', sa.TEXT(), nullable=True),
+ sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_income_statement_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_income_statement_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name='pk_denorm_income_statement_ferc1')
)
op.create_table('denorm_plants_steam_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=True),
@@ -1117,9 +1250,9 @@ def downgrade() -> None:
sa.Column('plant_type', sa.TEXT(), nullable=True),
sa.Column('record_id', sa.TEXT(), nullable=False),
sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_steam_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_steam_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_steam_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_steam_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_steam_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_steam_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_steam_ferc1')
)
op.create_table('denorm_plant_in_service_ferc1',
@@ -1137,170 +1270,37 @@ def downgrade() -> None:
sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
sa.Column('starting_balance', sa.FLOAT(), nullable=True),
sa.Column('transfers', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_plant_in_service_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plant_in_service_ferc1_utility_id_pudl_utilities_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_plant_in_service_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plant_in_service_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name='pk_denorm_plant_in_service_ferc1')
)
- op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('depreciation_type', sa.TEXT(), nullable=False),
- sa.Column('plant_status', sa.TEXT(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_changes_ferc1')
- )
- op.create_table('denorm_income_statement_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('income_type', sa.TEXT(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_income_statement_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_income_statement_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name='pk_denorm_income_statement_ferc1')
- )
- op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('plant_function', sa.TEXT(), nullable=False),
- sa.Column('plant_status', sa.TEXT(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_functional_ferc1')
- )
- op.create_table('denorm_electric_operating_expenses_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('expense_type', sa.TEXT(), nullable=False),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name='pk_denorm_electric_operating_expenses_ferc1')
- )
- op.create_table('denorm_plants_all_ferc1',
+ op.create_table('denorm_plants_small_ferc1',
sa.Column('report_year', sa.INTEGER(), nullable=True),
sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
- sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('record_id', sa.TEXT(), nullable=False),
sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_addition', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_addition_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_kw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mw_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mwh_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_structures', sa.FLOAT(), nullable=True),
sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_wo_retirement_total', sa.FLOAT(), nullable=True),
- sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type', sa.TEXT(), nullable=True),
+ sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('not_water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('opex_allowances', sa.FLOAT(), nullable=True),
- sa.Column('opex_boiler', sa.FLOAT(), nullable=True),
- sa.Column('opex_coolants', sa.FLOAT(), nullable=True),
- sa.Column('opex_electric', sa.FLOAT(), nullable=True),
- sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_power', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_steam', sa.FLOAT(), nullable=True),
- sa.Column('opex_nonfuel_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_steam', sa.FLOAT(), nullable=True),
- sa.Column('opex_steam_other', sa.FLOAT(), nullable=True),
- sa.Column('opex_structures', sa.FLOAT(), nullable=True),
+ sa.Column('opex_total', sa.FLOAT(), nullable=True),
sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_transfer', sa.FLOAT(), nullable=True),
sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
sa.Column('plant_type', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type', sa.TEXT(), nullable=True),
- sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
- sa.Column('capex_roads', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('opex_dams', sa.FLOAT(), nullable=True),
- sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
- sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
- sa.Column('ferc_license_id', sa.TEXT(), nullable=True),
- sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
- sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
- sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
- sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['plants_pudl.plant_id_pudl'], name='fk_denorm_plants_all_ferc1_plant_id_pudl_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['plants_ferc1.utility_id_ferc1', 'plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_all_ferc1_utility_id_ferc1_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_all_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_all_ferc1')
- )
- op.create_table('denorm_electric_energy_dispositions_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('energy_disposition_type', sa.TEXT(), nullable=False),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name='pk_denorm_electric_energy_dispositions_ferc1')
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_small_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_small_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_small_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_small_ferc1')
)
op.drop_table('out_ferc1__yearly_fuel_by_plant')
op.drop_table('out_ferc1__yearly_fuel')
From 34dba800d31508f93e043acae4173269aae054da Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 15 Sep 2023 14:43:11 -0400
Subject: [PATCH 15/70] Add docs cross ref fix for intermediate assets
---
docs/templates/package.rst.jinja | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/templates/package.rst.jinja b/docs/templates/package.rst.jinja
index 7a450b53cb..48bd4854a9 100644
--- a/docs/templates/package.rst.jinja
+++ b/docs/templates/package.rst.jinja
@@ -7,7 +7,7 @@ Please note that tables beginning with "denorm" are temporary tables whose names
metadata will shortly change, as we migrate new tables into our database.
{% for resource in package.resources %}
-.. _{{ resource.name }}:
+.. _{{ resource.name.lstrip("_") }}:
{% include 'resource.rst.jinja' %}
{% endfor %}
From ac79bd5052590794cad0665f68bcbafc879e7d79 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Sun, 17 Sep 2023 14:38:09 -0400
Subject: [PATCH 16/70] Resolve small denorm EIA rename issues
---
docs/release_notes.rst | 2 +-
src/pudl/output/pudltabl.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index c56745a0ee..aa67bc9345 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -114,7 +114,7 @@ Data Coverage
* :ref:`core_eia860__scd_emissions_control_equipment`, see issue :issue:`2338` & PR
:pr:`2561`.
- * :ref:`denorm_emissions_control_equipment_eia860`, see issue :issue:`2338` & PR
+ * :ref:`out_eia860__yearly_emissions_control_equipment`, see issue :issue:`2338` & PR
:pr:`2561`.
* :ref:`core_eia860__yearly_boiler_emissions_control_equipment_assn`, see
:issue:`2338` & PR :pr:`2561`.
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 5e91ec7cda..1816da2107 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -206,7 +206,7 @@ def _register_output_methods(self: Self):
# eia923 (denormalized, data primarily from EIA-923)
"out_eia923__AGG_boiler_fuel": "bf_eia923",
"out_eia923__AGG_fuel_receipts_costs": "frc_eia923",
- "out_eia__AGG_generators": "gen_original_eia923",
+ "out_eia923__AGG_generation": "gen_original_eia923",
"out_eia923__AGG_generation_fuel_combined": "gf_eia923",
# ferc714
"core_ferc714__respondent_id": "respondent_id_ferc714",
@@ -396,7 +396,7 @@ def gen_eia923(self: Self, update: bool = False) -> pd.DataFrame:
resource = Resource.from_id(table_name)
gen_df = gen_df.loc[:, resource.get_field_names()]
else:
- table_name = self._agg_table_name("denorm_generation_AGG_eia923")
+ table_name = self._agg_table_name("out_eia923__AGG_generation")
gen_df = self._get_table_from_db(table_name)
return gen_df
From ce16bbd01dbeff90912fda2ed91aac57a990d7f1 Mon Sep 17 00:00:00 2001
From: thinky
Date: Mon, 18 Sep 2023 10:52:13 -0400
Subject: [PATCH 17/70] Clean up notebooks
---
devtools/python-output-table-conversion-debug.ipynb | 12 ++++++------
notebooks/work-in-progress/better-heatrates.ipynb | 4 ++--
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/devtools/python-output-table-conversion-debug.ipynb b/devtools/python-output-table-conversion-debug.ipynb
index 334d886d58..d43c25d0bf 100644
--- a/devtools/python-output-table-conversion-debug.ipynb
+++ b/devtools/python-output-table-conversion-debug.ipynb
@@ -48,14 +48,14 @@
"\n",
"You can create an asset by creating a new function and adding the `@asset` decorator. For now, the only attribute you should add to the decorator is the `compute_type = \"Python\"`. All this does is add a cute tag to the asset in the dag to let people know how the asset is being processed.\n",
"\n",
- "Next you'll want to figure out what tables the output table depends on. Read through the old output function to see which normalized tables or output functions are being used as inputs to the joins and imputations. Once you have the input table names, add them to the asset function parameters. For example, the `utilities_eia860()` function merges `utilities_entity_eia`, `utilities_eia860`, and `utilities_eia` tables together so the asset would look like this:\n",
+ "Next you'll want to figure out what tables the output table depends on. Read through the old output function to see which normalized tables or output functions are being used as inputs to the joins and imputations. Once you have the input table names, add them to the asset function parameters. For example, the `utilities_eia860()` function merges `core_eia__entity_utilities`, `core_eia860__scd_utilities`, and `core_pudl__assn_utilities_eia` tables together so the asset would look like this:\n",
"\n",
"```python\n",
"@asset(compute_kind=\"Python\")\n",
"def denorm_utilities_eia860(\n",
- " utilities_entity_eia: pd.DataFrame,\n",
- " utilities_eia860: pd.DataFrame,\n",
- " utilities_eia: pd.DataFrame,\n",
+ " core_eia__entity_utilities: pd.DataFrame,\n",
+ " core_eia860__scd_utilities: pd.DataFrame,\n",
+ " core_pudl__assn_utilities_eia: pd.DataFrame,\n",
"):\n",
" ... # joining logic\n",
" return joined_df\n",
@@ -108,9 +108,9 @@
"```python\n",
"@asset(io_manager_key=\"pudl_sqlite_io_manager\", compute_kind=\"Python\")\n",
"def denorm_utilities_eia860(\n",
- " utilities_entity_eia: pd.DataFrame,\n",
+ " core_eia__entity_utilities: pd.DataFrame,\n",
" core_eia860__scd_utilities: pd.DataFrame,\n",
- " utilities_eia: pd.DataFrame,\n",
+ " core_pudl__assn_utilities_eia: pd.DataFrame,\n",
"):\n",
" ... # joining logic\n",
" return joined_df\n",
diff --git a/notebooks/work-in-progress/better-heatrates.ipynb b/notebooks/work-in-progress/better-heatrates.ipynb
index 3756c904b1..4547c5ba3d 100644
--- a/notebooks/work-in-progress/better-heatrates.ipynb
+++ b/notebooks/work-in-progress/better-heatrates.ipynb
@@ -648,7 +648,7 @@
"* `generation_fuel_eia923`\n",
"* `boiler_generator_assn_eia860`\n",
"* `generators_eia860`\n",
- "* `core_eia__entity_generators`\n",
+ "* `generators_entity_eia`\n",
"* `boiler_fuel_eia923`"
]
},
@@ -681,7 +681,7 @@
" prime_mover_code,\n",
" bypass_heat_recovery,\n",
" associated_combined_heat_and_power,\n",
- "FROM core_eia__entity_generators\n",
+ "FROM generators_entity_eia\n",
"\"\"\"\n",
"\n",
"gen_eia923_sql = \"\"\"\n",
From 8a4e6eaa32132c5bbef9465e7b2bf2a64ead2ddf Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 18 Sep 2023 12:42:09 -0400
Subject: [PATCH 18/70] Apply naming convention to allocate generation fuel
assets
---
...694f6af_rename_allocate_gen_fuel_assets.py | 169 ++++++++++++++++++
...95fa9_rename_yearly_generation_fuel_by_.py | 65 +++++++
src/pudl/analysis/allocate_gen_fuel.py | 10 +-
src/pudl/analysis/mcoe.py | 4 +-
src/pudl/etl/__init__.py | 2 +-
.../metadata/resources/allocate_gen_fuel.py | 6 +-
src/pudl/metadata/resources/eia.py | 2 +-
src/pudl/metadata/resources/eia860.py | 14 +-
src/pudl/output/pudltabl.py | 6 +-
9 files changed, 256 insertions(+), 22 deletions(-)
create mode 100644 migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
create mode 100644 migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py
diff --git a/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py b/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
new file mode 100644
index 0000000000..d6de4c55ca
--- /dev/null
+++ b/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
@@ -0,0 +1,169 @@
+"""Rename allocate_gen_fuel assets
+
+Revision ID: 62f1f694f6af
+Revises: c73882df0765
+Create Date: 2023-09-18 12:08:46.028634
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '62f1f694f6af'
+down_revision = 'c73882df0765'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
+ )
+ op.drop_table('generation_fuel_by_generator_yearly_eia923')
+ op.drop_table('generation_fuel_by_generator_energy_source_monthly_eia923')
+ op.drop_table('generation_fuel_by_generator_energy_source_yearly_eia923')
+ op.drop_table('generation_fuel_by_generator_monthly_eia923')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('generation_fuel_by_generator_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_generation_fuel_by_generator_monthly_eia923')
+ )
+ op.create_table('generation_fuel_by_generator_energy_source_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('energy_source_code_num', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name='pk_generation_fuel_by_generator_energy_source_yearly_eia923')
+ )
+ op.create_table('generation_fuel_by_generator_energy_source_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('energy_source_code_num', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name='pk_generation_fuel_by_generator_energy_source_monthly_eia923')
+ )
+ op.create_table('generation_fuel_by_generator_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_generation_fuel_by_generator_yearly_eia923')
+ )
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
+ # ### end Alembic commands ###
diff --git a/migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py b/migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py
new file mode 100644
index 0000000000..a7fad60f14
--- /dev/null
+++ b/migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py
@@ -0,0 +1,65 @@
+"""Rename yearly_generation_fuel_by_generator_energy_source_owner
+
+Revision ID: d4149ca95fa9
+Revises: 62f1f694f6af
+Create Date: 2023-09-18 12:29:19.219934
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'd4149ca95fa9'
+down_revision = '62f1f694f6af'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
+ )
+ op.drop_table('generation_fuel_by_generator_energy_source_owner_yearly_eia923')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('generation_fuel_by_generator_energy_source_owner_yearly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=False),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('energy_source_code_num', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name='pk_generation_fuel_by_generator_energy_source_owner_yearly_eia923')
+ )
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/allocate_gen_fuel.py b/src/pudl/analysis/allocate_gen_fuel.py
index 2407dc9140..511755de1c 100644
--- a/src/pudl/analysis/allocate_gen_fuel.py
+++ b/src/pudl/analysis/allocate_gen_fuel.py
@@ -208,7 +208,7 @@ def allocate_gen_fuel_asset_factory(
raise ValueError(f"freq must be one of {agg_freqs.keys()}, got: {freq}.")
@asset(
- name=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source",
ins={
"gf": AssetIn(
key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_combined"
@@ -256,10 +256,10 @@ def gen_fuel_by_gen_esc(
)
@asset(
- name=f"generation_fuel_by_generator_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator",
ins={
"net_gen_fuel_alloc": AssetIn(
- key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
+ key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source"
),
"pu": AssetIn(key="_out_eia__plants_utilities"),
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
@@ -282,10 +282,10 @@ def gen_fuel_by_gen(
)
@asset(
- name=f"generation_fuel_by_generator_energy_source_owner_{agg_freqs[freq]}_eia923",
+ name=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source_owner",
ins={
"net_gen_fuel_alloc": AssetIn(
- key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
+ key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source"
),
"gens": AssetIn(key="out_eia__yearly_generators"),
"own_eia860": AssetIn(key="out_eia860__yearly_ownership"),
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 3d4ac4a320..d5c9cce2bd 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -52,7 +52,7 @@ def mcoe_asset_factory(
name=f"heat_rate_by_unit_{agg_freqs[freq]}",
ins={
"gen": AssetIn(
- key=f"generation_fuel_by_generator_energy_source_{agg_freqs[freq]}_eia923"
+ key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source"
),
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
},
@@ -96,7 +96,7 @@ def fc_asset(
name=f"capacity_factor_by_generator_{agg_freqs[freq]}",
ins={
"gen": AssetIn(
- key=f"generation_fuel_by_generator_{agg_freqs[freq]}_eia923"
+ key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator"
),
"gens": AssetIn(key="out_eia__yearly_generators"),
},
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index 8c01cdbcaf..f02cc8594d 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -62,7 +62,7 @@
group_name="out_eia",
),
*load_assets_from_modules(
- [pudl.analysis.allocate_gen_fuel], group_name="allocate_gen_fuel"
+ [pudl.analysis.allocate_gen_fuel], group_name="out_allocate_gen_fuel"
),
*load_assets_from_modules([pudl.analysis.mcoe], group_name="mcoe"),
*load_assets_from_modules([pudl.output.ferc1], group_name="denorm_ferc1"),
diff --git a/src/pudl/metadata/resources/allocate_gen_fuel.py b/src/pudl/metadata/resources/allocate_gen_fuel.py
index 92a3089806..b42286345a 100644
--- a/src/pudl/metadata/resources/allocate_gen_fuel.py
+++ b/src/pudl/metadata/resources/allocate_gen_fuel.py
@@ -15,7 +15,7 @@
RESOURCE_METADATA: dict[str, dict[str, Any]] = (
{
- f"generation_fuel_by_generator_energy_source_{freq}_eia923": {
+ f"out_eia923__{freq}_generation_fuel_by_generator_energy_source": {
"description": (
f"{freq.title()} estimated net generation and fuel consumption "
"associated with each combination of generator, energy source, and "
@@ -52,7 +52,7 @@
for freq in AGG_FREQS
}
| {
- f"generation_fuel_by_generator_{freq}_eia923": {
+ f"out_eia923__{freq}_generation_fuel_by_generator": {
"description": (
f"{freq.title()} estimated net generation and fuel consumption by generator. "
"Based on allocating net electricity generation and fuel consumption reported "
@@ -86,7 +86,7 @@
for freq in AGG_FREQS
}
| {
- "generation_fuel_by_generator_energy_source_owner_yearly_eia923": {
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner": {
"description": (
"Yearly estimated net generation and fuel consumption for each generator, "
"associated with each combination of generator, energy source, prime mover, "
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index eeed3bbbcf..88b4d0d9c1 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -728,7 +728,7 @@
# Utility IDs in this table are owners, not operators, and we are
# not yet harvesting owner_utility_id_eia from core_eia860__scd_ownership.
# See https://github.com/catalyst-cooperative/pudl/issues/1393
- "generation_fuel_by_generator_energy_source_owner_yearly_eia923",
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner",
],
},
},
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index 863c2b9ebe..9de1fdfbc4 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -234,8 +234,8 @@
"fuel_cost_by_generator_monthly",
"core_eia923__monthly_fuel_receipts_costs",
"core_eia923__monthly_generation",
- "generation_fuel_by_generator_energy_source_monthly_eia923",
- "generation_fuel_by_generator_monthly_eia923",
+ "out_eia923__monthly_generation_fuel_by_generator_energy_source",
+ "out_eia923__monthly_generation_fuel_by_generator",
"core_eia923__monthly_generation_fuel",
"heat_rate_by_generator_monthly",
"mcoe_monthly",
@@ -382,8 +382,8 @@
"out_eia923__monthly_generation",
"out_eia923__generation_fuel_combined",
"out_eia923__monthly_generation_fuel_combined",
- "generation_fuel_by_generator_energy_source_monthly_eia923",
- "generation_fuel_by_generator_monthly_eia923",
+ "out_eia923__monthly_generation_fuel_by_generator_energy_source",
+ "out_eia923__monthly_generation_fuel_by_generator",
"core_eia923__monthly_fuel_receipts_costs",
"core_eia923__monthly_generation",
"core_eia923__monthly_generation_fuel",
@@ -465,12 +465,12 @@
"out_eia923__generation_fuel_combined",
"out_eia923__monthly_generation_fuel_combined",
"fuel_cost_by_generator_monthly",
- "generation_fuel_by_generator_energy_source_monthly_eia923",
- "generation_fuel_by_generator_monthly_eia923",
+ "out_eia923__monthly_generation_fuel_by_generator_energy_source",
+ "out_eia923__monthly_generation_fuel_by_generator",
# Utility IDs in this table are owners, not operators, and we are
# not yet harvesting owner_utility_id_eia from core_eia860__scd_ownership.
# See https://github.com/catalyst-cooperative/pudl/issues/1393
- "generation_fuel_by_generator_energy_source_owner_yearly_eia923",
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner",
"core_eia861__yearly_distributed_generation_fuel",
"core_eia861__yearly_distributed_generation_misc",
"core_eia861__yearly_distributed_generation_tech",
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 1816da2107..a2284a2d5d 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -221,8 +221,8 @@ def _register_output_methods(self: Self):
}
table_method_map_any_agg = {
- "generation_fuel_by_generator_energy_source_AGG_eia923": "gen_fuel_by_generator_energy_source_eia923",
- "generation_fuel_by_generator_AGG_eia923": "gen_fuel_by_generator_eia923",
+ "out_eia923__AGG_generation_fuel_by_generator_energy_source": "gen_fuel_by_generator_energy_source_eia923",
+ "out_eia923__AGG_generation_fuel_by_generator": "gen_fuel_by_generator_eia923",
"heat_rate_by_unit_AGG": "hr_by_unit",
"heat_rate_by_generator_AGG": "hr_by_gen",
"capacity_factor_by_generator_AGG": "capacity_factor",
@@ -232,7 +232,7 @@ def _register_output_methods(self: Self):
}
table_method_map_yearly_only = {
- "generation_fuel_by_generator_energy_source_owner_yearly_eia923": "gen_fuel_by_generator_energy_source_owner_eia923",
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner": "gen_fuel_by_generator_energy_source_owner_eia923",
}
for table_name, method_name in (
From 6b143040a86082e804316f0652ce0c4f58ae7908 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 18 Sep 2023 16:07:05 -0400
Subject: [PATCH 19/70] Fix a missing gen fuel asset name in PudlTabl
---
...fbc19b1cb34_update_allocate_gen_fuel_fk.py | 44 +++++++++++++++++++
src/pudl/output/pudltabl.py | 4 +-
2 files changed, 47 insertions(+), 1 deletion(-)
create mode 100644 migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py
diff --git a/migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py b/migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py
new file mode 100644
index 0000000000..544213f623
--- /dev/null
+++ b/migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py
@@ -0,0 +1,44 @@
+"""Update allocate gen fuel fk
+
+Revision ID: dfbc19b1cb34
+Revises: d4149ca95fa9
+Create Date: 2023-09-18 15:09:36.838769
+
+"""
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'dfbc19b1cb34'
+down_revision = 'd4149ca95fa9'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator', schema=None) as batch_op:
+ batch_op.drop_constraint('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities', type_='foreignkey')
+ batch_op.drop_constraint('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators', type_='foreignkey')
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities'), 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators'), 'core_eia__entity_generators', ['plant_id_eia', 'generator_id'], ['plant_id_eia', 'generator_id'])
+
+ with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator_energy_source', schema=None) as batch_op:
+ batch_op.drop_constraint('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators', type_='foreignkey')
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators'), 'core_eia__entity_generators', ['plant_id_eia', 'generator_id'], ['plant_id_eia', 'generator_id'])
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator_energy_source', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators'), type_='foreignkey')
+ batch_op.create_foreign_key('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators', 'core_eia860__scd_generators', ['plant_id_eia', 'generator_id', 'report_date'], ['plant_id_eia', 'generator_id', 'report_date'])
+
+ with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators'), type_='foreignkey')
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities'), type_='foreignkey')
+ batch_op.create_foreign_key('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators', 'core_eia860__scd_generators', ['plant_id_eia', 'generator_id', 'report_date'], ['plant_id_eia', 'generator_id', 'report_date'])
+ batch_op.create_foreign_key('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities', 'core_eia860__scd_utilities', ['utility_id_eia', 'report_date'], ['utility_id_eia', 'report_date'])
+
+ # ### end Alembic commands ###
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index a2284a2d5d..c02b200cab 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -391,7 +391,9 @@ def gen_eia923(self: Self, update: bool = False) -> pd.DataFrame:
"Allocated net generation requires frequency of `AS` or `MS`, "
f"got {self.freq}"
)
- table_name = self._agg_table_name("generation_fuel_by_generator_AGG_eia923")
+ table_name = self._agg_table_name(
+ "out_eia923__AGG_generation_fuel_by_generator"
+ )
gen_df = self._get_table_from_db(table_name)
resource = Resource.from_id(table_name)
gen_df = gen_df.loc[:, resource.get_field_names()]
From a2042de8efeede1a4f279e6461f670fa99442585 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 18 Sep 2023 22:33:19 -0400
Subject: [PATCH 20/70] Update migrations post ferc1 output rename merge
---
... b3eb1a80721c_rename_eia_output_assets.py} | 626 +++++++++---------
1 file changed, 313 insertions(+), 313 deletions(-)
rename migrations/versions/{c73882df0765_rename_eia_denorm_assets.py => b3eb1a80721c_rename_eia_output_assets.py} (99%)
diff --git a/migrations/versions/c73882df0765_rename_eia_denorm_assets.py b/migrations/versions/b3eb1a80721c_rename_eia_output_assets.py
similarity index 99%
rename from migrations/versions/c73882df0765_rename_eia_denorm_assets.py
rename to migrations/versions/b3eb1a80721c_rename_eia_output_assets.py
index 5653302de1..748fb94115 100644
--- a/migrations/versions/c73882df0765_rename_eia_denorm_assets.py
+++ b/migrations/versions/b3eb1a80721c_rename_eia_output_assets.py
@@ -1,16 +1,16 @@
-"""Rename eia denorm assets
+"""Rename EIA output assets
-Revision ID: c73882df0765
-Revises: 2ba971d7e675
-Create Date: 2023-09-15 13:11:05.940269
+Revision ID: b3eb1a80721c
+Revises: 1c2c961a7be5
+Create Date: 2023-09-18 17:00:45.296107
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
-revision = 'c73882df0765'
-down_revision = '2ba971d7e675'
+revision = 'b3eb1a80721c'
+down_revision = '1c2c961a7be5'
branch_labels = None
depends_on = None
@@ -437,7 +437,7 @@ def upgrade() -> None:
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('DC', 'OH', 'OK', 'KS', 'NB', 'PR', 'VA', 'SD', 'GA', 'WV', 'ND', 'GU', 'IL', 'TN', 'NT', 'CT', 'VI', 'ID', 'QC', 'NU', 'AK', 'MI', 'MT', 'NH', 'ON', 'AZ', 'MS', 'OR', 'AS', 'CO', 'ME', 'NC', 'MD', 'NY', 'AB', 'YT', 'KY', 'SK', 'DE', 'NV', 'NM', 'AL', 'NS', 'WY', 'WA', 'WI', 'NJ', 'SC', 'LA', 'MO', 'CA', 'BC', 'HI', 'MP', 'NE', 'NL', 'PA', 'MB', 'PE', 'IN', 'IA', 'UT', 'TX', 'VT', 'AR', 'MA', 'RI', 'MN', 'FL'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('MB', 'NB', 'MD', 'OH', 'NH', 'AB', 'NS', 'OR', 'AL', 'MI', 'FL', 'SD', 'WY', 'YT', 'NJ', 'VA', 'IN', 'WV', 'VT', 'AK', 'MN', 'CT', 'AZ', 'ND', 'TN', 'SK', 'PR', 'OK', 'NV', 'TX', 'IA', 'NM', 'AS', 'NL', 'CA', 'KS', 'GU', 'KY', 'DE', 'CO', 'MO', 'BC', 'IL', 'MP', 'MS', 'PE', 'NY', 'RI', 'WI', 'ON', 'LA', 'HI', 'ME', 'DC', 'NE', 'NC', 'PA', 'GA', 'VI', 'MT', 'QC', 'WA', 'MA', 'AR', 'SC', 'NU', 'NT', 'ID', 'UT'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
@@ -789,82 +789,45 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia__yearly_generators'))
)
- op.drop_table('denorm_generation_monthly_eia923')
- op.drop_table('denorm_fuel_receipts_costs_eia923')
- op.drop_table('denorm_plants_utilities_eia')
+ op.drop_table('denorm_boiler_fuel_yearly_eia923')
+ op.drop_table('denorm_generation_fuel_combined_monthly_eia923')
+ op.drop_table('denorm_plants_eia')
op.drop_table('denorm_boiler_fuel_eia923')
- op.drop_table('denorm_emissions_control_equipment_eia860')
- op.drop_table('denorm_generation_fuel_combined_yearly_eia923')
+ op.drop_table('denorm_ownership_eia860')
+ op.drop_table('denorm_fuel_receipts_costs_monthly_eia923')
+ op.drop_table('denorm_boiler_fuel_monthly_eia923')
op.drop_table('denorm_generation_yearly_eia923')
- op.drop_table('denorm_utilities_eia')
op.drop_table('denorm_generators_eia')
+ op.drop_table('denorm_generation_monthly_eia923')
op.drop_table('denorm_generation_eia923')
- op.drop_table('denorm_generation_fuel_combined_eia923')
- op.drop_table('denorm_plants_eia')
+ op.drop_table('denorm_utilities_eia')
+ op.drop_table('denorm_fuel_receipts_costs_eia923')
+ op.drop_table('denorm_emissions_control_equipment_eia860')
op.drop_table('denorm_boilers_eia')
- op.drop_table('denorm_generation_fuel_combined_monthly_eia923')
- op.drop_table('denorm_boiler_fuel_monthly_eia923')
+ op.drop_table('denorm_generation_fuel_combined_eia923')
op.drop_table('denorm_fuel_receipts_costs_yearly_eia923')
- op.drop_table('denorm_boiler_fuel_yearly_eia923')
- op.drop_table('denorm_fuel_receipts_costs_monthly_eia923')
- op.drop_table('denorm_ownership_eia860')
+ op.drop_table('denorm_generation_fuel_combined_yearly_eia923')
+ op.drop_table('denorm_plants_utilities_eia')
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('denorm_ownership_eia860',
+ op.create_table('denorm_plants_utilities_eia',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('owner_utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('owner_name', sa.TEXT(), nullable=True),
- sa.Column('owner_state', sa.VARCHAR(length=2), nullable=True),
- sa.Column('owner_city', sa.TEXT(), nullable=True),
- sa.Column('owner_country', sa.VARCHAR(length=3), nullable=True),
- sa.Column('owner_street_address', sa.TEXT(), nullable=True),
- sa.Column('owner_zip_code', sa.TEXT(), nullable=True),
- sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_ownership_eia860_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_ownership_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_ownership_eia860_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_ownership_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name='pk_denorm_ownership_eia860')
- )
- op.create_table('denorm_fuel_receipts_costs_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_utilities_eia_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name='pk_denorm_plants_utilities_eia')
)
- op.create_table('denorm_boiler_fuel_yearly_eia923',
+ op.create_table('denorm_generation_fuel_combined_yearly_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
@@ -872,23 +835,22 @@ def downgrade() -> None:
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('boiler_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_core_eia860__scd_boilers'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_yearly_eia923')
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_yearly_eia923')
)
op.create_table('denorm_fuel_receipts_costs_yearly_eia923',
sa.Column('report_date', sa.DATE(), nullable=True),
@@ -916,33 +878,7 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
)
- op.create_table('denorm_boiler_fuel_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('boiler_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_core_eia__entity_boilers'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_monthly_eia923')
- )
- op.create_table('denorm_generation_fuel_combined_monthly_eia923',
+ op.create_table('denorm_generation_fuel_combined_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
@@ -952,6 +888,7 @@ def downgrade() -> None:
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
sa.Column('energy_source_code', sa.TEXT(), nullable=False),
sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_type_code_aer', sa.TEXT(), nullable=True),
sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
@@ -959,13 +896,16 @@ def downgrade() -> None:
sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_monthly_eia923')
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generation_fuel_combined_eia923_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name='fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_eia923')
)
op.create_table('denorm_boilers_eia',
sa.Column('report_date', sa.DATE(), nullable=False),
@@ -1132,99 +1072,116 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name='fk_denorm_boilers_eia_wet_dry_bottom_core_eia__codes_wet_dry_bottom'),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name='pk_denorm_boilers_eia')
)
- op.create_table('denorm_plants_eia',
+ op.create_table('denorm_emissions_control_equipment_eia860',
+ sa.Column('report_year', sa.INTEGER(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('city', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('latitude', sa.FLOAT(), nullable=True),
- sa.Column('longitude', sa.FLOAT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('street_address', sa.TEXT(), nullable=True),
- sa.Column('zip_code', sa.TEXT(), nullable=True),
- sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('ash_impoundment', sa.BOOLEAN(), nullable=True),
- sa.Column('ash_impoundment_lined', sa.BOOLEAN(), nullable=True),
- sa.Column('ash_impoundment_status', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
- sa.Column('datum', sa.TEXT(), nullable=True),
- sa.Column('energy_storage', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_cogen_docket_no', sa.TEXT(), nullable=True),
- sa.Column('ferc_cogen_status', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.TEXT(), nullable=True),
- sa.Column('ferc_exempt_wholesale_generator', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_small_power_producer_docket_no', sa.TEXT(), nullable=True),
- sa.Column('ferc_small_power_producer', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_qualifying_facility_docket_no', sa.TEXT(), nullable=True),
- sa.Column('grid_voltage_1_kv', sa.FLOAT(), nullable=True),
- sa.Column('grid_voltage_2_kv', sa.FLOAT(), nullable=True),
- sa.Column('grid_voltage_3_kv', sa.FLOAT(), nullable=True),
- sa.Column('iso_rto_code', sa.TEXT(), nullable=True),
- sa.Column('liquefied_natural_gas_storage', sa.BOOLEAN(), nullable=True),
- sa.Column('natural_gas_local_distribution_company', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_storage', sa.BOOLEAN(), nullable=True),
- sa.Column('natural_gas_pipeline_name_1', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_pipeline_name_2', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_pipeline_name_3', sa.TEXT(), nullable=True),
- sa.Column('nerc_region', sa.VARCHAR(length=9), nullable=True),
- sa.Column('net_metering', sa.BOOLEAN(), nullable=True),
- sa.Column('pipeline_notes', sa.TEXT(), nullable=True),
- sa.Column('primary_purpose_id_naics', sa.INTEGER(), nullable=True),
- sa.Column('regulatory_status_code', sa.TEXT(), nullable=True),
- sa.Column('reporting_frequency_code', sa.VARCHAR(length=2), nullable=True),
- sa.Column('sector_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('sector_name_eia', sa.TEXT(), nullable=True),
- sa.Column('service_area', sa.TEXT(), nullable=True),
- sa.Column('transmission_distribution_owner_id', sa.INTEGER(), nullable=True),
- sa.Column('transmission_distribution_owner_name', sa.TEXT(), nullable=True),
- sa.Column('transmission_distribution_owner_state', sa.TEXT(), nullable=True),
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('water_source', sa.TEXT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('balancing_authority_code_eia_consistent_rate', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name='fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_eia_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name='fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies'),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name='fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name='pk_denorm_plants_eia')
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('emission_control_id_pudl', sa.FLOAT(), nullable=False),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.Column('emission_control_equipment_type_code', sa.TEXT(), nullable=True),
+ sa.Column('operational_status_code', sa.TEXT(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('mercury_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('nox_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('particulate_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('so2_control_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('acid_gas_control', sa.BOOLEAN(), nullable=True),
+ sa.Column('emission_control_equipment_cost', sa.FLOAT(), nullable=True),
+ sa.Column('emission_control_operating_date', sa.DATE(), nullable=True),
+ sa.Column('emission_control_retirement_date', sa.DATE(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name='fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types'),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name='fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name='pk_denorm_emissions_control_equipment_eia860')
)
- op.create_table('denorm_generation_fuel_combined_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ op.create_table('denorm_fuel_receipts_costs_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('contract_type_code', sa.VARCHAR(length=2), nullable=True),
+ sa.Column('contract_expiration_date', sa.DATE(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=True),
sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_type_code_aer', sa.TEXT(), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_group_code', sa.VARCHAR(length=14), nullable=True),
+ sa.Column('supplier_name', sa.TEXT(), nullable=True),
+ sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
+ sa.Column('primary_transportation_mode_code', sa.TEXT(), nullable=True),
+ sa.Column('secondary_transportation_mode_code', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_transport_code', sa.VARCHAR(length=13), nullable=True),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.VARCHAR(length=13), nullable=True),
+ sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generation_fuel_combined_eia923_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name='fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_eia923')
+ sa.Column('mine_id_msha', sa.INTEGER(), nullable=True),
+ sa.Column('mine_name', sa.TEXT(), nullable=True),
+ sa.Column('mine_state', sa.TEXT(), nullable=True),
+ sa.Column('coalmine_county_id_fips', sa.TEXT(), nullable=True),
+ sa.Column('mine_type_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_utilities_eia',
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('street_address', sa.TEXT(), nullable=True),
+ sa.Column('city', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('zip_code', sa.TEXT(), nullable=True),
+ sa.Column('plants_reported_owner', sa.BOOLEAN(), nullable=True),
+ sa.Column('plants_reported_operator', sa.BOOLEAN(), nullable=True),
+ sa.Column('plants_reported_asset_manager', sa.BOOLEAN(), nullable=True),
+ sa.Column('plants_reported_other_relationship', sa.BOOLEAN(), nullable=True),
+ sa.Column('entity_type', sa.TEXT(), nullable=True),
+ sa.Column('attention_line', sa.TEXT(), nullable=True),
+ sa.Column('address_2', sa.TEXT(), nullable=True),
+ sa.Column('zip_code_4', sa.TEXT(), nullable=True),
+ sa.Column('contact_firstname', sa.TEXT(), nullable=True),
+ sa.Column('contact_lastname', sa.TEXT(), nullable=True),
+ sa.Column('contact_title', sa.TEXT(), nullable=True),
+ sa.Column('phone_number', sa.TEXT(), nullable=True),
+ sa.Column('phone_extension', sa.TEXT(), nullable=True),
+ sa.Column('contact_firstname_2', sa.TEXT(), nullable=True),
+ sa.Column('contact_lastname_2', sa.TEXT(), nullable=True),
+ sa.Column('contact_title_2', sa.TEXT(), nullable=True),
+ sa.Column('phone_number_2', sa.TEXT(), nullable=True),
+ sa.Column('phone_extension_2', sa.TEXT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name='pk_denorm_utilities_eia')
)
op.create_table('denorm_generation_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
@@ -1245,6 +1202,23 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_eia923')
)
+ op.create_table('denorm_generation_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_denorm_generation_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_monthly_eia923')
+ )
op.create_table('denorm_generators_eia',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
@@ -1375,39 +1349,6 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generators_eia')
)
- op.create_table('denorm_utilities_eia',
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('street_address', sa.TEXT(), nullable=True),
- sa.Column('city', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('zip_code', sa.TEXT(), nullable=True),
- sa.Column('plants_reported_owner', sa.BOOLEAN(), nullable=True),
- sa.Column('plants_reported_operator', sa.BOOLEAN(), nullable=True),
- sa.Column('plants_reported_asset_manager', sa.BOOLEAN(), nullable=True),
- sa.Column('plants_reported_other_relationship', sa.BOOLEAN(), nullable=True),
- sa.Column('entity_type', sa.TEXT(), nullable=True),
- sa.Column('attention_line', sa.TEXT(), nullable=True),
- sa.Column('address_2', sa.TEXT(), nullable=True),
- sa.Column('zip_code_4', sa.TEXT(), nullable=True),
- sa.Column('contact_firstname', sa.TEXT(), nullable=True),
- sa.Column('contact_lastname', sa.TEXT(), nullable=True),
- sa.Column('contact_title', sa.TEXT(), nullable=True),
- sa.Column('phone_number', sa.TEXT(), nullable=True),
- sa.Column('phone_extension', sa.TEXT(), nullable=True),
- sa.Column('contact_firstname_2', sa.TEXT(), nullable=True),
- sa.Column('contact_lastname_2', sa.TEXT(), nullable=True),
- sa.Column('contact_title_2', sa.TEXT(), nullable=True),
- sa.Column('phone_number_2', sa.TEXT(), nullable=True),
- sa.Column('phone_extension_2', sa.TEXT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name='pk_denorm_utilities_eia')
- )
op.create_table('denorm_generation_yearly_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
@@ -1425,7 +1366,7 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_yearly_eia923')
)
- op.create_table('denorm_generation_fuel_combined_yearly_eia923',
+ op.create_table('denorm_boiler_fuel_monthly_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
@@ -1433,52 +1374,74 @@ def downgrade() -> None:
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('boiler_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_yearly_eia923')
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_core_eia__entity_boilers'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_monthly_eia923')
)
- op.create_table('denorm_emissions_control_equipment_eia860',
- sa.Column('report_year', sa.INTEGER(), nullable=False),
+ op.create_table('denorm_fuel_receipts_costs_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
+ sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.create_table('denorm_ownership_eia860',
+ sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('emission_control_id_pudl', sa.FLOAT(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('owner_utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('owner_name', sa.TEXT(), nullable=True),
+ sa.Column('owner_state', sa.VARCHAR(length=2), nullable=True),
+ sa.Column('owner_city', sa.TEXT(), nullable=True),
+ sa.Column('owner_country', sa.VARCHAR(length=3), nullable=True),
+ sa.Column('owner_street_address', sa.TEXT(), nullable=True),
+ sa.Column('owner_zip_code', sa.TEXT(), nullable=True),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('emission_control_equipment_type_code', sa.TEXT(), nullable=True),
- sa.Column('operational_status_code', sa.TEXT(), nullable=True),
- sa.Column('operational_status', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('nox_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('particulate_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('so2_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('acid_gas_control', sa.BOOLEAN(), nullable=True),
- sa.Column('emission_control_equipment_cost', sa.FLOAT(), nullable=True),
- sa.Column('emission_control_operating_date', sa.DATE(), nullable=True),
- sa.Column('emission_control_retirement_date', sa.DATE(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name='fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types'),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name='fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name='pk_denorm_emissions_control_equipment_eia860')
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_ownership_eia860_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_ownership_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_ownership_eia860_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_ownership_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name='pk_denorm_ownership_eia860')
)
op.create_table('denorm_boiler_fuel_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
@@ -1506,69 +1469,97 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_eia923')
)
- op.create_table('denorm_plants_utilities_eia',
- sa.Column('report_date', sa.DATE(), nullable=False),
+ op.create_table('denorm_plants_eia',
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('city', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('latitude', sa.FLOAT(), nullable=True),
+ sa.Column('longitude', sa.FLOAT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('street_address', sa.TEXT(), nullable=True),
+ sa.Column('zip_code', sa.TEXT(), nullable=True),
+ sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('ash_impoundment', sa.BOOLEAN(), nullable=True),
+ sa.Column('ash_impoundment_lined', sa.BOOLEAN(), nullable=True),
+ sa.Column('ash_impoundment_status', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('datum', sa.TEXT(), nullable=True),
+ sa.Column('energy_storage', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_cogen_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('ferc_cogen_status', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('ferc_exempt_wholesale_generator', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_small_power_producer_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('ferc_small_power_producer', sa.BOOLEAN(), nullable=True),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.TEXT(), nullable=True),
+ sa.Column('grid_voltage_1_kv', sa.FLOAT(), nullable=True),
+ sa.Column('grid_voltage_2_kv', sa.FLOAT(), nullable=True),
+ sa.Column('grid_voltage_3_kv', sa.FLOAT(), nullable=True),
+ sa.Column('iso_rto_code', sa.TEXT(), nullable=True),
+ sa.Column('liquefied_natural_gas_storage', sa.BOOLEAN(), nullable=True),
+ sa.Column('natural_gas_local_distribution_company', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_storage', sa.BOOLEAN(), nullable=True),
+ sa.Column('natural_gas_pipeline_name_1', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_pipeline_name_2', sa.TEXT(), nullable=True),
+ sa.Column('natural_gas_pipeline_name_3', sa.TEXT(), nullable=True),
+ sa.Column('nerc_region', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('net_metering', sa.BOOLEAN(), nullable=True),
+ sa.Column('pipeline_notes', sa.TEXT(), nullable=True),
+ sa.Column('primary_purpose_id_naics', sa.INTEGER(), nullable=True),
+ sa.Column('regulatory_status_code', sa.TEXT(), nullable=True),
+ sa.Column('reporting_frequency_code', sa.VARCHAR(length=2), nullable=True),
+ sa.Column('sector_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('sector_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('service_area', sa.TEXT(), nullable=True),
+ sa.Column('transmission_distribution_owner_id', sa.INTEGER(), nullable=True),
+ sa.Column('transmission_distribution_owner_name', sa.TEXT(), nullable=True),
+ sa.Column('transmission_distribution_owner_state', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('water_source', sa.TEXT(), nullable=True),
+ sa.Column('data_maturity', sa.TEXT(), nullable=True),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_utilities_eia_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name='pk_denorm_plants_utilities_eia')
+ sa.Column('balancing_authority_code_eia_consistent_rate', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name='fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_eia_plant_id_eia_core_eia860__scd_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name='fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies'),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name='fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name='pk_denorm_plants_eia')
)
- op.create_table('denorm_fuel_receipts_costs_eia923',
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ op.create_table('denorm_generation_fuel_combined_monthly_eia923',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('contract_type_code', sa.VARCHAR(length=2), nullable=True),
- sa.Column('contract_expiration_date', sa.DATE(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_group_code', sa.VARCHAR(length=14), nullable=True),
- sa.Column('supplier_name', sa.TEXT(), nullable=True),
- sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('primary_transportation_mode_code', sa.TEXT(), nullable=True),
- sa.Column('secondary_transportation_mode_code', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_transport_code', sa.VARCHAR(length=13), nullable=True),
- sa.Column('natural_gas_delivery_contract_type_code', sa.VARCHAR(length=13), nullable=True),
- sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('mine_id_msha', sa.INTEGER(), nullable=True),
- sa.Column('mine_name', sa.TEXT(), nullable=True),
- sa.Column('mine_state', sa.TEXT(), nullable=True),
- sa.Column('coalmine_county_id_fips', sa.TEXT(), nullable=True),
- sa.Column('mine_type_code', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_monthly_eia923')
)
- op.create_table('denorm_generation_monthly_eia923',
+ op.create_table('denorm_boiler_fuel_yearly_eia923',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
@@ -1576,14 +1567,23 @@ def downgrade() -> None:
sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('boiler_id', sa.TEXT(), nullable=False),
sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_denorm_generation_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_monthly_eia923')
+ sa.Column('energy_source_code', sa.TEXT(), nullable=False),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
+ sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_core_eia860__scd_boilers'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_yearly_eia923')
)
op.drop_table('out_eia__yearly_generators')
op.drop_table('out_eia__yearly_boilers')
From 77a16f54fb37b05d8e67cea489766a469c2e3a95 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 20 Sep 2023 11:03:21 -0400
Subject: [PATCH 21/70] Update contributor facing documentation with new asset
naming conventions
---
docs/dev/data_guidelines.rst | 49 +-------
docs/dev/naming_conventions.rst | 200 +++++++++++++++++++++++---------
2 files changed, 144 insertions(+), 105 deletions(-)
diff --git a/docs/dev/data_guidelines.rst b/docs/dev/data_guidelines.rst
index 53bcb1c18a..dfbd40c0db 100644
--- a/docs/dev/data_guidelines.rst
+++ b/docs/dev/data_guidelines.rst
@@ -64,6 +64,8 @@ Examples of Unacceptable Changes
fuel heat content and net electricity generation. The heat rate would
be a derived value and not part of the original data.
+.. _tidy-data:
+
-------------------------------------------------------------------------------
Make Tidy Data
-------------------------------------------------------------------------------
@@ -117,24 +119,6 @@ that M/Mega is a million in SI. And a `BTU
energy required to raise the temperature of one an *avoirdupois pound* of water
by 1 degree *Farenheit*?! What century even is this?).
--------------------------------------------------------------------------------
-Silo the ETL Process
--------------------------------------------------------------------------------
-It should be possible to run the ETL process on each data source independently
-and with any combination of data sources included. This allows users to include
-only the data need. In some cases, like the :doc:`EIA 860
-<../data_sources/eia860>` and :doc:`EIA 923 <../data_sources/eia923>` data, two
-data sources may be so intertwined that keeping them separate doesn't really
-make sense. This should be the exception, however, not the rule.
-
--------------------------------------------------------------------------------
-Separate Data from Glue
--------------------------------------------------------------------------------
-The glue that relates different data sources to each other should be applied
-after or alongside the ETL process and not as a mandatory part of ETL. This
-makes it easy to pull individual data sources in and work with them even when
-the glue isn't working or doesn't yet exist.
-
-------------------------------------------------------------------------------
Partition Big Data
-------------------------------------------------------------------------------
@@ -146,35 +130,6 @@ them to pull in only certain years, certain states, or other sensible partitions
data so that they don’t run out of memory or disk space or have to wait hours while data
they don't need is being processed.
--------------------------------------------------------------------------------
-Naming Conventions
--------------------------------------------------------------------------------
- *There are only two hard problems in computer science: caching,
- naming things, and off-by-one errors.*
-
-Use Consistent Names
-^^^^^^^^^^^^^^^^^^^^
-If two columns in different tables record the same quantity in the same units,
-give them the same name. That way if they end up in the same dataframe for
-comparison it's easy to automatically rename them with suffixes indicating
-where they came from. For example, net electricity generation is reported to
-both :doc:`FERC Form 1 <../data_sources/ferc1>` and :doc:`EIA 923
-<../data_sources/eia923>`, so we've named columns ``net_generation_mwh`` in
-each of those data sources. Similarly, give non-comparable quantities reported
-in different data sources **different** column names. This helps make it clear
-that the quantities are actually different.
-
-Follow Existing Conventions
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-We are trying to use consistent naming conventions for the data tables,
-columns, data sources, and functions. Generally speaking PUDL is a collection
-of subpackages organized by purpose (extract, transform, load, analysis,
-output, datastore…), containing a module for each data source. Each data source
-has a short name that is used everywhere throughout the project and is composed of
-the reporting agency and the form number or another identifying abbreviation:
-``ferc1``, ``epacems``, ``eia923``, ``eia861``, etc. See the :doc:`naming
-conventions ` document for more details.
-
-------------------------------------------------------------------------------
Complete, Continuous Time Series
-------------------------------------------------------------------------------
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 8648e573b4..68526e31b7 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -1,6 +1,147 @@
===============================================================================
Naming Conventions
===============================================================================
+ *There are only two hard problems in computer science: caching,
+ naming things, and off-by-one errors.*
+
+We try to use consistent naming conventions for the data tables, data assets,
+columns, data sources, and functions.
+
+
+Asset Naming Conventions
+---------------------------------------------------
+
+PUDL's data processing is divided into three layers of dagster assets: Raw, Core
+and Output. Asset names should generally follow this naming convention:
+
+.. code-block::
+
+ {layer}_{source}__{asset_type}_{asset_name}
+
+* ``layer`` is the processing layer of the asset. Acceptable values are:
+ ``raw``, ``core`` and ``out``. ``layer`` is required for all assets in all layers.
+* ``source`` is an abbreviation of the original source of the data. For example,
+ ``eia860``, ``ferc1`` and ``epacems``.
+* ``asset_type`` describes how the asset in modeled.
+* ``asset_name`` should describe the entity, categorical code type, or measurement of
+ the asset.
+
+Raw layer
+^^^^^^^^^
+* This layer contains assets that extract data from spreadsheets and databases
+ and are persisted as pickle files.
+* Naming convention: ``raw_{source}__{asset_name}``
+* ``asset_name`` is typically copied from the source data.
+* ``asset_type`` is not included in this layer because the data modeling does not
+ yet conform to PUDL standards. Raw assets are typically just copies of the
+ source data.
+
+Core layer
+^^^^^^^^^^
+* This layer contains well-modeled assets that serve as building blocks for downstream
+ wide tables and analyses. Well-modeled means tables in the database have logical
+ primary keys, foreign keys, datatypes and generally follow
+ :ref:`Tidy Data standards `.
+ These assets are typically stored in parquet files or tables in a database.
+* Naming convention: ``core_{source}__{asset_type}_{asset_name}``
+* ``asset_type`` describes how the asset is modeled and its role in PUDL’s
+ collection of core assets. There are a handful of table types in this layer:
+
+ * ``assn``: Association tables provide connections between entities. This data
+ can be manually compiled or extracted from data sources. Examples:
+ ``core_pudl__assn_plants_eia``, ``core_eia861__assn_utility``.
+ * ``codes``: Code tables contain more verbose descriptions of categorical codes
+ typically manually compiled from source data dictionaries. Examples:
+ ``core_eia__codes_averaging_periods``, ``core_eia__codes_balancing_authorities``
+ * ``entity``: Entity tables contain static information about entities. For example,
+ the state a plant is located in, or the plant a boiler is a part of. Examples:
+ ``core_eia__entity_boilers``, ``core_eia923__entity_coalmine``.
+ * ``scd``: Slowly changing dimension tables describe attributes of entities that
+ rarely change. For example, the ownership or the capacity of a plant. Examples:
+ ``core_eia860__scd_generators``, ``core_eia860__scd_plants``.
+ * ``yearly/monthly/hourly``: Time series tables contain attributes about entities
+ that are expected to change for each reported timestamp. Time series tables
+ typically contain measurements of processes like net generation or co2 emissions.
+ Examples: ``core_ferc714__hourly_demand_pa``,
+ ``core_ferc1__yearly_plant_in_service``.
+
+Output layer
+^^^^^^^^^^^^
+* This layer uses assets in the Core layer to construct wide and complete tables
+ suitable for users to perform analysis on. This layer can contain intermediate
+ tables that bridge the core and user-facing tables.
+* Naming convention: ``out_{source}__{asset_type}_{asset_name}``
+* ``source`` is optional in this layer because there can be assets that join data from
+ multiple sources.
+* ``asset_type`` is also optional. It will likely describe the frequency at which
+ the data is reported (annual/monthly/hourly).
+
+Intermediate Assets
+^^^^^^^^^^^^^^^^^^^
+* Intermediate assets are logical steps towards a final well-modeled core asset or
+ user-facing output asset. These assets are not intended to be persisted in the
+ database or accessible to the user. These assets are denoted by a preceding
+ underscore, like a private python method. For example, the intermediate asset
+ ``_core_eia860__plants`` is a logical step towards the
+ ``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets.
+* The number of intermediate assets should be limited to avoid an extremely
+ cluttered DAG. It is appropriate to create an intermediate asset when:
+
+ * there is a short and long running portion of a process. It is convenient to separate
+ the long and short-running processing portions into separate assets so debugging the
+ short-running process doesn’t take forever.
+ * there is a logical step in a process that is frequently inspected for debugging. For
+ example, the pre harvest assets in the ``_core_eia860`` and ``_core_eia923`` groups
+ are frequently inspected when new years of data are added.
+
+
+Columns and Field Names
+^^^^^^^^^^^^^^^^^^^^^^^
+If two columns in different tables record the same quantity in the same units,
+give them the same name. That way if they end up in the same dataframe for
+comparison it's easy to automatically rename them with suffixes indicating
+where they came from. For example, net electricity generation is reported to
+both :doc:`FERC Form 1 <../data_sources/ferc1>` and :doc:`EIA 923
+<../data_sources/eia923>`, so we've named columns ``net_generation_mwh`` in
+each of those data sources. Similarly, give non-comparable quantities reported
+in different data sources **different** column names. This helps make it clear
+that the quantities are actually different.
+
+* ``total`` should come at the beginning of the name (e.g.
+ ``total_expns_production``)
+* Identifiers should be structured ``type`` + ``_id_`` + ``source`` where
+ ``source`` is the agency or organization that has assigned the ID. (e.g.
+ ``plant_id_eia``)
+* The data source or label (e.g. ``plant_id_pudl``) should follow the thing it
+ is describing
+* Units should be appended to field names where applicable (e.g.
+ ``net_generation_mwh``). This includes "per unit" signifiers (e.g. ``_pct``
+ for percent, ``_ppm`` for parts per million, or a generic ``_per_unit`` when
+ the type of unit varies, as in columns containing a heterogeneous collection
+ of fuels)
+* Financial values are assumed to be in nominal US dollars.
+* ``_id`` indicates the field contains a usually numerical reference to
+ another table, which will not be intelligible without looking up the value in
+ that other table.
+* The suffix ``_code`` indicates the field contains a short abbreviation from
+ a well defined list of values, that probably needs to be looked up if you
+ want to understand what it means.
+* The suffix ``_type`` (e.g. ``fuel_type``) indicates a human readable category
+ from a well defined list of values. Whenever possible we try to use these
+ longer descriptive names rather than codes.
+* ``_name`` indicates a longer human readable name, that is likely not well
+ categorized into a small set of acceptable values.
+* ``_date`` indicates the field contains a :class:`Date` object.
+* ``_datetime`` indicates the field contains a full :class:`Datetime` object.
+* ``_year`` indicates the field contains an :class:`integer` 4-digit year.
+* ``capacity`` refers to nameplate capacity (e.g. ``capacity_mw``)-- other
+ specific types of capacity are annotated.
+* Regardless of what label utilities are given in the original data source
+ (e.g. ``operator`` in EIA or ``respondent`` in FERC) we refer to them as
+ ``utilities`` in PUDL.
+
+Naming Conventions in Code
+--------------------------
In the PUDL codebase, we aspire to follow the naming and other conventions
detailed in :pep:`8`.
@@ -21,11 +162,6 @@ as we come across them again in maintaining the code.
``eia`` or ``ferc1``). When outputs are built from a single table, simply use
the table name (e.g. ``core_eia923__monthly_boiler_fuel``).
-.. _glossary:
-
-Glossary of Abbreviations
--------------------------
-
General Abbreviations
^^^^^^^^^^^^^^^^^^^^^
@@ -76,61 +212,9 @@ Abbreviation Definition
Data Extraction Functions
--------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^
The lower level namespace uses an imperative verb to identify the action the
function performs followed by the object of extraction (e.g.
``get_eia860_file``). The upper level namespace identifies the dataset where
extraction is occurring.
-
-Output Functions
------------------
-
-When dataframe outputs are built from multiple tables, identify the type of
-information being pulled (e.g. ``plants``) and the source of the tables (e.g.
-``eia`` or ``ferc1``). When outputs are built from a single table, simply use
-the table name (e.g. ``core_eia923__monthly_boiler_fuel``).
-
-Table Names
------------
-
-See `this article `__ on database naming conventions.
-
-* Table names in snake_case
-* The data source should follow the thing it applies to e.g. ``plant_id_ferc1``
-
-Columns and Field Names
------------------------
-
-* ``total`` should come at the beginning of the name (e.g.
- ``total_expns_production``)
-* Identifiers should be structured ``type`` + ``_id_`` + ``source`` where
- ``source`` is the agency or organization that has assigned the ID. (e.g.
- ``plant_id_eia``)
-* The data source or label (e.g. ``plant_id_pudl``) should follow the thing it
- is describing
-* Units should be appended to field names where applicable (e.g.
- ``net_generation_mwh``). This includes "per unit" signifiers (e.g. ``_pct``
- for percent, ``_ppm`` for parts per million, or a generic ``_per_unit`` when
- the type of unit varies, as in columns containing a heterogeneous collection
- of fuels)
-* Financial values are assumed to be in nominal US dollars.
-* ``_id`` indicates the field contains a usually numerical reference to
- another table, which will not be intelligible without looking up the value in
- that other table.
-* The suffix ``_code`` indicates the field contains a short abbreviation from
- a well defined list of values, that probably needs to be looked up if you
- want to understand what it means.
-* The suffix ``_type`` (e.g. ``fuel_type``) indicates a human readable category
- from a well defined list of values. Whenever possible we try to use these
- longer descriptive names rather than codes.
-* ``_name`` indicates a longer human readable name, that is likely not well
- categorized into a small set of acceptable values.
-* ``_date`` indicates the field contains a :class:`Date` object.
-* ``_datetime`` indicates the field contains a full :class:`Datetime` object.
-* ``_year`` indicates the field contains an :class:`integer` 4-digit year.
-* ``capacity`` refers to nameplate capacity (e.g. ``capacity_mw``)-- other
- specific types of capacity are annotated.
-* Regardless of what label utilities are given in the original data source
- (e.g. ``operator`` in EIA or ``respondent`` in FERC) we refer to them as
- ``utilities`` in PUDL.
From 4d5b57d662346e4b4f7d652f59350491e7250a95 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 20 Sep 2023 15:30:58 -0400
Subject: [PATCH 22/70] Add new naming convention to user facing documentation
---
docs/data_access.rst | 6 +
docs/dev/naming_conventions.rst | 1 +
docs/intro.rst | 112 +++++++-----------
.../templates/datasette-metadata.yml.jinja | 11 +-
4 files changed, 55 insertions(+), 75 deletions(-)
diff --git a/docs/data_access.rst b/docs/data_access.rst
index 869f84ceef..ca169afa23 100644
--- a/docs/data_access.rst
+++ b/docs/data_access.rst
@@ -8,6 +8,12 @@ PUDL data, so if you have a suggestion please `open a GitHub issue
`__. If you have a question you
can `create a GitHub discussion `__.
+PUDL's primary data output is the ``pudl.sqlite`` database. It contains a collection
+of tables that follow :ref:`PUDL's asset naming convention `. Tables
+with the ``core_`` prefix are normalized tables that serve as building blocks for the
+more denormalized and easy to work with ``output_`` tables. **We recommend only working
+with ``output_`` tables.**
+
.. _access-modes:
---------------------------------------------------------------------------------------
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 68526e31b7..9d1e521b77 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -7,6 +7,7 @@ Naming Conventions
We try to use consistent naming conventions for the data tables, data assets,
columns, data sources, and functions.
+.. _asset-naming:
Asset Naming Conventions
---------------------------------------------------
diff --git a/docs/intro.rst b/docs/intro.rst
index 94f75a592b..c65642f43c 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -73,31 +73,44 @@ needed and organize them in a local :doc:`datastore `.
.. _etl-process:
---------------------------------------------------------------------------------------
-The ETL Process
+The Data Warehouse Design
---------------------------------------------------------------------------------------
-The core of PUDL's work takes place in the ETL (Extract, Transform, and Load)
-process.
+PUDL's data processing produces a data warehouse that can be used for analytics.
+The processing happens within Dagster assets that are persisted to storage,
+typically pickle, parquet or SQLite files. The raw data moves through three
+layers of the data warehouse.
-Extract
-^^^^^^^
+Raw Layer
+^^^^^^^^^
-The Extract step reads the raw data from the original heterogeneous formats into a
-collection of :class:`pandas.DataFrame` with uniform column names across all years so
+Assets in the Raw layer read the raw data from the original heterogeneous formats into
+a collection of :class:`pandas.DataFrame` with uniform column names across all years so
that it can be easily processed in bulk. Data distributed as binary database files, such
as the DBF files from FERC Form 1, may be converted into a unified SQLite database
-before individual dataframes are created.
+before individual dataframes are created. Raw data assets are typically persisted to
+pickle files and are not distributed to users.
.. seealso::
Module documentation within the :mod:`pudl.extract` subpackage.
-Transform
-^^^^^^^^^
+Core Layer
+^^^^^^^^^^
+
+The Core layer contains well-modeled assets that serve as building blocks for
+downstream wide tables and analyses. Well-modeled means tables in the database
+have logical primary keys, foreign keys, datatypes and generally follow
+:ref:`Tidy Data standards `. The assets are loaded to a SQLite
+database or Parquet file.
+
+These outputs can be accessed via Python, R, and many other tools. See the
+:doc:`data_dictionaries/pudl_db` page for a list of the normalized database tables and
+their contents.
-The Transform step is generally broken down into two phases. Phase one focuses on
-cleaning and organizing data within individual tables while phase two focuses on the
-integration and deduplication of data between tables. These tasks can be tedious
+Data processing in the Core layer is generally broken down into two phases. Phase one
+focuses on cleaning and organizing data within individual tables while phase two focuses
+on the integration and deduplication of data between tables. These tasks can be tedious
`data wrangling toil `__ that impose a
huge amount of overhead on anyone trying to do analysis based on the publicly
available data. PUDL implements common data cleaning operations in the hopes that we
@@ -128,73 +141,32 @@ longitude are reported separately every year. Often, these reported values are n
self-consistent. There may be several different spellings of a plant's name, or an
incorrectly reported latitude in one year.
-The transform step attempts to eliminate this kind of inconsistent and duplicate
+Assets in the Core layer attempt to eliminate this kind of inconsistent and duplicate
information when normalizing the tables by choosing only the most consistently reported
value for inclusion in the final database. If a value which should be static is not
consistently reported, it may also be set to N/A.
-.. seealso::
-
- * `Tidy Data `__ by Hadley
- Wickham, Journal of Statistical Software (2014).
- * `A Simple Guide to the Five Normal Forms in Relational Database Theory `__
- by William Kent, Communications of the ACM (1983).
-
-Load
-^^^^
-
-At the end of the Transform step, we have collections of :class:`pandas.DataFrame` that
-correspond to database tables. These are loaded into a SQLite database.
-To handle the ~1 billion row :doc:`data_sources/epacems`, we load the dataframes into
-an Apache Parquet dataset that is partitioned by state and year.
-
-These outputs can be accessed via Python, R, and many other tools. See the
-:doc:`data_dictionaries/pudl_db` page for a list of the normalized database tables and
-their contents.
-
-.. seealso::
-
- Module documentation within the :mod:`pudl.load` sub-package.
-
-.. _db-and-outputs:
-
----------------------------------------------------------------------------------------
-Output Tables
----------------------------------------------------------------------------------------
-
-Denormalized Outputs
+Output Layer
^^^^^^^^^^^^^^^^^^^^
-We normalize the data to make storage more efficient and avoid data integrity issues,
-but you may want to combine information from more than one of the tables to make the
-data more readable and readily interpretable. For example, PUDL stores the name that EIA
-uses to refer to a power plant in the :ref:`core_eia__entity_plants` table in
-association with the plant's unique numeric ID. If you are working with data from the
-:ref:`core_eia923__monthly_fuel_receipts_costs` table, which records monthly per-plant
-fuel deliveries, you may want to have the name of the plant alongside the fuel delivery
-information since it's more recognizable than the plant ID.
+Assets in the Core layer normalize the data to make storage more efficient and avoid
+data integrity issues, but you may want to combine information from more than one of
+the tables to make the data more readable and readily interpretable. For example, PUDL
+stores the name that EIA uses to refer to a power plant in the
+:ref:`core_eia__entity_plants` table in association with the plant's unique numeric ID.
+If you are working with data from the :ref:`core_eia923__monthly_fuel_receipts_costs`
+table, which records monthly per-plant fuel deliveries, you may want to have the name
+of the plant alongside the fuel delivery information since it's more recognizable than
+the plant ID.
Rather than requiring everyone to write their own SQL ``SELECT`` and ``JOIN`` statements
or do a bunch of :func:`pandas.merge` operations to bring together data, PUDL provides a
-variety of predefined queries as methods of the :class:`pudl.output.pudltabl.PudlTabl`
-class. These methods perform common joins to return output tables (pandas DataFrames)
-that contain all of the useful information in one place. In some cases, like with EIA,
-the output tables are composed to closely resemble the raw spreadsheet tables you're
-familiar with.
-
-.. note::
-
- In the future, we intend to replace the simple denormalized output tables with
- database views that are integrated into the distributed SQLite database directly.
- This will provide the same convenience without requiring use of the Python software
- layer.
-
-Analysis Outputs
-^^^^^^^^^^^^^^^^
+variety of output tables that contain all of the useful information in one place. In
+some cases, like with EIA, the output tables are composed to closely resemble the raw
+spreadsheet tables you're familiar with.
-There are several analytical routines built into the
-:mod:`pudl.output.pudltabl.PudlTabl` output objects for calculating derived values
-like the heat rate by generation unit (:meth:`hr_by_unit
+The Output layer also contains tables produced by analytical routines for
+calculating derived values like the heat rate by generation unit (:meth:`hr_by_unit
`) or the capacity factor by generator
(:meth:`capacity_factor `). We intend to
integrate more analytical outputs into the library over time.
diff --git a/src/pudl/metadata/templates/datasette-metadata.yml.jinja b/src/pudl/metadata/templates/datasette-metadata.yml.jinja
index 8872e6ff7b..4fc8e3aa42 100644
--- a/src/pudl/metadata/templates/datasette-metadata.yml.jinja
+++ b/src/pudl/metadata/templates/datasette-metadata.yml.jinja
@@ -42,12 +42,13 @@ databases:
Catalyst Cooperative as part of the
Public Utility
Data Liberation Project.
- Caution:
+ Note:
- - Please note that tables beginning with "denorm_" are temporary tables whose
- names and metadata will shortly change, as we migrate new tables into our database.
- - The structure of the data and the API are not necessarily stable, so don't
- build any critical infrastructure on top of this just yet.
+ - Tables with the "core_" prefix are normalized tables that serve as building blocks for the
+ more denormalized and easy to work with "out_" tables.
+ - We recommend only working with "out_" tables.
+ - To learn more about how the database is organized check out
+ PUDL's naming conventions.
- If you find something wrong, please
make an issue
on GitHub to let us know.
From efb2bbdcff306f5762ec68c5aade3ce50f77b1fe Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 20 Sep 2023 15:50:00 -0400
Subject: [PATCH 23/70] Correct allocate-get-fuel down revision
---
...694f6af_rename_allocate_gen_fuel_assets.py | 713 ++++++++++++++----
1 file changed, 575 insertions(+), 138 deletions(-)
diff --git a/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py b/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
index d6de4c55ca..4476e028b9 100644
--- a/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
+++ b/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
@@ -9,161 +9,598 @@
from alembic import op
# revision identifiers, used by Alembic.
-revision = '62f1f694f6af'
-down_revision = 'c73882df0765'
+revision = "62f1f694f6af"
+down_revision = "b3eb1a80721c"
branch_labels = None
depends_on = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_eia923__monthly_generation_fuel_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia923__monthly_generation_fuel_by_generator"),
+ ),
)
- op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_by_generator_energy_source",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f(
+ "pk_out_eia923__monthly_generation_fuel_by_generator_energy_source"
+ ),
+ ),
)
- op.create_table('out_eia923__yearly_generation_fuel_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia923__yearly_generation_fuel_by_generator"),
+ ),
)
- op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f(
+ "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source"
+ ),
+ ),
)
- op.drop_table('generation_fuel_by_generator_yearly_eia923')
- op.drop_table('generation_fuel_by_generator_energy_source_monthly_eia923')
- op.drop_table('generation_fuel_by_generator_energy_source_yearly_eia923')
- op.drop_table('generation_fuel_by_generator_monthly_eia923')
+ op.drop_table("generation_fuel_by_generator_yearly_eia923")
+ op.drop_table("generation_fuel_by_generator_energy_source_monthly_eia923")
+ op.drop_table("generation_fuel_by_generator_energy_source_yearly_eia923")
+ op.drop_table("generation_fuel_by_generator_monthly_eia923")
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('generation_fuel_by_generator_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_generation_fuel_by_generator_monthly_eia923')
+ op.create_table(
+ "generation_fuel_by_generator_monthly_eia923",
+ sa.Column("report_date", sa.DATE(), nullable=False),
+ sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
+ sa.Column("plant_id_pudl", sa.INTEGER(), nullable=True),
+ sa.Column("plant_name_eia", sa.TEXT(), nullable=True),
+ sa.Column("utility_id_eia", sa.INTEGER(), nullable=True),
+ sa.Column("utility_id_pudl", sa.INTEGER(), nullable=True),
+ sa.Column("utility_name_eia", sa.TEXT(), nullable=True),
+ sa.Column("generator_id", sa.TEXT(), nullable=False),
+ sa.Column("unit_id_pudl", sa.INTEGER(), nullable=True),
+ sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
+ sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
+ sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name="fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_core_eia__entity_generators",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name="fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name="fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_core_eia__entity_utilities",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name="fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name="pk_generation_fuel_by_generator_monthly_eia923",
+ ),
)
- op.create_table('generation_fuel_by_generator_energy_source_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('energy_source_code_num', sa.VARCHAR(length=20), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name='pk_generation_fuel_by_generator_energy_source_yearly_eia923')
+ op.create_table(
+ "generation_fuel_by_generator_energy_source_yearly_eia923",
+ sa.Column("report_date", sa.DATE(), nullable=False),
+ sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
+ sa.Column("generator_id", sa.TEXT(), nullable=False),
+ sa.Column("prime_mover_code", sa.TEXT(), nullable=False),
+ sa.Column("energy_source_code", sa.TEXT(), nullable=False),
+ sa.Column("energy_source_code_num", sa.VARCHAR(length=20), nullable=True),
+ sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
+ sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
+ sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name="fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_core_eia__codes_energy_sources",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name="fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_core_eia860__scd_generators",
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name="fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name="pk_generation_fuel_by_generator_energy_source_yearly_eia923",
+ ),
)
- op.create_table('generation_fuel_by_generator_energy_source_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('energy_source_code_num', sa.VARCHAR(length=20), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name='pk_generation_fuel_by_generator_energy_source_monthly_eia923')
+ op.create_table(
+ "generation_fuel_by_generator_energy_source_monthly_eia923",
+ sa.Column("report_date", sa.DATE(), nullable=False),
+ sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
+ sa.Column("generator_id", sa.TEXT(), nullable=False),
+ sa.Column("prime_mover_code", sa.TEXT(), nullable=False),
+ sa.Column("energy_source_code", sa.TEXT(), nullable=False),
+ sa.Column("energy_source_code_num", sa.VARCHAR(length=20), nullable=True),
+ sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
+ sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
+ sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name="fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_core_eia__codes_energy_sources",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name="fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_core_eia__entity_generators",
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name="fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name="pk_generation_fuel_by_generator_energy_source_monthly_eia923",
+ ),
)
- op.create_table('generation_fuel_by_generator_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_generation_fuel_by_generator_yearly_eia923')
+ op.create_table(
+ "generation_fuel_by_generator_yearly_eia923",
+ sa.Column("report_date", sa.DATE(), nullable=False),
+ sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
+ sa.Column("plant_id_pudl", sa.INTEGER(), nullable=True),
+ sa.Column("plant_name_eia", sa.TEXT(), nullable=True),
+ sa.Column("utility_id_eia", sa.INTEGER(), nullable=True),
+ sa.Column("utility_id_pudl", sa.INTEGER(), nullable=True),
+ sa.Column("utility_name_eia", sa.TEXT(), nullable=True),
+ sa.Column("generator_id", sa.TEXT(), nullable=False),
+ sa.Column("unit_id_pudl", sa.INTEGER(), nullable=True),
+ sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
+ sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
+ sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name="fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_core_eia860__scd_generators",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name="fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name="fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_core_eia860__scd_utilities",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name="fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name="pk_generation_fuel_by_generator_yearly_eia923",
+ ),
)
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
- op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
- op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator")
+ op.drop_table("out_eia923__monthly_generation_fuel_by_generator_energy_source")
+ op.drop_table("out_eia923__monthly_generation_fuel_by_generator")
# ### end Alembic commands ###
From 239eb4d0eeffaa3b604084b78554f03e0a4b0fa9 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 21 Sep 2023 09:29:29 -0400
Subject: [PATCH 24/70] Apply new naming convention to ferc714 respondents,
hourly demand and eia861 service territories
---
...4e_rename_service_territory_and_demand_.py | 94 ++++++++++++++++
...9b90224_make_service_territories_plural.py | 83 ++++++++++++++
...e4f428_rename_ferc714_respondent_tables.py | 103 ++++++++++++++++++
src/pudl/analysis/service_territory.py | 4 +-
src/pudl/analysis/state_demand.py | 51 +++++----
src/pudl/etl/__init__.py | 8 +-
src/pudl/metadata/resources/eia.py | 12 +-
src/pudl/metadata/resources/eia860.py | 6 +-
src/pudl/metadata/resources/eia861.py | 4 +-
src/pudl/metadata/resources/ferc714.py | 4 +-
src/pudl/metadata/resources/pudl.py | 2 +-
src/pudl/output/ferc714.py | 64 ++++++-----
src/pudl/output/pudltabl.py | 10 +-
13 files changed, 367 insertions(+), 78 deletions(-)
create mode 100644 migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py
create mode 100644 migrations/versions/232c79b90224_make_service_territories_plural.py
create mode 100644 migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py
diff --git a/migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py b/migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py
new file mode 100644
index 0000000000..6907d2ddda
--- /dev/null
+++ b/migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py
@@ -0,0 +1,94 @@
+"""Rename service territory and demand tables
+
+Revision ID: 027d56be4d4e
+Revises: 79158fe4f428
+Create Date: 2023-09-21 08:38:10.224197
+
+"""
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy.dialects import sqlite
+
+# revision identifiers, used by Alembic.
+revision = '027d56be4d4e'
+down_revision = '79158fe4f428'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia861__compiled_geometry_balancing_authority',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authority'))
+ )
+ op.create_table('out_eia861__compiled_geometry_utility',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utility'))
+ )
+ op.create_table('out_ferc714__hourly_predicted_state_demand',
+ sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
+ sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
+ )
+ op.drop_table('compiled_geometry_balancing_authority_eia861')
+ op.drop_table('predicted_state_hourly_demand')
+ op.drop_table('compiled_geometry_utility_eia861')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('compiled_geometry_utility_eia861',
+ sa.Column('county_id_fips', sa.TEXT(), nullable=False),
+ sa.Column('county_name_census', sa.TEXT(), nullable=True),
+ sa.Column('population', sa.FLOAT(), nullable=True),
+ sa.Column('area_km2', sa.FLOAT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('state_id_fips', sa.TEXT(), nullable=True),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name='pk_compiled_geometry_utility_eia861')
+ )
+ op.create_table('predicted_state_hourly_demand',
+ sa.Column('state_id_fips', sa.TEXT(), nullable=False),
+ sa.Column('utc_datetime', sa.DATETIME(), nullable=False),
+ sa.Column('demand_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('scaled_demand_mwh', sa.FLOAT(), nullable=True),
+ sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name='pk_predicted_state_hourly_demand')
+ )
+ op.create_table('compiled_geometry_balancing_authority_eia861',
+ sa.Column('county_id_fips', sa.TEXT(), nullable=False),
+ sa.Column('county_name_census', sa.TEXT(), nullable=True),
+ sa.Column('population', sa.FLOAT(), nullable=True),
+ sa.Column('area_km2', sa.FLOAT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=False),
+ sa.Column('state_id_fips', sa.TEXT(), nullable=True),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name='pk_compiled_geometry_balancing_authority_eia861')
+ )
+ op.drop_table('out_ferc714__hourly_predicted_state_demand')
+ op.drop_table('out_eia861__compiled_geometry_utility')
+ op.drop_table('out_eia861__compiled_geometry_balancing_authority')
+ # ### end Alembic commands ###
diff --git a/migrations/versions/232c79b90224_make_service_territories_plural.py b/migrations/versions/232c79b90224_make_service_territories_plural.py
new file mode 100644
index 0000000000..d9b082918e
--- /dev/null
+++ b/migrations/versions/232c79b90224_make_service_territories_plural.py
@@ -0,0 +1,83 @@
+"""Make service territories plural
+
+Revision ID: 232c79b90224
+Revises: 027d56be4d4e
+Create Date: 2023-09-21 09:02:11.211316
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '232c79b90224'
+down_revision = '027d56be4d4e'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia861__compiled_geometry_balancing_authorities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
+ )
+ op.create_table('out_eia861__compiled_geometry_utilities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
+ )
+ op.drop_table('out_eia861__compiled_geometry_balancing_authority')
+ op.drop_table('out_eia861__compiled_geometry_utility')
+ with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
+ batch_op.create_foreign_key(batch_op.f('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities'), 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities'), type_='foreignkey')
+
+ op.create_table('out_eia861__compiled_geometry_utility',
+ sa.Column('county_id_fips', sa.TEXT(), nullable=False),
+ sa.Column('county_name_census', sa.TEXT(), nullable=True),
+ sa.Column('population', sa.FLOAT(), nullable=True),
+ sa.Column('area_km2', sa.FLOAT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('state_id_fips', sa.TEXT(), nullable=True),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name='pk_out_eia861__compiled_geometry_utility')
+ )
+ op.create_table('out_eia861__compiled_geometry_balancing_authority',
+ sa.Column('county_id_fips', sa.TEXT(), nullable=False),
+ sa.Column('county_name_census', sa.TEXT(), nullable=True),
+ sa.Column('population', sa.FLOAT(), nullable=True),
+ sa.Column('area_km2', sa.FLOAT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=False),
+ sa.Column('state_id_fips', sa.TEXT(), nullable=True),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name='pk_out_eia861__compiled_geometry_balancing_authority')
+ )
+ op.drop_table('out_eia861__compiled_geometry_utilities')
+ op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
+ # ### end Alembic commands ###
diff --git a/migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py b/migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py
new file mode 100644
index 0000000000..3b27a70679
--- /dev/null
+++ b/migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py
@@ -0,0 +1,103 @@
+"""Rename ferc714 respondent tables
+
+Revision ID: 79158fe4f428
+Revises: dfbc19b1cb34
+Create Date: 2023-09-20 16:27:40.621325
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '79158fe4f428'
+down_revision = 'dfbc19b1cb34'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_ferc714__fipsified_respondents',
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__fipsified_respondents_respondent_id_ferc714_core_ferc714__respondent_id'))
+ )
+ op.create_table('out_ferc714__summarized_demand',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
+ sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
+ sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
+ )
+ op.drop_table('fipsified_respondents_ferc714')
+ op.drop_table('summarized_demand_ferc714')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('summarized_demand_ferc714',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('respondent_id_ferc714', sa.INTEGER(), nullable=False),
+ sa.Column('demand_annual_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('population', sa.FLOAT(), nullable=True),
+ sa.Column('area_km2', sa.FLOAT(), nullable=True),
+ sa.Column('population_density_km2', sa.FLOAT(), nullable=True),
+ sa.Column('demand_annual_per_capita_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('demand_density_mwh_km2', sa.FLOAT(), nullable=True),
+ sa.Column('eia_code', sa.INTEGER(), nullable=True),
+ sa.Column('respondent_type', sa.VARCHAR(length=19), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name='fk_summarized_demand_ferc714_respondent_id_ferc714_core_ferc714__respondent_id'),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name='pk_summarized_demand_ferc714')
+ )
+ op.create_table('fipsified_respondents_ferc714',
+ sa.Column('eia_code', sa.INTEGER(), nullable=True),
+ sa.Column('respondent_type', sa.VARCHAR(length=19), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.INTEGER(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.TEXT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('state_id_fips', sa.TEXT(), nullable=True),
+ sa.Column('county_id_fips', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name='fk_fipsified_respondents_ferc714_respondent_id_ferc714_core_ferc714__respondent_id')
+ )
+ op.drop_table('out_ferc714__summarized_demand')
+ op.drop_table('out_ferc714__fipsified_respondents')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/service_territory.py b/src/pudl/analysis/service_territory.py
index dd38185d1d..62c2fc0099 100644
--- a/src/pudl/analysis/service_territory.py
+++ b/src/pudl/analysis/service_territory.py
@@ -28,7 +28,7 @@
MAP_CRS = "EPSG:3857" # For mapping w/ OSM baselayer tiles
CALC_CRS = "ESRI:102003" # For accurate area calculations
-ENTITY_TYPE = {"ba": "balancing_authority", "util": "utility"}
+ENTITY_TYPE = {"ba": "balancing_authorities", "util": "utilities"}
def utility_ids_all_eia(
@@ -355,7 +355,7 @@ def compiled_geoms_asset_factory(
"""Build asset definitions for balancing authority and utility geometries."""
@asset(
- name=f"compiled_geometry_{ENTITY_TYPE[entity_type]}_eia861",
+ name=f"out_eia861__compiled_geometry_{ENTITY_TYPE[entity_type]}",
io_manager_key=io_manager_key,
config_schema={
"dissolve": Field(
diff --git a/src/pudl/analysis/state_demand.py b/src/pudl/analysis/state_demand.py
index c4e6a73020..97938394d2 100644
--- a/src/pudl/analysis/state_demand.py
+++ b/src/pudl/analysis/state_demand.py
@@ -267,8 +267,8 @@ def load_ventyx_hourly_state_demand(path: str) -> pd.DataFrame:
@multi_asset(
compute_kind="Python",
outs={
- "raw_hourly_demand_matrix_ferc714": AssetOut(),
- "utc_offset_ferc714": AssetOut(),
+ "_out_ferc714__hourly_pivoted_demand_matrix": AssetOut(),
+ "_out_ferc714__utc_offset": AssetOut(),
},
)
def load_hourly_demand_matrix_ferc714(
@@ -457,13 +457,13 @@ def melt_ferc714_hourly_demand_matrix(
),
},
)
-def clean_hourly_demand_matrix_ferc714(
- context, raw_hourly_demand_matrix_ferc714: pd.DataFrame
+def _out_ferc714__hourly_demand_matrix(
+ context, _out_ferc714__hourly_pivoted_demand_matrix: pd.DataFrame
) -> pd.DataFrame:
"""Cleaned and nulled FERC 714 hourly demand matrix.
Args:
- raw_hourly_demand_matrix_ferc714: FERC 714 hourly demand data in a matrix form.
+ _out_ferc714__hourly_pivoted_demand_matrix: FERC 714 hourly demand data in a matrix form.
Returns:
df: Matrix with nulled anomalous values, where respondent-years with too few responses
@@ -471,7 +471,7 @@ def clean_hourly_demand_matrix_ferc714(
"""
min_data = context.op_config["min_data"]
min_data_fraction = context.op_config["min_data_fraction"]
- df = clean_ferc714_hourly_demand_matrix(raw_hourly_demand_matrix_ferc714)
+ df = clean_ferc714_hourly_demand_matrix(_out_ferc714__hourly_pivoted_demand_matrix)
df = filter_ferc714_hourly_demand_matrix(
df, min_data=min_data, min_data_fraction=min_data_fraction
)
@@ -479,8 +479,9 @@ def clean_hourly_demand_matrix_ferc714(
@asset(compute_kind="Python")
-def imputed_hourly_demand_ferc714(
- clean_hourly_demand_matrix_ferc714: pd.DataFrame, utc_offset_ferc714: pd.DataFrame
+def _out_ferc714__hourly_imputed_demand(
+ _out_ferc714__hourly_demand_matrix: pd.DataFrame,
+ _out_ferc714__utc_offset: pd.DataFrame,
) -> pd.DataFrame:
"""Imputed FERC714 hourly demand in long format.
@@ -489,14 +490,14 @@ def imputed_hourly_demand_ferc714(
melt data into a long format.
Args:
- clean_hourly_demand_matrix_ferc714: Cleaned hourly demand matrix from FERC 714.
- utc_offset_ferc714: Timezone by year for each respondent.
+ _out_ferc714__hourly_demand_matrix: Cleaned hourly demand matrix from FERC 714.
+ _out_ferc714__utc_offset: Timezone by year for each respondent.
Returns:
df: DataFrame with imputed FERC714 hourly demand.
"""
- df = impute_ferc714_hourly_demand_matrix(clean_hourly_demand_matrix_ferc714)
- df = melt_ferc714_hourly_demand_matrix(df, utc_offset_ferc714)
+ df = impute_ferc714_hourly_demand_matrix(_out_ferc714__hourly_demand_matrix)
+ df = melt_ferc714_hourly_demand_matrix(df, _out_ferc714__utc_offset)
return df
@@ -504,19 +505,19 @@ def imputed_hourly_demand_ferc714(
def county_assignments_ferc714(
- fipsified_respondents_ferc714,
+ out_ferc714__fipsified_respondents,
) -> pd.DataFrame:
"""Load FERC 714 county assignments.
Args:
- fipsified_respondents_ferc714: From `pudl.output.ferc714`, FERC 714 respondents
+ out_ferc714__fipsified_respondents: From `pudl.output.ferc714`, FERC 714 respondents
with county FIPS IDs.
Returns:
Dataframe with columns
`respondent_id_ferc714`, report `year` (int), and `county_id_fips`.
"""
- df = fipsified_respondents_ferc714[
+ df = out_ferc714__fipsified_respondents[
["respondent_id_ferc714", "county_id_fips", "report_date"]
]
# Drop rows where county is blank or a duplicate
@@ -586,20 +587,20 @@ def total_state_sales_eia861(
),
},
)
-def predicted_state_hourly_demand(
+def out_ferc714__hourly_predicted_state_demand(
context,
- imputed_hourly_demand_ferc714: pd.DataFrame,
+ _out_ferc714__hourly_imputed_demand: pd.DataFrame,
core_censusdp1__entity_county: pd.DataFrame,
- fipsified_respondents_ferc714: pd.DataFrame,
+ out_ferc714__fipsified_respondents: pd.DataFrame,
core_eia861__yearly_sales: pd.DataFrame = None,
) -> pd.DataFrame:
"""Predict state hourly demand.
Args:
- imputed_hourly_demand_ferc714: Hourly demand timeseries, with columns
+ _out_ferc714__hourly_imputed_demand: Hourly demand timeseries, with columns
`respondent_id_ferc714`, report `year`, `utc_datetime`, and `demand_mwh`.
core_censusdp1__entity_county: The county layer of the Census DP1 shapefile.
- fipsified_respondents_ferc714: Annual respondents with the county FIPS IDs
+ out_ferc714__fipsified_respondents: Annual respondents with the county FIPS IDs
for their service territories.
core_eia861__yearly_sales: EIA 861 sales data. If provided, the predicted hourly demand is
scaled to match these totals.
@@ -613,13 +614,15 @@ def predicted_state_hourly_demand(
mean_overlaps = context.op_config["mean_overlaps"]
# Call necessary functions
- count_assign_ferc714 = county_assignments_ferc714(fipsified_respondents_ferc714)
+ count_assign_ferc714 = county_assignments_ferc714(
+ out_ferc714__fipsified_respondents
+ )
counties = census_counties(core_censusdp1__entity_county)
total_sales_eia861 = total_state_sales_eia861(core_eia861__yearly_sales)
# Pre-compute list of respondent-years with demand
with_demand = (
- imputed_hourly_demand_ferc714.groupby(
+ _out_ferc714__hourly_imputed_demand.groupby(
["respondent_id_ferc714", "year"], as_index=False
)["demand_mwh"]
.sum()
@@ -653,7 +656,7 @@ def predicted_state_hourly_demand(
)["weight"].sum()
# Multiply respondent-state weights with demands
df = weights.merge(
- imputed_hourly_demand_ferc714, on=["respondent_id_ferc714", "year"]
+ _out_ferc714__hourly_imputed_demand, on=["respondent_id_ferc714", "year"]
)
df["demand_mwh"] *= df["weight"]
# Scale estimates using state totals
@@ -835,7 +838,7 @@ def main():
# --- Read in inputs from PUDL + dagster cache --- #
prediction = pudl.etl.defs.load_asset_value(
- AssetKey("predicted_state_hourly_demand")
+ AssetKey("out_ferc714__hourly_predicted_state_demand")
)
# --- Export results --- #
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index 561b09acfb..e9a8b513c4 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -45,7 +45,9 @@
*load_assets_from_modules([pudl.transform.ferc1], group_name="core_ferc1"),
*load_assets_from_modules([pudl.extract.ferc714], group_name="raw_ferc714"),
*load_assets_from_modules([pudl.transform.ferc714], group_name="core_ferc714"),
- *load_assets_from_modules([pudl.output.ferc714], group_name="respondents_ferc714"),
+ *load_assets_from_modules(
+ [pudl.output.ferc714], group_name="out_respondents_ferc714"
+ ),
*load_assets_from_modules(
[pudl.convert.censusdp1tract_to_sqlite, pudl.output.censusdp1tract],
group_name="core_censusdp1",
@@ -67,10 +69,10 @@
*load_assets_from_modules([pudl.analysis.mcoe], group_name="mcoe"),
*load_assets_from_modules([pudl.output.ferc1], group_name="out_ferc1"),
*load_assets_from_modules(
- [pudl.analysis.service_territory], group_name="service_territory_eia861"
+ [pudl.analysis.service_territory], group_name="out_service_territory_eia861"
),
*load_assets_from_modules(
- [pudl.analysis.state_demand], group_name="state_demand_ferc714"
+ [pudl.analysis.state_demand], group_name="out_state_demand_ferc714"
),
)
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 88b4d0d9c1..11a2042a22 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -14,19 +14,19 @@
"exclude": [
"core_eia861__yearly_advanced_metering_infrastructure",
"core_eia861__yearly_balancing_authority",
- "compiled_geometry_balancing_authority_eia861",
+ "out_eia861__compiled_geometry_balancing_authorities",
"core_eia861__yearly_demand_response",
"core_eia861__yearly_demand_response_water_heater",
"core_eia861__yearly_dynamic_pricing",
"core_eia861__yearly_energy_efficiency",
- "fipsified_respondents_ferc714",
+ "out_ferc714__fipsified_respondents",
"core_eia861__yearly_net_metering_customer_fuel_class",
"core_eia861__yearly_net_metering_misc",
"core_eia861__yearly_non_net_metering_customer_fuel_class",
"core_eia861__yearly_non_net_metering_misc",
"core_eia861__yearly_reliability",
"core_eia861__yearly_sales",
- "summarized_demand_ferc714",
+ "out_ferc714__summarized_demand",
],
},
},
@@ -696,7 +696,7 @@
"core_pudl__assn_utilities_eia",
"core_eia861__yearly_advanced_metering_infrastructure",
"core_eia861__assn_balancing_authority",
- "compiled_geometry_utility_eia861",
+ "out_eia861__compiled_geometry_utilities",
"core_eia861__yearly_demand_response",
"core_eia861__yearly_demand_response_water_heater",
"core_eia861__yearly_demand_side_management_ee_dr",
@@ -708,7 +708,7 @@
"core_eia861__yearly_distribution_systems",
"core_eia861__yearly_dynamic_pricing",
"core_eia861__yearly_energy_efficiency",
- "fipsified_respondents_ferc714",
+ "out_ferc714__fipsified_respondents",
"core_eia861__yearly_green_pricing",
"core_eia861__yearly_mergers",
"core_eia861__yearly_net_metering_customer_fuel_class",
@@ -720,7 +720,7 @@
"core_eia861__yearly_reliability",
"core_eia861__yearly_sales",
"core_eia861__yearly_service_territory",
- "summarized_demand_ferc714",
+ "out_ferc714__summarized_demand",
"core_eia861__assn_utility",
"core_eia861__yearly_utility_data_misc",
"core_eia861__yearly_utility_data_nerc",
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index 9de1fdfbc4..255882e5f5 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -450,7 +450,7 @@
"exclude": [
"core_eia861__yearly_advanced_metering_infrastructure",
"core_eia861__assn_balancing_authority",
- "compiled_geometry_utility_eia861",
+ "out_eia861__compiled_geometry_utilities",
"core_eia861__yearly_demand_response",
"core_eia861__yearly_demand_response_water_heater",
"core_eia861__yearly_demand_side_management_ee_dr",
@@ -477,7 +477,7 @@
"core_eia861__yearly_distribution_systems",
"core_eia861__yearly_dynamic_pricing",
"core_eia861__yearly_energy_efficiency",
- "fipsified_respondents_ferc714",
+ "out_ferc714__fipsified_respondents",
"core_eia861__yearly_green_pricing",
"mcoe_monthly",
"mcoe_generators_monthly",
@@ -491,7 +491,7 @@
"core_eia861__yearly_reliability",
"core_eia861__yearly_sales",
"core_eia861__yearly_service_territory",
- "summarized_demand_ferc714",
+ "out_ferc714__summarized_demand",
"core_eia861__assn_utility",
"core_eia861__yearly_utility_data_misc",
"core_eia861__yearly_utility_data_nerc",
diff --git a/src/pudl/metadata/resources/eia861.py b/src/pudl/metadata/resources/eia861.py
index 73141201ff..f1f806cb7a 100644
--- a/src/pudl/metadata/resources/eia861.py
+++ b/src/pudl/metadata/resources/eia861.py
@@ -656,7 +656,7 @@
"sources": ["eia861"],
"etl_group": "eia861",
},
- "compiled_geometry_utility_eia861": {
+ "out_eia861__compiled_geometry_utilities": {
"description": "County-level spatial data for EIA861 utilities.",
"schema": {
"fields": [
@@ -676,7 +676,7 @@
"field_namespace": "eia",
"etl_group": "service_territories",
},
- "compiled_geometry_balancing_authority_eia861": {
+ "out_eia861__compiled_geometry_balancing_authorities": {
"description": "County-level spatial data for EIA861 balancing authorities.",
"schema": {
"fields": [
diff --git a/src/pudl/metadata/resources/ferc714.py b/src/pudl/metadata/resources/ferc714.py
index 2ba89b1077..c82db99006 100644
--- a/src/pudl/metadata/resources/ferc714.py
+++ b/src/pudl/metadata/resources/ferc714.py
@@ -37,7 +37,7 @@
"field_namespace": "ferc714",
"etl_group": "ferc714",
},
- "fipsified_respondents_ferc714": {
+ "out_ferc714__fipsified_respondents": {
"description": (
"Annual respondents with the county FIPS IDs for their service territories."
),
@@ -67,7 +67,7 @@
"field_namespace": "ferc714",
"etl_group": "outputs",
},
- "summarized_demand_ferc714": {
+ "out_ferc714__summarized_demand": {
"description": (
"Compile FERC 714 annualized, categorized respondents and summarize values."
),
diff --git a/src/pudl/metadata/resources/pudl.py b/src/pudl/metadata/resources/pudl.py
index e065cc8b2c..a58f20f786 100644
--- a/src/pudl/metadata/resources/pudl.py
+++ b/src/pudl/metadata/resources/pudl.py
@@ -78,7 +78,7 @@
"field_namespace": "pudl",
"sources": ["pudl"],
},
- "predicted_state_hourly_demand": {
+ "out_ferc714__hourly_predicted_state_demand": {
"schema": {
"fields": [
"state_id_fips",
diff --git a/src/pudl/output/ferc714.py b/src/pudl/output/ferc714.py
index ab0150cbbd..789d0e945e 100644
--- a/src/pudl/output/ferc714.py
+++ b/src/pudl/output/ferc714.py
@@ -372,7 +372,7 @@ def filled_service_territory_eia861(
@asset(compute_kind="Python")
-def annualized_respondents_ferc714(
+def _out_ferc714__annualized_respondents(
core_ferc714__hourly_demand_pa: pd.DataFrame,
core_ferc714__respondent_id: pd.DataFrame,
) -> pd.DataFrame:
@@ -392,10 +392,10 @@ def annualized_respondents_ferc714(
for time in core_ferc714__hourly_demand_pa.report_date.unique()
if pd.notna(time)
]
- annualized_respondents_ferc714 = core_ferc714__respondent_id.pipe(
+ _out_ferc714__annualized_respondents = core_ferc714__respondent_id.pipe(
add_dates, report_dates
).pipe(apply_pudl_dtypes)
- return annualized_respondents_ferc714
+ return _out_ferc714__annualized_respondents
@asset(
@@ -412,13 +412,13 @@ def annualized_respondents_ferc714(
},
compute_kind="Python",
)
-def categorized_respondents_ferc714(
+def _out_ferc714__categorized_respondents(
context,
core_ferc714__respondent_id: pd.DataFrame,
out_eia__yearly_utilities: pd.DataFrame,
core_eia861__yearly_service_territory: pd.DataFrame,
core_eia861__yearly_balancing_authority: pd.DataFrame,
- annualized_respondents_ferc714: pd.DataFrame,
+ _out_ferc714__annualized_respondents: pd.DataFrame,
) -> pd.DataFrame:
"""Annualized respondents with ``respondent_type`` assigned if possible.
@@ -448,7 +448,9 @@ def categorized_respondents_ferc714(
logger.info(
"Merging categorized EIA codes with annualized FERC-714 Respondent data."
)
- categorized = pd.merge(categorized, annualized_respondents_ferc714, how="right")
+ categorized = pd.merge(
+ categorized, _out_ferc714__annualized_respondents, how="right"
+ )
# Names, ids, and codes for BAs identified as FERC 714 respondents
# NOTE: this is not *strictly* correct, because the EIA BAs are not
# eternal and unchanging. There's at least one case in which the BA
@@ -518,9 +520,9 @@ def categorized_respondents_ferc714(
compute_kind="Python",
io_manager_key="pudl_sqlite_io_manager",
)
-def fipsified_respondents_ferc714(
+def out_ferc714__fipsified_respondents(
context,
- categorized_respondents_ferc714: pd.DataFrame,
+ _out_ferc714__categorized_respondents: pd.DataFrame,
core_eia861__assn_balancing_authority: pd.DataFrame,
core_eia861__yearly_service_territory: pd.DataFrame,
core_eia861__assn_utility: pd.DataFrame,
@@ -548,9 +550,11 @@ def fipsified_respondents_ferc714(
# Generate the BA:FIPS relation:
ba_counties = pd.merge(
- categorized_respondents_ferc714.query("respondent_type=='balancing_authority'"),
+ _out_ferc714__categorized_respondents.query(
+ "respondent_type=='balancing_authority'"
+ ),
pudl.analysis.service_territory.get_territory_fips(
- ids=categorized_respondents_ferc714.balancing_authority_id_eia.unique(),
+ ids=_out_ferc714__categorized_respondents.balancing_authority_id_eia.unique(),
assn=assn,
assn_col="balancing_authority_id_eia",
core_eia861__yearly_service_territory=st_eia861,
@@ -561,9 +565,9 @@ def fipsified_respondents_ferc714(
)
# Generate the Util:FIPS relation:
util_counties = pd.merge(
- categorized_respondents_ferc714.query("respondent_type=='utility'"),
+ _out_ferc714__categorized_respondents.query("respondent_type=='utility'"),
pudl.analysis.service_territory.get_territory_fips(
- ids=categorized_respondents_ferc714.utility_id_eia.unique(),
+ ids=_out_ferc714__categorized_respondents.utility_id_eia.unique(),
assn=core_eia861__assn_utility,
assn_col="utility_id_eia",
core_eia861__yearly_service_territory=st_eia861,
@@ -576,8 +580,8 @@ def fipsified_respondents_ferc714(
[
ba_counties,
util_counties,
- categorized_respondents_ferc714[
- categorized_respondents_ferc714.respondent_type.isnull()
+ _out_ferc714__categorized_respondents[
+ _out_ferc714__categorized_respondents.respondent_type.isnull()
],
]
).pipe(apply_pudl_dtypes)
@@ -585,8 +589,8 @@ def fipsified_respondents_ferc714(
@asset(compute_kind="Python")
-def georeferenced_counties_ferc714(
- fipsified_respondents_ferc714: pd.DataFrame,
+def _out_ferc714__georeferenced_counties(
+ out_ferc714__fipsified_respondents: pd.DataFrame,
core_censusdp1__entity_county: gpd.GeoDataFrame,
) -> gpd.GeoDataFrame:
"""Annual respondents with all associated county-level geometries.
@@ -598,15 +602,15 @@ def georeferenced_counties_ferc714(
of the FIPS IDs so you can also still do ID based analyses.
"""
counties_gdf = pudl.analysis.service_territory.add_geometries(
- fipsified_respondents_ferc714, census_gdf=core_censusdp1__entity_county
+ out_ferc714__fipsified_respondents, census_gdf=core_censusdp1__entity_county
).pipe(apply_pudl_dtypes)
return counties_gdf
@asset(compute_kind="Python")
-def georeferenced_respondents_ferc714(
- fipsified_respondents_ferc714: pd.DataFrame,
- summarized_demand_ferc714: pd.DataFrame,
+def _out_ferc714__georeferenced_respondents(
+ out_ferc714__fipsified_respondents: pd.DataFrame,
+ out_ferc714__summarized_demand: pd.DataFrame,
core_censusdp1__entity_county: gpd.GeoDataFrame,
) -> gpd.GeoDataFrame:
"""Annual respondents with a single all-encompassing geometry for each year.
@@ -621,13 +625,13 @@ def georeferenced_respondents_ferc714(
"""
respondents_gdf = (
pudl.analysis.service_territory.add_geometries(
- fipsified_respondents_ferc714,
+ out_ferc714__fipsified_respondents,
census_gdf=core_censusdp1__entity_county,
dissolve=True,
dissolve_by=["report_date", "respondent_id_ferc714"],
)
.merge(
- summarized_demand_ferc714[
+ out_ferc714__summarized_demand[
["report_date", "respondent_id_ferc714", "demand_annual_mwh"]
]
)
@@ -637,12 +641,12 @@ def georeferenced_respondents_ferc714(
@asset(compute_kind="Python", io_manager_key="pudl_sqlite_io_manager")
-def summarized_demand_ferc714(
- annualized_respondents_ferc714: pd.DataFrame,
+def out_ferc714__summarized_demand(
+ _out_ferc714__annualized_respondents: pd.DataFrame,
core_ferc714__hourly_demand_pa: pd.DataFrame,
- fipsified_respondents_ferc714: pd.DataFrame,
- categorized_respondents_ferc714: pd.DataFrame,
- georeferenced_counties_ferc714: gpd.GeoDataFrame,
+ out_ferc714__fipsified_respondents: pd.DataFrame,
+ _out_ferc714__categorized_respondents: pd.DataFrame,
+ _out_ferc714__georeferenced_counties: gpd.GeoDataFrame,
) -> pd.DataFrame:
"""Compile annualized, categorized respondents and summarize values.
@@ -657,7 +661,7 @@ def summarized_demand_ferc714(
"""
demand_annual = (
pd.merge(
- annualized_respondents_ferc714,
+ _out_ferc714__annualized_respondents,
core_ferc714__hourly_demand_pa.loc[
:, ["report_date", "respondent_id_ferc714", "demand_mwh"]
],
@@ -668,7 +672,7 @@ def summarized_demand_ferc714(
.rename(columns={"demand_mwh": "demand_annual_mwh"})
.reset_index()
.merge(
- georeferenced_counties_ferc714.groupby(
+ _out_ferc714__georeferenced_counties.groupby(
["report_date", "respondent_id_ferc714"]
)
.agg({"population": sum, "area_km2": sum})
@@ -682,6 +686,6 @@ def summarized_demand_ferc714(
)
# Merge respondent categorizations into the annual demand
demand_summary = pd.merge(
- demand_annual, categorized_respondents_ferc714, how="left"
+ demand_annual, _out_ferc714__categorized_respondents, how="left"
).pipe(apply_pudl_dtypes)
return demand_summary
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index f8fcf0a4bb..2f68df02db 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -211,13 +211,13 @@ def _register_output_methods(self: Self):
# ferc714
"core_ferc714__respondent_id": "respondent_id_ferc714",
"core_ferc714__hourly_demand_pa": "demand_hourly_pa_ferc714",
- "fipsified_respondents_ferc714": "fipsified_respondents_ferc714",
- "summarized_demand_ferc714": "summarized_demand_ferc714",
+ "out_ferc714__fipsified_respondents": "fipsified_respondents_ferc714",
+ "out_ferc714__summarized_demand": "summarized_demand_ferc714",
# service territory
- "compiled_geometry_balancing_authority_eia861": "compiled_geometry_balancing_authority_eia861",
- "compiled_geometry_utility_eia861": "compiled_geometry_utility_eia861",
+ "out_eia861__compiled_geometry_balancing_authorities": "compiled_geometry_balancing_authority_eia861",
+ "out_eia861__compiled_geometry_utilities": "compiled_geometry_utility_eia861",
# state demand
- "predicted_state_hourly_demand": "predicted_state_hourly_demand",
+ "out_ferc714__hourly_predicted_state_demand": "predicted_state_hourly_demand",
}
table_method_map_any_agg = {
From 5ebedcd1151499535dc63c99c261fef4183e4778 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 21 Sep 2023 10:12:40 -0400
Subject: [PATCH 25/70] Fix refs to renamed tables in release notes
---
docs/release_notes.rst | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index aa67bc9345..65e33e738a 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -173,8 +173,8 @@ Data Coverage
* :ref:`core_ferc714__respondent_id` (linking FERC-714 respondents to EIA utilities)
* :ref:`core_ferc714__hourly_demand_pa` (hourly electricity demand by planning area)
- * :ref:`fipsified_respondents_ferc714` (annual respondents with county FIPS IDs)
- * :ref:`summarized_demand_ferc714` (annual demand for FERC-714 respondents)
+ * :ref:`out_ferc714__fipsified_respondents` (annual respondents with county FIPS IDs)
+ * :ref:`out_ferc714__summarized_demand` (annual demand for FERC-714 respondents)
* Added new table :ref:`core_epa__assn_epacamd_eia_subplant_ids`, which aguments the
:ref:`core_epa__assn_epacamd_eia` glue table. This table incorporates all
@@ -272,9 +272,10 @@ Analysis
* Added outputs from :mod:`pudl.analysis.service_territory` and
:mod:`pudl.analysis.state_demand` into PUDL. These outputs include the US Census
geometries associated with balancing authority and utility data from EIA 861
- (:ref:`compiled_geometry_balancing_authority_eia861` and
- :ref:`compiled_geometry_utility_eia861`), and the estimated total hourly electricity
- demand for each US state in :ref:`predicted_state_hourly_demand`. See :issue:`1973`
+ (:ref:`out_eia861__compiled_geometry_balancing_authorities` and
+ :ref:`out_eia861__compiled_geometry_utilities`), and the estimated total hourly
+ electricity demand for each US state in
+ :ref:`out_ferc714__hourly_predicted_state_demand`. See :issue:`1973`
and :pr:`2550`.
Deprecations
From 6ffe6a5e6b2d501f1c0b322a2fbaceff515a94b1 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 21 Sep 2023 11:52:14 -0400
Subject: [PATCH 26/70] Rename ferc714 and eia861 output tables in integration
tests
---
test/integration/output_test.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/test/integration/output_test.py b/test/integration/output_test.py
index 9439d405dd..b5bba6854c 100644
--- a/test/integration/output_test.py
+++ b/test/integration/output_test.py
@@ -160,8 +160,8 @@ def test_outputs_by_table_suffix(fast_out, table_suffix):
@pytest.mark.parametrize(
"df_name",
[
- "summarized_demand_ferc714",
- "fipsified_respondents_ferc714",
+ "out_ferc714__summarized_demand",
+ "out_ferc714__fipsified_respondents",
],
)
def test_ferc714_outputs(pudl_engine, df_name):
@@ -175,8 +175,8 @@ def test_ferc714_outputs(pudl_engine, df_name):
@pytest.mark.parametrize(
"df_name",
[
- "compiled_geometry_balancing_authority_eia861",
- "compiled_geometry_utility_eia861",
+ "out_eia861__compiled_geometry_balancing_authorities",
+ "out_eia861__compiled_geometry_utilities",
],
)
def test_service_territory_outputs(pudl_engine, df_name):
@@ -190,7 +190,7 @@ def test_service_territory_outputs(pudl_engine, df_name):
@pytest.mark.parametrize(
"df_name",
[
- "predicted_state_hourly_demand",
+ "out_ferc714__hourly_predicted_state_demand",
],
)
def test_state_demand_outputs(pudl_engine, df_name):
From 97149cbe3293c1a447d451449bcf8cd15c68b83e Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 25 Sep 2023 14:48:24 +0200
Subject: [PATCH 27/70] Add missing balance authority fk migration
---
.../84088c179e1d_fix_balance_authority_fk.py | 30 +++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 migrations/versions/84088c179e1d_fix_balance_authority_fk.py
diff --git a/migrations/versions/84088c179e1d_fix_balance_authority_fk.py b/migrations/versions/84088c179e1d_fix_balance_authority_fk.py
new file mode 100644
index 0000000000..c8216148ae
--- /dev/null
+++ b/migrations/versions/84088c179e1d_fix_balance_authority_fk.py
@@ -0,0 +1,30 @@
+"""Fix balance authority fk
+
+Revision ID: 84088c179e1d
+Revises: 232c79b90224
+Create Date: 2023-09-21 10:23:51.094487
+
+"""
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '84088c179e1d'
+down_revision = '232c79b90224'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
+ batch_op.drop_constraint('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities', type_='foreignkey')
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
+ batch_op.create_foreign_key('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities', 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
+
+ # ### end Alembic commands ###
From 6a5411a1a9d90e0b248ea6ee482b9bd1c828ade7 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Tue, 26 Sep 2023 14:18:03 +0200
Subject: [PATCH 28/70] Rename out_ferc714__fipsified_respondents to
out_ferc714__respondents_with_fips
---
docs/release_notes.rst | 2 +-
...7a126f9e_rename_out_ferc714__fipsified_.py | 61 +++++++++++++++++++
src/pudl/analysis/state_demand.py | 12 ++--
src/pudl/metadata/resources/eia.py | 4 +-
src/pudl/metadata/resources/eia860.py | 2 +-
src/pudl/metadata/resources/ferc714.py | 2 +-
src/pudl/output/ferc714.py | 12 ++--
src/pudl/output/pudltabl.py | 2 +-
test/integration/output_test.py | 2 +-
9 files changed, 80 insertions(+), 19 deletions(-)
create mode 100644 migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 65e33e738a..fffdef3fa6 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -173,7 +173,7 @@ Data Coverage
* :ref:`core_ferc714__respondent_id` (linking FERC-714 respondents to EIA utilities)
* :ref:`core_ferc714__hourly_demand_pa` (hourly electricity demand by planning area)
- * :ref:`out_ferc714__fipsified_respondents` (annual respondents with county FIPS IDs)
+ * :ref:`out_ferc714__respondents_with_fips` (annual respondents with county FIPS IDs)
* :ref:`out_ferc714__summarized_demand` (annual demand for FERC-714 respondents)
* Added new table :ref:`core_epa__assn_epacamd_eia_subplant_ids`, which aguments the
diff --git a/migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py b/migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py
new file mode 100644
index 0000000000..a3f6d3159a
--- /dev/null
+++ b/migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py
@@ -0,0 +1,61 @@
+"""Rename out_ferc714__fipsified_respondents
+
+Revision ID: c04b7a126f9e
+Revises: 84088c179e1d
+Create Date: 2023-09-26 13:53:27.145134
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'c04b7a126f9e'
+down_revision = '84088c179e1d'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_ferc714__respondents_with_fips',
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
+ )
+ op.drop_table('out_ferc714__fipsified_respondents')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_ferc714__fipsified_respondents',
+ sa.Column('eia_code', sa.INTEGER(), nullable=True),
+ sa.Column('respondent_type', sa.VARCHAR(length=19), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.INTEGER(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.TEXT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
+ sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('state', sa.TEXT(), nullable=True),
+ sa.Column('county', sa.TEXT(), nullable=True),
+ sa.Column('state_id_fips', sa.TEXT(), nullable=True),
+ sa.Column('county_id_fips', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name='fk_out_ferc714__fipsified_respondents_respondent_id_ferc714_core_ferc714__respondent_id')
+ )
+ op.drop_table('out_ferc714__respondents_with_fips')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/state_demand.py b/src/pudl/analysis/state_demand.py
index 97938394d2..09c558e062 100644
--- a/src/pudl/analysis/state_demand.py
+++ b/src/pudl/analysis/state_demand.py
@@ -505,19 +505,19 @@ def _out_ferc714__hourly_imputed_demand(
def county_assignments_ferc714(
- out_ferc714__fipsified_respondents,
+ out_ferc714__respondents_with_fips,
) -> pd.DataFrame:
"""Load FERC 714 county assignments.
Args:
- out_ferc714__fipsified_respondents: From `pudl.output.ferc714`, FERC 714 respondents
+ out_ferc714__respondents_with_fips: From `pudl.output.ferc714`, FERC 714 respondents
with county FIPS IDs.
Returns:
Dataframe with columns
`respondent_id_ferc714`, report `year` (int), and `county_id_fips`.
"""
- df = out_ferc714__fipsified_respondents[
+ df = out_ferc714__respondents_with_fips[
["respondent_id_ferc714", "county_id_fips", "report_date"]
]
# Drop rows where county is blank or a duplicate
@@ -591,7 +591,7 @@ def out_ferc714__hourly_predicted_state_demand(
context,
_out_ferc714__hourly_imputed_demand: pd.DataFrame,
core_censusdp1__entity_county: pd.DataFrame,
- out_ferc714__fipsified_respondents: pd.DataFrame,
+ out_ferc714__respondents_with_fips: pd.DataFrame,
core_eia861__yearly_sales: pd.DataFrame = None,
) -> pd.DataFrame:
"""Predict state hourly demand.
@@ -600,7 +600,7 @@ def out_ferc714__hourly_predicted_state_demand(
_out_ferc714__hourly_imputed_demand: Hourly demand timeseries, with columns
`respondent_id_ferc714`, report `year`, `utc_datetime`, and `demand_mwh`.
core_censusdp1__entity_county: The county layer of the Census DP1 shapefile.
- out_ferc714__fipsified_respondents: Annual respondents with the county FIPS IDs
+ out_ferc714__respondents_with_fips: Annual respondents with the county FIPS IDs
for their service territories.
core_eia861__yearly_sales: EIA 861 sales data. If provided, the predicted hourly demand is
scaled to match these totals.
@@ -615,7 +615,7 @@ def out_ferc714__hourly_predicted_state_demand(
# Call necessary functions
count_assign_ferc714 = county_assignments_ferc714(
- out_ferc714__fipsified_respondents
+ out_ferc714__respondents_with_fips
)
counties = census_counties(core_censusdp1__entity_county)
total_sales_eia861 = total_state_sales_eia861(core_eia861__yearly_sales)
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 11a2042a22..7ba9be04d0 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -19,7 +19,7 @@
"core_eia861__yearly_demand_response_water_heater",
"core_eia861__yearly_dynamic_pricing",
"core_eia861__yearly_energy_efficiency",
- "out_ferc714__fipsified_respondents",
+ "out_ferc714__respondents_with_fips",
"core_eia861__yearly_net_metering_customer_fuel_class",
"core_eia861__yearly_net_metering_misc",
"core_eia861__yearly_non_net_metering_customer_fuel_class",
@@ -708,7 +708,7 @@
"core_eia861__yearly_distribution_systems",
"core_eia861__yearly_dynamic_pricing",
"core_eia861__yearly_energy_efficiency",
- "out_ferc714__fipsified_respondents",
+ "out_ferc714__respondents_with_fips",
"core_eia861__yearly_green_pricing",
"core_eia861__yearly_mergers",
"core_eia861__yearly_net_metering_customer_fuel_class",
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index 255882e5f5..9b8f22ff3c 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -477,7 +477,7 @@
"core_eia861__yearly_distribution_systems",
"core_eia861__yearly_dynamic_pricing",
"core_eia861__yearly_energy_efficiency",
- "out_ferc714__fipsified_respondents",
+ "out_ferc714__respondents_with_fips",
"core_eia861__yearly_green_pricing",
"mcoe_monthly",
"mcoe_generators_monthly",
diff --git a/src/pudl/metadata/resources/ferc714.py b/src/pudl/metadata/resources/ferc714.py
index c82db99006..76baba2466 100644
--- a/src/pudl/metadata/resources/ferc714.py
+++ b/src/pudl/metadata/resources/ferc714.py
@@ -37,7 +37,7 @@
"field_namespace": "ferc714",
"etl_group": "ferc714",
},
- "out_ferc714__fipsified_respondents": {
+ "out_ferc714__respondents_with_fips": {
"description": (
"Annual respondents with the county FIPS IDs for their service territories."
),
diff --git a/src/pudl/output/ferc714.py b/src/pudl/output/ferc714.py
index 789d0e945e..863c46416b 100644
--- a/src/pudl/output/ferc714.py
+++ b/src/pudl/output/ferc714.py
@@ -520,7 +520,7 @@ def _out_ferc714__categorized_respondents(
compute_kind="Python",
io_manager_key="pudl_sqlite_io_manager",
)
-def out_ferc714__fipsified_respondents(
+def out_ferc714__respondents_with_fips(
context,
_out_ferc714__categorized_respondents: pd.DataFrame,
core_eia861__assn_balancing_authority: pd.DataFrame,
@@ -590,7 +590,7 @@ def out_ferc714__fipsified_respondents(
@asset(compute_kind="Python")
def _out_ferc714__georeferenced_counties(
- out_ferc714__fipsified_respondents: pd.DataFrame,
+ out_ferc714__respondents_with_fips: pd.DataFrame,
core_censusdp1__entity_county: gpd.GeoDataFrame,
) -> gpd.GeoDataFrame:
"""Annual respondents with all associated county-level geometries.
@@ -602,14 +602,14 @@ def _out_ferc714__georeferenced_counties(
of the FIPS IDs so you can also still do ID based analyses.
"""
counties_gdf = pudl.analysis.service_territory.add_geometries(
- out_ferc714__fipsified_respondents, census_gdf=core_censusdp1__entity_county
+ out_ferc714__respondents_with_fips, census_gdf=core_censusdp1__entity_county
).pipe(apply_pudl_dtypes)
return counties_gdf
@asset(compute_kind="Python")
def _out_ferc714__georeferenced_respondents(
- out_ferc714__fipsified_respondents: pd.DataFrame,
+ out_ferc714__respondents_with_fips: pd.DataFrame,
out_ferc714__summarized_demand: pd.DataFrame,
core_censusdp1__entity_county: gpd.GeoDataFrame,
) -> gpd.GeoDataFrame:
@@ -625,7 +625,7 @@ def _out_ferc714__georeferenced_respondents(
"""
respondents_gdf = (
pudl.analysis.service_territory.add_geometries(
- out_ferc714__fipsified_respondents,
+ out_ferc714__respondents_with_fips,
census_gdf=core_censusdp1__entity_county,
dissolve=True,
dissolve_by=["report_date", "respondent_id_ferc714"],
@@ -644,7 +644,7 @@ def _out_ferc714__georeferenced_respondents(
def out_ferc714__summarized_demand(
_out_ferc714__annualized_respondents: pd.DataFrame,
core_ferc714__hourly_demand_pa: pd.DataFrame,
- out_ferc714__fipsified_respondents: pd.DataFrame,
+ out_ferc714__respondents_with_fips: pd.DataFrame,
_out_ferc714__categorized_respondents: pd.DataFrame,
_out_ferc714__georeferenced_counties: gpd.GeoDataFrame,
) -> pd.DataFrame:
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 2f68df02db..b3500e5862 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -211,7 +211,7 @@ def _register_output_methods(self: Self):
# ferc714
"core_ferc714__respondent_id": "respondent_id_ferc714",
"core_ferc714__hourly_demand_pa": "demand_hourly_pa_ferc714",
- "out_ferc714__fipsified_respondents": "fipsified_respondents_ferc714",
+ "out_ferc714__respondents_with_fips": "fipsified_respondents_ferc714",
"out_ferc714__summarized_demand": "summarized_demand_ferc714",
# service territory
"out_eia861__compiled_geometry_balancing_authorities": "compiled_geometry_balancing_authority_eia861",
diff --git a/test/integration/output_test.py b/test/integration/output_test.py
index b5bba6854c..9452cf62a3 100644
--- a/test/integration/output_test.py
+++ b/test/integration/output_test.py
@@ -161,7 +161,7 @@ def test_outputs_by_table_suffix(fast_out, table_suffix):
"df_name",
[
"out_ferc714__summarized_demand",
- "out_ferc714__fipsified_respondents",
+ "out_ferc714__respondents_with_fips",
],
)
def test_ferc714_outputs(pudl_engine, df_name):
From 4d256ecd88c49167c78ae9061e93bd73b1c5affc Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Tue, 26 Sep 2023 15:22:14 +0200
Subject: [PATCH 29/70] Respond to first round of Austen's comments
---
docs/data_access.rst | 9 ++-
docs/dev/naming_conventions.rst | 66 +++++++++++++------
docs/intro.rst | 1 +
.../templates/datasette-metadata.yml.jinja | 12 ++--
4 files changed, 57 insertions(+), 31 deletions(-)
diff --git a/docs/data_access.rst b/docs/data_access.rst
index ca169afa23..bfacdb6501 100644
--- a/docs/data_access.rst
+++ b/docs/data_access.rst
@@ -8,11 +8,10 @@ PUDL data, so if you have a suggestion please `open a GitHub issue
`__. If you have a question you
can `create a GitHub discussion `__.
-PUDL's primary data output is the ``pudl.sqlite`` database. It contains a collection
-of tables that follow :ref:`PUDL's asset naming convention `. Tables
-with the ``core_`` prefix are normalized tables that serve as building blocks for the
-more denormalized and easy to work with ``output_`` tables. **We recommend only working
-with ``output_`` tables.**
+PUDL's primary data output is the ``pudl.sqlite`` database. We recommend working
+with tables with the ``out_`` prefix as these tables contain the most complete
+data. For more information about the different types of tables, read through
+:ref:`PUDL's naming conventions `.
.. _access-modes:
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 9d1e521b77..5becde4b9b 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -12,8 +12,12 @@ columns, data sources, and functions.
Asset Naming Conventions
---------------------------------------------------
-PUDL's data processing is divided into three layers of dagster assets: Raw, Core
-and Output. Asset names should generally follow this naming convention:
+PUDL's data processing is divided into three layers of Dagster assets: Raw, Core
+and Output. Dagster assets are the core unit of computation in PUDL. The outputs
+of assets can be persisted to any type of storage though PUDL outputs are typically
+tables in a SQLite database, parquet files or pickle files. The asset name is used
+for the table or parquet file name. Asset names should generally follow this naming
+convention:
.. code-block::
@@ -39,10 +43,12 @@ Raw layer
Core layer
^^^^^^^^^^
-* This layer contains well-modeled assets that serve as building blocks for downstream
- wide tables and analyses. Well-modeled means tables in the database have logical
+* This layer contains assets that typically break denormalized raw assets into
+ well-modeled tables that serve as building blocks for downstream wide tables
+ and analyses. Well-modeled means tables in the database have logical
primary keys, foreign keys, datatypes and generally follow
- :ref:`Tidy Data standards `.
+ :ref:`Tidy Data standards `. Assets in this layer create
+ consistent categorical variables, decuplicate and impute data.
These assets are typically stored in parquet files or tables in a database.
* Naming convention: ``core_{source}__{asset_type}_{asset_name}``
* ``asset_type`` describes how the asset is modeled and its role in PUDL’s
@@ -50,27 +56,37 @@ Core layer
* ``assn``: Association tables provide connections between entities. This data
can be manually compiled or extracted from data sources. Examples:
- ``core_pudl__assn_plants_eia``, ``core_eia861__assn_utility``.
+
+ * ``core_pudl__assn_plants_eia`` associates EIA Plant IDs and manually assigned
+ PUDL Plant IDs.
* ``codes``: Code tables contain more verbose descriptions of categorical codes
typically manually compiled from source data dictionaries. Examples:
- ``core_eia__codes_averaging_periods``, ``core_eia__codes_balancing_authorities``
+
+ * ``core_eia__codes_averaging_periods``
+ * ``core_eia__codes_balancing_authorities``
* ``entity``: Entity tables contain static information about entities. For example,
- the state a plant is located in, or the plant a boiler is a part of. Examples:
- ``core_eia__entity_boilers``, ``core_eia923__entity_coalmine``.
+ the state a plant is located in or the plant a boiler is a part of. Examples:
+
+ * ``core_eia__entity_boilers``
+ * ``core_eia923__entity_coalmine``.
* ``scd``: Slowly changing dimension tables describe attributes of entities that
rarely change. For example, the ownership or the capacity of a plant. Examples:
- ``core_eia860__scd_generators``, ``core_eia860__scd_plants``.
+
+ * ``core_eia860__scd_generators``
+ * ``core_eia860__scd_plants``.
* ``yearly/monthly/hourly``: Time series tables contain attributes about entities
that are expected to change for each reported timestamp. Time series tables
typically contain measurements of processes like net generation or co2 emissions.
- Examples: ``core_ferc714__hourly_demand_pa``,
- ``core_ferc1__yearly_plant_in_service``.
+ Examples:
+
+ * ``core_ferc714__hourly_demand_pa``,
+ * ``core_ferc1__yearly_plant_in_service``.
Output layer
^^^^^^^^^^^^
-* This layer uses assets in the Core layer to construct wide and complete tables
- suitable for users to perform analysis on. This layer can contain intermediate
- tables that bridge the core and user-facing tables.
+* Assets in this layer use the well modeled tables from the Core layer to construct
+ wide and complete tables suitable for users to perform analysis on. This layer
+ contains intermediate tables that bridge the core and user-facing tables.
* Naming convention: ``out_{source}__{asset_type}_{asset_name}``
* ``source`` is optional in this layer because there can be assets that join data from
multiple sources.
@@ -79,13 +95,18 @@ Output layer
Intermediate Assets
^^^^^^^^^^^^^^^^^^^
-* Intermediate assets are logical steps towards a final well-modeled core asset or
+* Intermediate assets are logical steps towards a final well-modeled core or
user-facing output asset. These assets are not intended to be persisted in the
database or accessible to the user. These assets are denoted by a preceding
underscore, like a private python method. For example, the intermediate asset
``_core_eia860__plants`` is a logical step towards the
``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets.
-* The number of intermediate assets should be limited to avoid an extremely
+ ``_core_eia860__plants`` does some basic cleaning of the ``raw_eia860__plant``
+ asset but still contains duplicate plant entities. The computation intensive
+ harvesting process deduplicates ``_core_eia860__plants`` and outputs the
+ ``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets which
+ follow Tiny Data standards.
+* Limit the number of intermediate assets to avoid an extremely
cluttered DAG. It is appropriate to create an intermediate asset when:
* there is a short and long running portion of a process. It is convenient to separate
@@ -115,12 +136,15 @@ that the quantities are actually different.
``plant_id_eia``)
* The data source or label (e.g. ``plant_id_pudl``) should follow the thing it
is describing
-* Units should be appended to field names where applicable (e.g.
+* Append units to field names where applicable (e.g.
``net_generation_mwh``). This includes "per unit" signifiers (e.g. ``_pct``
for percent, ``_ppm`` for parts per million, or a generic ``_per_unit`` when
the type of unit varies, as in columns containing a heterogeneous collection
of fuels)
-* Financial values are assumed to be in nominal US dollars.
+* Financial values are assumed to be in nominal US dollars (I.e., the suffix
+ _usd is implied.)If they are not reported in USD, convert them to USD. If
+ they must be kept in their original form for some reason, append a suffix
+ that lets the user know they are not USD.
* ``_id`` indicates the field contains a usually numerical reference to
another table, which will not be intelligible without looking up the value in
that other table.
@@ -155,8 +179,8 @@ as we come across them again in maintaining the code.
(e.g. connect_db), unless the function returns a simple value (e.g. datadir).
* No duplication of information (e.g. form names).
* lowercase, underscores separate words (i.e. ``snake_case``).
-* Semi-private helper functions (functions used within a single module only
- and not exposed via the public API) should be preceded by an underscore.
+* Add a preceeding underscore to semi-private helper functions (functions used
+ within a single module only and not exposed via the public API).
* When the object is a table, use the full table name (e.g. ingest_fuel_ferc1).
* When dataframe outputs are built from multiple tables, identify the type of
information being pulled (e.g. "plants") and the source of the tables (e.g.
diff --git a/docs/intro.rst b/docs/intro.rst
index c65642f43c..e338d35306 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -28,6 +28,7 @@ pages for each source:
We also publish SQLite databases containing relatively pristine versions of our more
difficult to parse inputs, especially the old Visual FoxPro (DBF, pre-2021) and new XBRL
data (2021+) published by FERC:
+
* `FERC Form 1 (DBF) `__
* `FERC Form 1 (XBRL) `__
* `FERC Form 2 (XBRL) `__
diff --git a/src/pudl/metadata/templates/datasette-metadata.yml.jinja b/src/pudl/metadata/templates/datasette-metadata.yml.jinja
index 4fc8e3aa42..2dd8f3c649 100644
--- a/src/pudl/metadata/templates/datasette-metadata.yml.jinja
+++ b/src/pudl/metadata/templates/datasette-metadata.yml.jinja
@@ -44,11 +44,13 @@ databases:
Data Liberation Project.
Note:
- - Tables with the "core_" prefix are normalized tables that serve as building blocks for the
- more denormalized and easy to work with "out_" tables.
- - We recommend only working with "out_" tables.
- - To learn more about how the database is organized check out
- PUDL's naming conventions.
+ - We recommend working
+ with tables with the ``out_`` prefix as these tables contain the most complete
+ data.
+
+ - For more information about the different types of tables, read through
+ PUDL's naming conventions
+
- If you find something wrong, please
make an issue
on GitHub to let us know.
From 1a9028df22215704acced445d953cd77fe959f5e Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Tue, 26 Sep 2023 16:21:48 +0200
Subject: [PATCH 30/70] Update rename-core-assets and clarify raw asset
sentence
---
docs/intro.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/intro.rst b/docs/intro.rst
index e338d35306..7bf02258a8 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -89,8 +89,8 @@ Assets in the Raw layer read the raw data from the original heterogeneous format
a collection of :class:`pandas.DataFrame` with uniform column names across all years so
that it can be easily processed in bulk. Data distributed as binary database files, such
as the DBF files from FERC Form 1, may be converted into a unified SQLite database
-before individual dataframes are created. Raw data assets are typically persisted to
-pickle files and are not distributed to users.
+before individual dataframes are created. Raw data assets are not written to
+``pudl.sqlite``, persisted to pickle files and not distributed to users.
.. seealso::
From 32dc9ac7c76b8e83673e4d963f133367d04a8af3 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Tue, 26 Sep 2023 17:17:51 +0200
Subject: [PATCH 31/70] Restrict astroid version to avoid random autoapi error
---
pyproject.toml | 1 +
1 file changed, 1 insertion(+)
diff --git a/pyproject.toml b/pyproject.toml
index 55e1fb2f6f..7c470b0679 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -116,6 +116,7 @@ dev = [
"twine>=3.3,<4.1",
]
doc = [
+ "astroid<3.0.0",
"doc8>=1.1,<1.2",
"furo>=2022.4.7",
"sphinx-autoapi>=1.8,<2.2",
From 765c42049827b7c931f8e85ddeea757ffaf2b780 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 28 Sep 2023 11:58:10 +0200
Subject: [PATCH 32/70] Reset migrations and fix old table refs in docs
---
...4e_rename_service_territory_and_demand_.py | 94 -
.../1c2c961a7be5_rename_ferc_output_assets.py | 1331 ------
...9b90224_make_service_territories_plural.py | 83 -
...694f6af_rename_allocate_gen_fuel_assets.py | 606 ---
...e4f428_rename_ferc714_respondent_tables.py | 103 -
...32937c386_rename_core_and_output_assets.py | 3803 +++++++++++++++++
.../84088c179e1d_fix_balance_authority_fk.py | 30 -
.../b3eb1a80721c_rename_eia_output_assets.py | 1607 -------
...7a126f9e_rename_out_ferc714__fipsified_.py | 61 -
...95fa9_rename_yearly_generation_fuel_by_.py | 65 -
...fbc19b1cb34_update_allocate_gen_fuel_fk.py | 44 -
src/pudl/output/ferc1.py | 8 +-
src/pudl/transform/ferc1.py | 20 +-
13 files changed, 3819 insertions(+), 4036 deletions(-)
delete mode 100644 migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py
delete mode 100644 migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py
delete mode 100644 migrations/versions/232c79b90224_make_service_territories_plural.py
delete mode 100644 migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
delete mode 100644 migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py
create mode 100644 migrations/versions/83d32937c386_rename_core_and_output_assets.py
delete mode 100644 migrations/versions/84088c179e1d_fix_balance_authority_fk.py
delete mode 100644 migrations/versions/b3eb1a80721c_rename_eia_output_assets.py
delete mode 100644 migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py
delete mode 100644 migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py
delete mode 100644 migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py
diff --git a/migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py b/migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py
deleted file mode 100644
index 6907d2ddda..0000000000
--- a/migrations/versions/027d56be4d4e_rename_service_territory_and_demand_.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""Rename service territory and demand tables
-
-Revision ID: 027d56be4d4e
-Revises: 79158fe4f428
-Create Date: 2023-09-21 08:38:10.224197
-
-"""
-import sqlalchemy as sa
-from alembic import op
-from sqlalchemy.dialects import sqlite
-
-# revision identifiers, used by Alembic.
-revision = '027d56be4d4e'
-down_revision = '79158fe4f428'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_eia861__compiled_geometry_balancing_authority',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authority'))
- )
- op.create_table('out_eia861__compiled_geometry_utility',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utility'))
- )
- op.create_table('out_ferc714__hourly_predicted_state_demand',
- sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
- sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
- sa.Column('demand_mwh', sa.Float(), nullable=True),
- sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
- sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
- )
- op.drop_table('compiled_geometry_balancing_authority_eia861')
- op.drop_table('predicted_state_hourly_demand')
- op.drop_table('compiled_geometry_utility_eia861')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('compiled_geometry_utility_eia861',
- sa.Column('county_id_fips', sa.TEXT(), nullable=False),
- sa.Column('county_name_census', sa.TEXT(), nullable=True),
- sa.Column('population', sa.FLOAT(), nullable=True),
- sa.Column('area_km2', sa.FLOAT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('state_id_fips', sa.TEXT(), nullable=True),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name='pk_compiled_geometry_utility_eia861')
- )
- op.create_table('predicted_state_hourly_demand',
- sa.Column('state_id_fips', sa.TEXT(), nullable=False),
- sa.Column('utc_datetime', sa.DATETIME(), nullable=False),
- sa.Column('demand_mwh', sa.FLOAT(), nullable=True),
- sa.Column('scaled_demand_mwh', sa.FLOAT(), nullable=True),
- sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name='pk_predicted_state_hourly_demand')
- )
- op.create_table('compiled_geometry_balancing_authority_eia861',
- sa.Column('county_id_fips', sa.TEXT(), nullable=False),
- sa.Column('county_name_census', sa.TEXT(), nullable=True),
- sa.Column('population', sa.FLOAT(), nullable=True),
- sa.Column('area_km2', sa.FLOAT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=False),
- sa.Column('state_id_fips', sa.TEXT(), nullable=True),
- sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name='pk_compiled_geometry_balancing_authority_eia861')
- )
- op.drop_table('out_ferc714__hourly_predicted_state_demand')
- op.drop_table('out_eia861__compiled_geometry_utility')
- op.drop_table('out_eia861__compiled_geometry_balancing_authority')
- # ### end Alembic commands ###
diff --git a/migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py b/migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py
deleted file mode 100644
index ab18d0278a..0000000000
--- a/migrations/versions/1c2c961a7be5_rename_ferc_output_assets.py
+++ /dev/null
@@ -1,1331 +0,0 @@
-"""Rename ferc output assets
-
-Revision ID: 1c2c961a7be5
-Revises: 2ba971d7e675
-Create Date: 2023-09-15 14:34:47.739335
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '1c2c961a7be5'
-down_revision = '2ba971d7e675'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_ferc1__yearly_balance_sheet_assets',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets'))
- )
- op.create_table('out_ferc1__yearly_balance_sheet_liabilities',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities'))
- )
- op.create_table('out_ferc1__yearly_cash_flow',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
- sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flow'))
- )
- op.create_table('out_ferc1__yearly_depreciation_amortization_summary',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_amortization_summary'))
- )
- op.create_table('out_ferc1__yearly_electric_energy_dispositions',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_electric_energy_dispositions'))
- )
- op.create_table('out_ferc1__yearly_electric_energy_sources',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_electric_energy_sources'))
- )
- op.create_table('out_ferc1__yearly_electric_operating_expenses',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_electric_operating_expenses'))
- )
- op.create_table('out_ferc1__yearly_electric_operating_revenues',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_electric_operating_revenues'))
- )
- op.create_table('out_ferc1__yearly_electric_plant_depreciation_changes',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_changes'))
- )
- op.create_table('out_ferc1__yearly_electric_plant_depreciation_functional',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_functional'))
- )
- op.create_table('out_ferc1__yearly_electricity_sales_by_rate_schedule',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
- sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
- sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
- sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_income_statement',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statement'))
- )
- op.create_table('out_ferc1__yearly_other_regulatory_liabilities',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
- sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_plant_in_service',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service'))
- )
- op.create_table('out_ferc1__yearly_purchased_power',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
- sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
- sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
- sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
- sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
- sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
- sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_retained_earnings',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings'))
- )
- op.create_table('out_ferc1__yearly_transmission_statistics',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
- sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
- sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
- sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
- sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
- sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
- sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
- sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
- sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_utility_plant_summary',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary'))
- )
- op.create_table('_out_ferc1__yearly_hydro_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydro_plants'))
- )
- op.create_table('_out_ferc1__yearly_plants_utilities',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
- )
- op.create_table('_out_ferc1__yearly_pumped_storage_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants'))
- )
- op.create_table('_out_ferc1__yearly_small_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants'))
- )
- op.create_table('_out_ferc1__yearly_steam_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants'))
- )
- op.create_table('out_ferc1__yearly_all_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
- )
- op.create_table('out_ferc1__yearly_fuel',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_fuel'))
- )
- op.create_table('out_ferc1__yearly_fuel_by_plant',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
- sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
- sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
- sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
- sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
- sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
- sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
- sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
- sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
- sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
- sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_fuel_by_plant'))
- )
- op.drop_table('denorm_plants_small_ferc1')
- op.drop_table('denorm_plant_in_service_ferc1')
- op.drop_table('denorm_plants_steam_ferc1')
- op.drop_table('denorm_income_statement_ferc1')
- op.drop_table('denorm_other_regulatory_liabilities_ferc1')
- op.drop_table('denorm_utility_plant_summary_ferc1')
- op.drop_table('denorm_transmission_statistics_ferc1')
- op.drop_table('denorm_electricity_sales_by_rate_schedule_ferc1')
- op.drop_table('denorm_plants_hydro_ferc1')
- op.drop_table('denorm_electric_operating_expenses_ferc1')
- op.drop_table('denorm_cash_flow_ferc1')
- op.drop_table('denorm_purchased_power_ferc1')
- op.drop_table('denorm_plants_all_ferc1')
- op.drop_table('denorm_plants_pumped_storage_ferc1')
- op.drop_table('denorm_fuel_by_plant_ferc1')
- op.drop_table('denorm_electric_operating_revenues_ferc1')
- op.drop_table('denorm_electric_plant_depreciation_functional_ferc1')
- op.drop_table('denorm_electric_energy_dispositions_ferc1')
- op.drop_table('denorm_balance_sheet_assets_ferc1')
- op.drop_table('denorm_plants_utilities_ferc1')
- op.drop_table('denorm_balance_sheet_liabilities_ferc1')
- op.drop_table('denorm_retained_earnings_ferc1')
- op.drop_table('denorm_depreciation_amortization_summary_ferc1')
- op.drop_table('denorm_electric_plant_depreciation_changes_ferc1')
- op.drop_table('denorm_electric_energy_sources_ferc1')
- op.drop_table('denorm_fuel_ferc1')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('denorm_fuel_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_total_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_unit_burned', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_unit_delivered', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_units', sa.VARCHAR(length=6), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_fuel_ferc1')
- )
- op.create_table('denorm_electric_energy_sources_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('energy_source_type', sa.TEXT(), nullable=False),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_sources_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name='pk_denorm_electric_energy_sources_ferc1')
- )
- op.create_table('denorm_electric_plant_depreciation_changes_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('depreciation_type', sa.TEXT(), nullable=False),
- sa.Column('plant_status', sa.TEXT(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_changes_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_changes_ferc1')
- )
- op.create_table('denorm_depreciation_amortization_summary_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_function', sa.TEXT(), nullable=False),
- sa.Column('ferc_account_label', sa.TEXT(), nullable=False),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_depreciation_amortization_summary_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name='pk_denorm_depreciation_amortization_summary_ferc1')
- )
- op.create_table('denorm_retained_earnings_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('earnings_type', sa.TEXT(), nullable=False),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_retained_earnings_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_retained_earnings_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name='pk_denorm_retained_earnings_ferc1')
- )
- op.create_table('denorm_balance_sheet_liabilities_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('liability_type', sa.TEXT(), nullable=False),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_liabilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name='pk_denorm_balance_sheet_liabilities_ferc1')
- )
- op.create_table('denorm_plants_utilities_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_utilities_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name='pk_denorm_plants_utilities_ferc1')
- )
- op.create_table('denorm_balance_sheet_assets_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('asset_type', sa.TEXT(), nullable=False),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_balance_sheet_assets_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name='pk_denorm_balance_sheet_assets_ferc1')
- )
- op.create_table('denorm_electric_energy_dispositions_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('energy_disposition_type', sa.TEXT(), nullable=False),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('energy_mwh', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_energy_dispositions_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name='pk_denorm_electric_energy_dispositions_ferc1')
- )
- op.create_table('denorm_electric_plant_depreciation_functional_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('plant_function', sa.TEXT(), nullable=False),
- sa.Column('plant_status', sa.TEXT(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_plant_depreciation_functional_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name='pk_denorm_electric_plant_depreciation_functional_ferc1')
- )
- op.create_table('denorm_electric_operating_revenues_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('revenue_type', sa.TEXT(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
- sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_revenues_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name='pk_denorm_electric_operating_revenues_ferc1')
- )
- op.create_table('denorm_fuel_by_plant_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=False),
- sa.Column('coal_fraction_cost', sa.FLOAT(), nullable=True),
- sa.Column('coal_fraction_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('gas_fraction_cost', sa.FLOAT(), nullable=True),
- sa.Column('gas_fraction_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('nuclear_fraction_cost', sa.FLOAT(), nullable=True),
- sa.Column('nuclear_fraction_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('oil_fraction_cost', sa.FLOAT(), nullable=True),
- sa.Column('oil_fraction_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('primary_fuel_by_cost', sa.TEXT(), nullable=True),
- sa.Column('primary_fuel_by_mmbtu', sa.TEXT(), nullable=True),
- sa.Column('waste_fraction_cost', sa.FLOAT(), nullable=True),
- sa.Column('waste_fraction_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_by_plant_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name='pk_denorm_fuel_by_plant_ferc1')
- )
- op.create_table('denorm_plants_pumped_storage_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
- sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
- sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
- sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_roads', sa.FLOAT(), nullable=True),
- sa.Column('capex_structures', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
- sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
- sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
- sa.Column('installation_year', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_dams', sa.FLOAT(), nullable=True),
- sa.Column('opex_electric', sa.FLOAT(), nullable=True),
- sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
- sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_structures', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
- sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('project_num', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_pumped_storage_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_pumped_storage_ferc1')
- )
- op.create_table('denorm_plants_all_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
- sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_addition', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_addition_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_kw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mw_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mwh_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
- sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_structures', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_wo_retirement_total', sa.FLOAT(), nullable=True),
- sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
- sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('installation_year', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('not_water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('opex_allowances', sa.FLOAT(), nullable=True),
- sa.Column('opex_boiler', sa.FLOAT(), nullable=True),
- sa.Column('opex_coolants', sa.FLOAT(), nullable=True),
- sa.Column('opex_electric', sa.FLOAT(), nullable=True),
- sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
- sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_power', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_steam', sa.FLOAT(), nullable=True),
- sa.Column('opex_nonfuel_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_steam', sa.FLOAT(), nullable=True),
- sa.Column('opex_steam_other', sa.FLOAT(), nullable=True),
- sa.Column('opex_structures', sa.FLOAT(), nullable=True),
- sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_transfer', sa.FLOAT(), nullable=True),
- sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
- sa.Column('plant_type', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type', sa.TEXT(), nullable=True),
- sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
- sa.Column('capex_roads', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('opex_dams', sa.FLOAT(), nullable=True),
- sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
- sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
- sa.Column('ferc_license_id', sa.TEXT(), nullable=True),
- sa.Column('capex_equipment_electric', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment_misc', sa.FLOAT(), nullable=True),
- sa.Column('capex_wheels_turbines_generators', sa.FLOAT(), nullable=True),
- sa.Column('energy_used_for_pumping_mwh', sa.FLOAT(), nullable=True),
- sa.Column('net_load_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_before_pumping', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumped_storage', sa.FLOAT(), nullable=True),
- sa.Column('opex_pumping', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_all_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_all_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_all_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_all_ferc1')
- )
- op.create_table('denorm_purchased_power_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('seller_name', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('billing_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('delivered_mwh', sa.FLOAT(), nullable=True),
- sa.Column('demand_charges', sa.FLOAT(), nullable=True),
- sa.Column('energy_charges', sa.FLOAT(), nullable=True),
- sa.Column('non_coincident_peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('other_charges', sa.FLOAT(), nullable=True),
- sa.Column('purchase_type_code', sa.TEXT(), nullable=True),
- sa.Column('purchased_mwh', sa.FLOAT(), nullable=True),
- sa.Column('received_mwh', sa.FLOAT(), nullable=True),
- sa.Column('tariff', sa.TEXT(), nullable=True),
- sa.Column('total_settlement', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name='fk_denorm_purchased_power_ferc1_purchase_type_code_core_ferc1__codes_power_purchase_types'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_purchased_power_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_purchased_power_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_cash_flow_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('amount_type', sa.TEXT(), nullable=False),
- sa.Column('amount', sa.FLOAT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_cash_flow_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_cash_flow_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name='pk_denorm_cash_flow_ferc1')
- )
- op.create_table('denorm_electric_operating_expenses_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('expense_type', sa.TEXT(), nullable=False),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electric_operating_expenses_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name='pk_denorm_electric_operating_expenses_ferc1')
- )
- op.create_table('denorm_plants_hydro_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
- sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
- sa.Column('capex_facilities', sa.FLOAT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
- sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_roads', sa.FLOAT(), nullable=True),
- sa.Column('capex_structures', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
- sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('installation_year', sa.INTEGER(), nullable=True),
- sa.Column('net_capacity_adverse_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_favorable_conditions_mw', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_dams', sa.FLOAT(), nullable=True),
- sa.Column('opex_electric', sa.FLOAT(), nullable=True),
- sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
- sa.Column('opex_generation_misc', sa.FLOAT(), nullable=True),
- sa.Column('opex_hydraulic', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_plant', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_structures', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_water_for_power', sa.FLOAT(), nullable=True),
- sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_type', sa.TEXT(), nullable=True),
- sa.Column('project_num', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_hydro_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_hydro_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_hydro_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_hydro_ferc1')
- )
- op.create_table('denorm_electricity_sales_by_rate_schedule_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('rate_schedule_type', sa.TEXT(), nullable=True),
- sa.Column('billing_status', sa.TEXT(), nullable=True),
- sa.Column('rate_schedule_description', sa.TEXT(), nullable=True),
- sa.Column('sales_mwh', sa.FLOAT(), nullable=True),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('avg_customers_per_month', sa.FLOAT(), nullable=True),
- sa.Column('kwh_per_customer', sa.FLOAT(), nullable=True),
- sa.Column('revenue_per_kwh', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_electricity_sales_by_rate_schedule_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_transmission_statistics_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('start_point', sa.TEXT(), nullable=True),
- sa.Column('end_point', sa.TEXT(), nullable=True),
- sa.Column('operating_voltage_kv', sa.FLOAT(), nullable=True),
- sa.Column('designed_voltage_kv', sa.FLOAT(), nullable=True),
- sa.Column('supporting_structure_type', sa.TEXT(), nullable=True),
- sa.Column('transmission_line_length_miles', sa.FLOAT(), nullable=True),
- sa.Column('transmission_line_and_structures_length_miles', sa.FLOAT(), nullable=True),
- sa.Column('num_transmission_circuits', sa.INTEGER(), nullable=True),
- sa.Column('conductor_size_and_material', sa.TEXT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
- sa.Column('capex_other', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_transmission_statistics_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_transmission_statistics_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_utility_plant_summary_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('utility_type_other', sa.TEXT(), nullable=True),
- sa.Column('utility_plant_asset_type', sa.TEXT(), nullable=False),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_utility_plant_summary_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name='pk_denorm_utility_plant_summary_ferc1')
- )
- op.create_table('denorm_other_regulatory_liabilities_ferc1',
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('description', sa.TEXT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('increase_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
- sa.Column('account_detail', sa.TEXT(), nullable=True),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_other_regulatory_liabilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_income_statement_ferc1',
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_type', sa.TEXT(), nullable=False),
- sa.Column('income_type', sa.TEXT(), nullable=False),
- sa.Column('dollar_value', sa.FLOAT(), nullable=True),
- sa.Column('balance', sa.TEXT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_income_statement_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_income_statement_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name='pk_denorm_income_statement_ferc1')
- )
- op.create_table('denorm_plants_steam_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('asset_retirement_cost', sa.FLOAT(), nullable=True),
- sa.Column('avg_num_employees', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_addition', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_addition_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_kw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mw_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('capex_annual_per_mwh_rolling', sa.FLOAT(), nullable=True),
- sa.Column('capex_equipment', sa.FLOAT(), nullable=True),
- sa.Column('capex_land', sa.FLOAT(), nullable=True),
- sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_structures', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('capex_wo_retirement_total', sa.FLOAT(), nullable=True),
- sa.Column('construction_type', sa.VARCHAR(length=12), nullable=True),
- sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('installation_year', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('not_water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('opex_allowances', sa.FLOAT(), nullable=True),
- sa.Column('opex_boiler', sa.FLOAT(), nullable=True),
- sa.Column('opex_coolants', sa.FLOAT(), nullable=True),
- sa.Column('opex_electric', sa.FLOAT(), nullable=True),
- sa.Column('opex_engineering', sa.FLOAT(), nullable=True),
- sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_fuel_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_power', sa.FLOAT(), nullable=True),
- sa.Column('opex_misc_steam', sa.FLOAT(), nullable=True),
- sa.Column('opex_nonfuel_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_plants', sa.FLOAT(), nullable=True),
- sa.Column('opex_production_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_rents', sa.FLOAT(), nullable=True),
- sa.Column('opex_steam', sa.FLOAT(), nullable=True),
- sa.Column('opex_steam_other', sa.FLOAT(), nullable=True),
- sa.Column('opex_structures', sa.FLOAT(), nullable=True),
- sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_transfer', sa.FLOAT(), nullable=True),
- sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_capability_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_hours_connected_while_generating', sa.FLOAT(), nullable=True),
- sa.Column('plant_type', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.Column('water_limited_capacity_mw', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_steam_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_steam_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_steam_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_steam_ferc1')
- )
- op.create_table('denorm_plant_in_service_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=True),
- sa.Column('additions', sa.FLOAT(), nullable=True),
- sa.Column('adjustments', sa.FLOAT(), nullable=True),
- sa.Column('ending_balance', sa.FLOAT(), nullable=True),
- sa.Column('ferc_account', sa.TEXT(), nullable=True),
- sa.Column('ferc_account_label', sa.TEXT(), nullable=False),
- sa.Column('retirements', sa.FLOAT(), nullable=True),
- sa.Column('row_type_xbrl', sa.VARCHAR(length=16), nullable=True),
- sa.Column('starting_balance', sa.FLOAT(), nullable=True),
- sa.Column('transfers', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name='fk_denorm_plant_in_service_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plant_in_service_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name='pk_denorm_plant_in_service_ferc1')
- )
- op.create_table('denorm_plants_small_ferc1',
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_ferc1', sa.TEXT(), nullable=True),
- sa.Column('record_id', sa.TEXT(), nullable=False),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_per_mw', sa.FLOAT(), nullable=True),
- sa.Column('capex_total', sa.FLOAT(), nullable=True),
- sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type', sa.TEXT(), nullable=True),
- sa.Column('license_id_ferc1', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('opex_fuel', sa.FLOAT(), nullable=True),
- sa.Column('opex_maintenance', sa.FLOAT(), nullable=True),
- sa.Column('opex_operations', sa.FLOAT(), nullable=True),
- sa.Column('opex_total', sa.FLOAT(), nullable=True),
- sa.Column('opex_total_nonfuel', sa.FLOAT(), nullable=True),
- sa.Column('peak_demand_mw', sa.FLOAT(), nullable=True),
- sa.Column('plant_type', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_small_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name='fk_denorm_plants_small_ferc1_utility_id_ferc1_core_pudl__assn_plants_ferc1'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_small_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id', name='pk_denorm_plants_small_ferc1')
- )
- op.drop_table('out_ferc1__yearly_fuel_by_plant')
- op.drop_table('out_ferc1__yearly_fuel')
- op.drop_table('out_ferc1__yearly_all_plants')
- op.drop_table('_out_ferc1__yearly_steam_plants')
- op.drop_table('_out_ferc1__yearly_small_plants')
- op.drop_table('_out_ferc1__yearly_pumped_storage_plants')
- op.drop_table('_out_ferc1__yearly_plants_utilities')
- op.drop_table('_out_ferc1__yearly_hydro_plants')
- op.drop_table('out_ferc1__yearly_utility_plant_summary')
- op.drop_table('out_ferc1__yearly_transmission_statistics')
- op.drop_table('out_ferc1__yearly_retained_earnings')
- op.drop_table('out_ferc1__yearly_purchased_power')
- op.drop_table('out_ferc1__yearly_plant_in_service')
- op.drop_table('out_ferc1__yearly_other_regulatory_liabilities')
- op.drop_table('out_ferc1__yearly_income_statement')
- op.drop_table('out_ferc1__yearly_electricity_sales_by_rate_schedule')
- op.drop_table('out_ferc1__yearly_electric_plant_depreciation_functional')
- op.drop_table('out_ferc1__yearly_electric_plant_depreciation_changes')
- op.drop_table('out_ferc1__yearly_electric_operating_revenues')
- op.drop_table('out_ferc1__yearly_electric_operating_expenses')
- op.drop_table('out_ferc1__yearly_electric_energy_sources')
- op.drop_table('out_ferc1__yearly_electric_energy_dispositions')
- op.drop_table('out_ferc1__yearly_depreciation_amortization_summary')
- op.drop_table('out_ferc1__yearly_cash_flow')
- op.drop_table('out_ferc1__yearly_balance_sheet_liabilities')
- op.drop_table('out_ferc1__yearly_balance_sheet_assets')
- # ### end Alembic commands ###
diff --git a/migrations/versions/232c79b90224_make_service_territories_plural.py b/migrations/versions/232c79b90224_make_service_territories_plural.py
deleted file mode 100644
index d9b082918e..0000000000
--- a/migrations/versions/232c79b90224_make_service_territories_plural.py
+++ /dev/null
@@ -1,83 +0,0 @@
-"""Make service territories plural
-
-Revision ID: 232c79b90224
-Revises: 027d56be4d4e
-Create Date: 2023-09-21 09:02:11.211316
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '232c79b90224'
-down_revision = '027d56be4d4e'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_eia861__compiled_geometry_balancing_authorities',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
- )
- op.create_table('out_eia861__compiled_geometry_utilities',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
- )
- op.drop_table('out_eia861__compiled_geometry_balancing_authority')
- op.drop_table('out_eia861__compiled_geometry_utility')
- with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
- batch_op.create_foreign_key(batch_op.f('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities'), 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities'), type_='foreignkey')
-
- op.create_table('out_eia861__compiled_geometry_utility',
- sa.Column('county_id_fips', sa.TEXT(), nullable=False),
- sa.Column('county_name_census', sa.TEXT(), nullable=True),
- sa.Column('population', sa.FLOAT(), nullable=True),
- sa.Column('area_km2', sa.FLOAT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('state_id_fips', sa.TEXT(), nullable=True),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name='pk_out_eia861__compiled_geometry_utility')
- )
- op.create_table('out_eia861__compiled_geometry_balancing_authority',
- sa.Column('county_id_fips', sa.TEXT(), nullable=False),
- sa.Column('county_name_census', sa.TEXT(), nullable=True),
- sa.Column('population', sa.FLOAT(), nullable=True),
- sa.Column('area_km2', sa.FLOAT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=False),
- sa.Column('state_id_fips', sa.TEXT(), nullable=True),
- sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name='pk_out_eia861__compiled_geometry_balancing_authority')
- )
- op.drop_table('out_eia861__compiled_geometry_utilities')
- op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
- # ### end Alembic commands ###
diff --git a/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py b/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
deleted file mode 100644
index 4476e028b9..0000000000
--- a/migrations/versions/62f1f694f6af_rename_allocate_gen_fuel_assets.py
+++ /dev/null
@@ -1,606 +0,0 @@
-"""Rename allocate_gen_fuel assets
-
-Revision ID: 62f1f694f6af
-Revises: c73882df0765
-Create Date: 2023-09-18 12:08:46.028634
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = "62f1f694f6af"
-down_revision = "b3eb1a80721c"
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table(
- "out_eia923__monthly_generation_fuel_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia923__monthly_generation_fuel_by_generator"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_by_generator_energy_source",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name=op.f(
- "pk_out_eia923__monthly_generation_fuel_by_generator_energy_source"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia923__yearly_generation_fuel_by_generator"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator_energy_source",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name=op.f(
- "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source"
- ),
- ),
- )
- op.drop_table("generation_fuel_by_generator_yearly_eia923")
- op.drop_table("generation_fuel_by_generator_energy_source_monthly_eia923")
- op.drop_table("generation_fuel_by_generator_energy_source_yearly_eia923")
- op.drop_table("generation_fuel_by_generator_monthly_eia923")
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table(
- "generation_fuel_by_generator_monthly_eia923",
- sa.Column("report_date", sa.DATE(), nullable=False),
- sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
- sa.Column("plant_id_pudl", sa.INTEGER(), nullable=True),
- sa.Column("plant_name_eia", sa.TEXT(), nullable=True),
- sa.Column("utility_id_eia", sa.INTEGER(), nullable=True),
- sa.Column("utility_id_pudl", sa.INTEGER(), nullable=True),
- sa.Column("utility_name_eia", sa.TEXT(), nullable=True),
- sa.Column("generator_id", sa.TEXT(), nullable=False),
- sa.Column("unit_id_pudl", sa.INTEGER(), nullable=True),
- sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
- sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
- sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name="fk_generation_fuel_by_generator_monthly_eia923_plant_id_eia_core_eia__entity_generators",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name="fk_generation_fuel_by_generator_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name="fk_generation_fuel_by_generator_monthly_eia923_utility_id_eia_core_eia__entity_utilities",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name="fk_generation_fuel_by_generator_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name="pk_generation_fuel_by_generator_monthly_eia923",
- ),
- )
- op.create_table(
- "generation_fuel_by_generator_energy_source_yearly_eia923",
- sa.Column("report_date", sa.DATE(), nullable=False),
- sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
- sa.Column("generator_id", sa.TEXT(), nullable=False),
- sa.Column("prime_mover_code", sa.TEXT(), nullable=False),
- sa.Column("energy_source_code", sa.TEXT(), nullable=False),
- sa.Column("energy_source_code_num", sa.VARCHAR(length=20), nullable=True),
- sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
- sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
- sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name="fk_generation_fuel_by_generator_energy_source_yearly_eia923_energy_source_code_core_eia__codes_energy_sources",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name="fk_generation_fuel_by_generator_energy_source_yearly_eia923_plant_id_eia_core_eia860__scd_generators",
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name="fk_generation_fuel_by_generator_energy_source_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name="pk_generation_fuel_by_generator_energy_source_yearly_eia923",
- ),
- )
- op.create_table(
- "generation_fuel_by_generator_energy_source_monthly_eia923",
- sa.Column("report_date", sa.DATE(), nullable=False),
- sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
- sa.Column("generator_id", sa.TEXT(), nullable=False),
- sa.Column("prime_mover_code", sa.TEXT(), nullable=False),
- sa.Column("energy_source_code", sa.TEXT(), nullable=False),
- sa.Column("energy_source_code_num", sa.VARCHAR(length=20), nullable=True),
- sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
- sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
- sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name="fk_generation_fuel_by_generator_energy_source_monthly_eia923_energy_source_code_core_eia__codes_energy_sources",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name="fk_generation_fuel_by_generator_energy_source_monthly_eia923_plant_id_eia_core_eia__entity_generators",
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name="fk_generation_fuel_by_generator_energy_source_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name="pk_generation_fuel_by_generator_energy_source_monthly_eia923",
- ),
- )
- op.create_table(
- "generation_fuel_by_generator_yearly_eia923",
- sa.Column("report_date", sa.DATE(), nullable=False),
- sa.Column("plant_id_eia", sa.INTEGER(), nullable=False),
- sa.Column("plant_id_pudl", sa.INTEGER(), nullable=True),
- sa.Column("plant_name_eia", sa.TEXT(), nullable=True),
- sa.Column("utility_id_eia", sa.INTEGER(), nullable=True),
- sa.Column("utility_id_pudl", sa.INTEGER(), nullable=True),
- sa.Column("utility_name_eia", sa.TEXT(), nullable=True),
- sa.Column("generator_id", sa.TEXT(), nullable=False),
- sa.Column("unit_id_pudl", sa.INTEGER(), nullable=True),
- sa.Column("fuel_consumed_for_electricity_mmbtu", sa.FLOAT(), nullable=True),
- sa.Column("fuel_consumed_mmbtu", sa.FLOAT(), nullable=True),
- sa.Column("net_generation_mwh", sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name="fk_generation_fuel_by_generator_yearly_eia923_plant_id_eia_core_eia860__scd_generators",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name="fk_generation_fuel_by_generator_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name="fk_generation_fuel_by_generator_yearly_eia923_utility_id_eia_core_eia860__scd_utilities",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name="fk_generation_fuel_by_generator_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name="pk_generation_fuel_by_generator_yearly_eia923",
- ),
- )
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator")
- op.drop_table("out_eia923__monthly_generation_fuel_by_generator_energy_source")
- op.drop_table("out_eia923__monthly_generation_fuel_by_generator")
- # ### end Alembic commands ###
diff --git a/migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py b/migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py
deleted file mode 100644
index 3b27a70679..0000000000
--- a/migrations/versions/79158fe4f428_rename_ferc714_respondent_tables.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"""Rename ferc714 respondent tables
-
-Revision ID: 79158fe4f428
-Revises: dfbc19b1cb34
-Create Date: 2023-09-20 16:27:40.621325
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '79158fe4f428'
-down_revision = 'dfbc19b1cb34'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_ferc714__fipsified_respondents',
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__fipsified_respondents_respondent_id_ferc714_core_ferc714__respondent_id'))
- )
- op.create_table('out_ferc714__summarized_demand',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
- sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
- sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
- )
- op.drop_table('fipsified_respondents_ferc714')
- op.drop_table('summarized_demand_ferc714')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('summarized_demand_ferc714',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('respondent_id_ferc714', sa.INTEGER(), nullable=False),
- sa.Column('demand_annual_mwh', sa.FLOAT(), nullable=True),
- sa.Column('population', sa.FLOAT(), nullable=True),
- sa.Column('area_km2', sa.FLOAT(), nullable=True),
- sa.Column('population_density_km2', sa.FLOAT(), nullable=True),
- sa.Column('demand_annual_per_capita_mwh', sa.FLOAT(), nullable=True),
- sa.Column('demand_density_mwh_km2', sa.FLOAT(), nullable=True),
- sa.Column('eia_code', sa.INTEGER(), nullable=True),
- sa.Column('respondent_type', sa.VARCHAR(length=19), nullable=True),
- sa.Column('respondent_name_ferc714', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name='fk_summarized_demand_ferc714_respondent_id_ferc714_core_ferc714__respondent_id'),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name='pk_summarized_demand_ferc714')
- )
- op.create_table('fipsified_respondents_ferc714',
- sa.Column('eia_code', sa.INTEGER(), nullable=True),
- sa.Column('respondent_type', sa.VARCHAR(length=19), nullable=True),
- sa.Column('respondent_id_ferc714', sa.INTEGER(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.TEXT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('state_id_fips', sa.TEXT(), nullable=True),
- sa.Column('county_id_fips', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name='fk_fipsified_respondents_ferc714_respondent_id_ferc714_core_ferc714__respondent_id')
- )
- op.drop_table('out_ferc714__summarized_demand')
- op.drop_table('out_ferc714__fipsified_respondents')
- # ### end Alembic commands ###
diff --git a/migrations/versions/83d32937c386_rename_core_and_output_assets.py b/migrations/versions/83d32937c386_rename_core_and_output_assets.py
new file mode 100644
index 0000000000..4bced541c1
--- /dev/null
+++ b/migrations/versions/83d32937c386_rename_core_and_output_assets.py
@@ -0,0 +1,3803 @@
+"""Rename core and output assets
+
+Revision ID: 83d32937c386
+Revises:
+Create Date: 2023-09-28 10:54:16.911376
+
+"""
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy.dialects import sqlite
+
+# revision identifiers, used by Alembic.
+revision = '83d32937c386'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('core_eia861__assn_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_balancing_authority'))
+ )
+ op.create_table('core_eia861__assn_utility',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_utility'))
+ )
+ op.create_table('core_eia861__yearly_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_core_eia861__yearly_balancing_authority'))
+ )
+ op.create_table('core_eia__codes_averaging_periods',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_averaging_periods'))
+ )
+ op.create_table('core_eia__codes_balancing_authorities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_balancing_authorities'))
+ )
+ op.create_table('core_eia__codes_boiler_generator_assn_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_generator_assn_types'))
+ )
+ op.create_table('core_eia__codes_boiler_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_status'))
+ )
+ op.create_table('core_eia__codes_boiler_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_types'))
+ )
+ op.create_table('core_eia__codes_coalmine_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_coalmine_types'))
+ )
+ op.create_table('core_eia__codes_contract_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_contract_types'))
+ )
+ op.create_table('core_eia__codes_emission_control_equipment_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_emission_control_equipment_types'))
+ )
+ op.create_table('core_eia__codes_energy_sources',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('fuel_units', sa.Enum('barrels', 'mcf', 'mwh', 'short_tons'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('min_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Minimum heat content per physical unit of fuel in MMBtu.'),
+ sa.Column('max_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Maximum heat content per physical unit of fuel in MMBtu.'),
+ sa.Column('fuel_group_eia', sa.Enum('fossil', 'other', 'renewable'), nullable=True, comment='High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.'),
+ sa.Column('fuel_derived_from', sa.Enum('biomass', 'coal', 'gas', 'other', 'petroleum'), nullable=True, comment='Original fuel from which this refined fuel was derived.'),
+ sa.Column('fuel_phase', sa.Enum('gas', 'liquid', 'solid'), nullable=True, comment='Physical phase of matter of the fuel.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_energy_sources'))
+ )
+ op.create_table('core_eia__codes_environmental_equipment_manufacturers',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_environmental_equipment_manufacturers'))
+ )
+ op.create_table('core_eia__codes_firing_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_firing_types'))
+ )
+ op.create_table('core_eia__codes_fuel_transportation_modes',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia__codes_fuel_types_aer',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_types_aer'))
+ )
+ op.create_table('core_eia__codes_mercury_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_mercury_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_momentary_interruptions',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia__codes_nox_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_nox_control_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_control_status'))
+ )
+ op.create_table('core_eia__codes_nox_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_units'))
+ )
+ op.create_table('core_eia__codes_operational_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_operational_status'))
+ )
+ op.create_table('core_eia__codes_particulate_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_particulate_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_units'))
+ )
+ op.create_table('core_eia__codes_prime_movers',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_prime_movers'))
+ )
+ op.create_table('core_eia__codes_regulations',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_regulations'))
+ )
+ op.create_table('core_eia__codes_reporting_frequencies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_reporting_frequencies'))
+ )
+ op.create_table('core_eia__codes_sector_consolidated',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_sector_consolidated'))
+ )
+ op.create_table('core_eia__codes_so2_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_so2_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_units'))
+ )
+ op.create_table('core_eia__codes_steam_plant_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_steam_plant_types'))
+ )
+ op.create_table('core_eia__codes_wet_dry_bottom',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
+ )
+ op.create_table('core_eia__entity_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_eia__entity_plants'))
+ )
+ op.create_table('core_eia__entity_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
+ )
+ op.create_table('core_eia__yearly_fuel_receipts_costs_aggs',
+ sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
+ sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
+ sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
+ sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_core_eia__yearly_fuel_receipts_costs_aggs'))
+ )
+ op.create_table('core_epa__assn_epacamd_eia_subplant_ids',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
+ )
+ op.create_table('core_ferc1__codes_power_purchase_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
+ )
+ op.create_table('core_ferc714__respondent_id',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
+ )
+ op.create_table('core_ferc__codes_accounts',
+ sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
+ sa.Column('ferc_account_description', sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc__codes_accounts'))
+ )
+ op.create_table('core_pudl__codes_data_maturities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_pudl__codes_datasources',
+ sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'core_epa__assn_epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
+ sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
+ sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
+ sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
+ sa.PrimaryKeyConstraint('datasource', name=op.f('pk_core_pudl__codes_datasources'))
+ )
+ op.create_table('core_pudl__codes_subdivisions',
+ sa.Column('country_code', sa.Enum('CAN', 'USA'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
+ sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
+ sa.Column('subdivision_code', sa.Enum('VT', 'VI', 'NV', 'QC', 'AK', 'MB', 'ON', 'NE', 'MS', 'NC', 'MP', 'DE', 'OH', 'SC', 'TX', 'AB', 'MO', 'FL', 'KS', 'PR', 'GA', 'MT', 'CA', 'NB', 'GU', 'NY', 'NH', 'OK', 'ME', 'PA', 'DC', 'YT', 'HI', 'IL', 'CT', 'AZ', 'MA', 'AS', 'NJ', 'WV', 'WA', 'PE', 'SD', 'UT', 'ID', 'NL', 'NM', 'MN', 'TN', 'LA', 'IA', 'AR', 'NU', 'NS', 'CO', 'IN', 'SK', 'WI', 'MD', 'AL', 'VA', 'RI', 'KY', 'MI', 'OR', 'ND', 'BC', 'WY', 'NT'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
+ sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
+ sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
+ sa.Column('division_code_us_census', sa.Enum('PCC', 'MAT', 'PCN', 'NEW', 'MTN', 'SAT', 'ENC', 'WNC', 'WSC', 'ESC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
+ sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
+ sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
+ )
+ op.create_table('core_pudl__entity_plants_pudl',
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_core_pudl__entity_plants_pudl'))
+ )
+ op.create_table('core_pudl__entity_utilities_pudl',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia861__compiled_geometry_balancing_authorities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
+ )
+ op.create_table('out_eia861__compiled_geometry_utilities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
+ )
+ op.create_table('out_ferc714__hourly_predicted_state_demand',
+ sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
+ sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
+ )
+ op.create_table('core_eia860__scd_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_core_eia860__scd_emissions_control_equipment'))
+ )
+ op.create_table('core_eia860__scd_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
+ )
+ op.create_table('core_eia861__yearly_advanced_metering_infrastructure',
+ sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
+ sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
+ sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
+ sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('home_area_network', sa.Integer(), nullable=True),
+ sa.Column('non_amr_ami', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_advanced_metering_infrastructure'))
+ )
+ op.create_table('core_eia861__yearly_demand_response',
+ sa.Column('actual_peak_demand_savings_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_cost', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('other_costs', sa.Float(), nullable=True),
+ sa.Column('potential_peak_demand_savings_mw', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response'))
+ )
+ op.create_table('core_eia861__yearly_demand_response_water_heater',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('water_heater', sa.Integer(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response_water_heater'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_ee_dr',
+ sa.Column('annual_indirect_program_cost', sa.Float(), nullable=True),
+ sa.Column('annual_total_cost', sa.Float(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('energy_efficiency_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_cost', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_incentive_payment', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_incremental_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_cost', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_incentive_payment', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_potential_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_potential_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('price_responsiveness_customers', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_misc',
+ sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
+ sa.Column('energy_savings_independently_verified', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('major_program_changes', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('price_responsive_programs', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('reported_as_another_company', sa.Text(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_responsive_programs', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_sales',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_to_ultimate_consumers_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_fuel',
+ sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
+ sa.Column('fuel_pct', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_tech',
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distribution_systems',
+ sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
+ sa.Column('distribution_circuits', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_dynamic_pricing',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_energy_efficiency',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_green_pricing',
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_mergers',
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('merge_address', sa.Text(), nullable=True),
+ sa.Column('merge_city', sa.Text(), nullable=True),
+ sa.Column('merge_company', sa.Text(), nullable=True),
+ sa.Column('merge_date', sa.Date(), nullable=True),
+ sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
+ sa.Column('new_parent', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_misc',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_misc',
+ sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
+ sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
+ sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
+ sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
+ sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('total_sources_mwh', sa.Float(), nullable=True),
+ sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
+ sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
+ sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_revenue',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('revenue', sa.Float(), nullable=True),
+ sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_reliability',
+ sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
+ sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
+ sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
+ sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia861__yearly_sales',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_core_eia861__yearly_sales'))
+ )
+ op.create_table('core_eia861__yearly_service_territory',
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_core_eia861__yearly_service_territory'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_misc',
+ sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
+ sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
+ sa.Column('bundled_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('generation_activity', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_nerc',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_rto',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia923__entity_coalmine',
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel_nuclear',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
+ )
+ op.create_table('core_eia__entity_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
+ )
+ op.create_table('core_eia__entity_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc714__hourly_demand_pa',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_core_ferc714__hourly_demand_pa'))
+ )
+ op.create_table('core_pudl__assn_plants_eia',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_pudl__assn_plants_eia'))
+ )
+ op.create_table('core_pudl__assn_utilities_eia',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_pudl__assn_utilities_eia'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_pudl__assn_utilities_plants',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_core_pudl__assn_utilities_plants'))
+ )
+ op.create_table('heat_rate_by_unit_monthly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_heat_rate_by_unit_monthly_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk_heat_rate_by_unit_monthly'))
+ )
+ op.create_table('out_eia860__yearly_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
+ )
+ op.create_table('out_eia923__fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
+ sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
+ )
+ op.create_table('out_eia923__monthly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
+ )
+ op.create_table('out_ferc714__respondents_with_fips',
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
+ )
+ op.create_table('out_ferc714__summarized_demand',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
+ sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
+ sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
+ )
+ op.create_table('capacity_factor_by_generator_monthly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_capacity_factor_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_capacity_factor_by_generator_monthly'))
+ )
+ op.create_table('core_eia860__scd_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_plants'))
+ )
+ op.create_table('core_eia923__monthly_boiler_fuel',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_core_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('core_eia923__monthly_fuel_receipts_costs',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_id_pudl'], ['core_eia923__entity_coalmine.mine_id_pudl'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia923__monthly_generation',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
+ )
+ op.create_table('core_epa__assn_epacamd_eia',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_assets',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_liabilities',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities'))
+ )
+ op.create_table('core_ferc1__yearly_cash_flow',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flow'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_amortization_summary',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_amortization_summary'))
+ )
+ op.create_table('core_ferc1__yearly_electric_energy_dispositions',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_electric_energy_dispositions'))
+ )
+ op.create_table('core_ferc1__yearly_electric_energy_sources',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_electric_energy_sources'))
+ )
+ op.create_table('core_ferc1__yearly_electric_operating_expenses',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_electric_operating_expenses'))
+ )
+ op.create_table('core_ferc1__yearly_electric_operating_revenues',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_electric_operating_revenues'))
+ )
+ op.create_table('core_ferc1__yearly_electric_plant_depreciation_changes',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_changes'))
+ )
+ op.create_table('core_ferc1__yearly_electric_plant_depreciation_functional',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_functional'))
+ )
+ op.create_table('core_ferc1__yearly_electricity_sales_by_rate_schedule',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_income_statement',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statement'))
+ )
+ op.create_table('core_ferc1__yearly_other_regulatory_liabilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plant_in_service',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service'))
+ )
+ op.create_table('core_ferc1__yearly_purchased_power',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
+ sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
+ sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_retained_earnings',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings'))
+ )
+ op.create_table('core_ferc1__yearly_transmission_statistics',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_utility_plant_summary',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary'))
+ )
+ op.create_table('core_pudl__assn_plants_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1_dbf',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_core_pudl__assn_utilities_ferc1_dbf'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1_xbrl',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_core_pudl__assn_utilities_ferc1_xbrl'))
+ )
+ op.create_table('fuel_cost_by_generator_monthly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_monthly'))
+ )
+ op.create_table('heat_rate_by_generator_monthly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_heat_rate_by_generator_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_heat_rate_by_generator_monthly_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_heat_rate_by_generator_monthly'))
+ )
+ op.create_table('mcoe_generators_monthly',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_mcoe_generators_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_monthly_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_mcoe_generators_monthly_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_monthly'))
+ )
+ op.create_table('mcoe_monthly',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_mcoe_monthly_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_monthly'))
+ )
+ op.create_table('out_eia923__boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
+ )
+ op.create_table('out_eia923__generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
+ )
+ op.create_table('out_eia923__monthly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__monthly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia__yearly_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_assets',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_liabilities',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities'))
+ )
+ op.create_table('out_ferc1__yearly_cash_flow',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flow'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_amortization_summary',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_amortization_summary'))
+ )
+ op.create_table('out_ferc1__yearly_electric_energy_dispositions',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_electric_energy_dispositions'))
+ )
+ op.create_table('out_ferc1__yearly_electric_energy_sources',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_electric_energy_sources'))
+ )
+ op.create_table('out_ferc1__yearly_electric_operating_expenses',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_electric_operating_expenses'))
+ )
+ op.create_table('out_ferc1__yearly_electric_operating_revenues',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_electric_operating_revenues'))
+ )
+ op.create_table('out_ferc1__yearly_electric_plant_depreciation_changes',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_changes'))
+ )
+ op.create_table('out_ferc1__yearly_electric_plant_depreciation_functional',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_functional'))
+ )
+ op.create_table('out_ferc1__yearly_electricity_sales_by_rate_schedule',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_income_statement',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statement'))
+ )
+ op.create_table('out_ferc1__yearly_other_regulatory_liabilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_plant_in_service',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service'))
+ )
+ op.create_table('out_ferc1__yearly_purchased_power',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
+ sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
+ sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_retained_earnings',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings'))
+ )
+ op.create_table('out_ferc1__yearly_transmission_statistics',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_utility_plant_summary',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary'))
+ )
+ op.create_table('_out_eia__plants_utilities',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
+ )
+ op.create_table('_out_ferc1__yearly_hydro_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydro_plants'))
+ )
+ op.create_table('_out_ferc1__yearly_plants_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
+ )
+ op.create_table('_out_ferc1__yearly_pumped_storage_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants'))
+ )
+ op.create_table('_out_ferc1__yearly_small_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants'))
+ )
+ op.create_table('_out_ferc1__yearly_steam_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants'))
+ )
+ op.create_table('core_eia860__scd_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_core_eia860__scd_boilers'))
+ )
+ op.create_table('core_eia860__scd_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia860__scd_generators'))
+ )
+ op.create_table('core_ferc1__yearly_fuel',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_hydro',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('plant_type', sa.Enum('hydro', 'run_of_river', 'run_of_river_with_storage', 'storage', 'na_category'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_hydro_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_pumped_storage',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_small',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_small_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plants_steam',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Enum('wind', 'solar_thermal', 'combined_cycle', 'geothermal', 'na_category', 'steam', 'combustion_turbine', 'internal_combustion', 'photovoltaic', 'nuclear'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('heat_rate_by_unit_yearly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_heat_rate_by_unit_yearly_plant_id_eia_core_eia860__scd_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk_heat_rate_by_unit_yearly'))
+ )
+ op.create_table('out_eia923__yearly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
+ )
+ op.create_table('out_eia__yearly_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
+ )
+ op.create_table('out_ferc1__yearly_all_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
+ )
+ op.create_table('out_ferc1__yearly_fuel',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_fuel'))
+ )
+ op.create_table('out_ferc1__yearly_fuel_by_plant',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
+ sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
+ sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
+ sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
+ sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
+ sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
+ sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
+ sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
+ sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
+ sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
+ sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_fuel_by_plant'))
+ )
+ op.create_table('capacity_factor_by_generator_yearly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_capacity_factor_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_capacity_factor_by_generator_yearly'))
+ )
+ op.create_table('core_eia860__assn_boiler_cooling',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_core_eia860__assn_boiler_cooling'))
+ )
+ op.create_table('core_eia860__assn_boiler_generator',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_eia', sa.Text(), nullable=True, comment='EIA-assigned unit identification code.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('boiler_generator_assn_type_code', sa.Text(), nullable=True, comment='Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.'),
+ sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_core_eia860__assn_boiler_generator'))
+ )
+ op.create_table('core_eia860__assn_boiler_stack_flue',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('stack_id_eia', sa.Text(), nullable=True, comment='The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.'),
+ sa.Column('flue_id_eia', sa.Text(), nullable=True, comment='The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.'),
+ sa.Column('stack_flue_id_eia', sa.Text(), nullable=True, comment='The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.'),
+ sa.Column('stack_flue_id_pudl', sa.Text(), nullable=False, comment='A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_core_eia860__assn_boiler_stack_flue'))
+ )
+ op.create_table('core_eia860__scd_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('country', sa.Text(), nullable=True, comment='Three letter country abbreviation.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
+ )
+ op.create_table('core_eia860__yearly_boiler_emissions_control_equipment_assn',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
+ sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__yearly_boiler_emissions_control_equipment_assn'))
+ )
+ op.create_table('fuel_cost_by_generator_yearly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_fuel_cost_by_generator_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_fuel_cost_by_generator_yearly'))
+ )
+ op.create_table('heat_rate_by_generator_yearly',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_heat_rate_by_generator_yearly_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_heat_rate_by_generator_yearly_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_heat_rate_by_generator_yearly'))
+ )
+ op.create_table('mcoe_generators_yearly',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mcoe_generators_yearly_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mcoe_generators_yearly_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mcoe_generators_yearly_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mcoe_generators_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_generators_yearly'))
+ )
+ op.create_table('mcoe_yearly',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mcoe_yearly_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_mcoe_yearly'))
+ )
+ op.create_table('mega_generators_eia',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia860__yearly_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('country', sa.Text(), nullable=True, comment='Three letter country abbreviation.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
+ )
+ op.create_table('out_eia923__yearly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__yearly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
+ )
+ op.create_table('out_eia__yearly_boilers',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
+ )
+ op.create_table('out_eia__yearly_generators',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia__yearly_generators'))
+ )
+ op.create_table('plant_parts_eia',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_gen', 'plant_unit', 'plant', 'plant_technology', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_prime_fuel', 'plant_operating_year', 'plant_prime_mover'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Enum('NG', 'MWH', 'SC', 'NUC', 'AB', 'GEO', 'OBS', 'RFO', 'BLQ', 'BIT', 'SG', 'WDL', 'OBL', 'PUR', 'KER', 'MSW', 'BFG', 'WH', 'WND', 'OG', 'PC', 'RC', 'LIG', 'SLW', 'SUB', 'WAT', 'WO', 'LFG', 'MSB', 'OBG', 'SGC', 'MSN', 'SUN', 'WC', 'DFO', 'TDF', 'ANT', 'PG', 'OTH', 'SGP', 'WDS', 'JF'), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Enum('Solar Thermal with Energy Storage', 'Solar Thermal without Energy Storage', 'Landfill Gas', 'Natural Gas Fired Combined Cycle', 'Solar Photovoltaic', 'Natural Gas with Compressed Air Storage', 'Other Natural Gas', 'Onshore Wind Turbine', 'Offshore Wind Turbine', 'Petroleum Coke', 'Natural Gas Steam Turbine', 'All Other', 'Other Gases', 'Nuclear', 'Hydroelectric Pumped Storage', 'Municipal Solid Waste', 'Conventional Hydroelectric', 'Conventional Steam Coal', 'Natural Gas Internal Combustion Engine', 'Geothermal', 'Batteries', 'Coal Integrated Gasification Combined Cycle', 'Wood/Wood Waste Biomass', 'Petroleum Liquids', 'Hydrokinetic', 'Flywheels', 'Natural Gas Fired Combustion Turbine', 'Other Waste Biomass'), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_gen', 'plant_unit', 'plant', 'plant_technology', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_prime_fuel', 'plant_operating_year', 'plant_prime_mover'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_plant_parts_eia'))
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('plant_parts_eia')
+ op.drop_table('out_eia__yearly_generators')
+ op.drop_table('out_eia__yearly_boilers')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__yearly_generation')
+ op.drop_table('out_eia923__yearly_boiler_fuel')
+ op.drop_table('out_eia860__yearly_ownership')
+ op.drop_table('mega_generators_eia')
+ op.drop_table('mcoe_yearly')
+ op.drop_table('mcoe_generators_yearly')
+ op.drop_table('heat_rate_by_generator_yearly')
+ op.drop_table('fuel_cost_by_generator_yearly')
+ op.drop_table('core_eia860__yearly_boiler_emissions_control_equipment_assn')
+ op.drop_table('core_eia860__scd_ownership')
+ op.drop_table('core_eia860__assn_boiler_stack_flue')
+ op.drop_table('core_eia860__assn_boiler_generator')
+ op.drop_table('core_eia860__assn_boiler_cooling')
+ op.drop_table('capacity_factor_by_generator_yearly')
+ op.drop_table('out_ferc1__yearly_fuel_by_plant')
+ op.drop_table('out_ferc1__yearly_fuel')
+ op.drop_table('out_ferc1__yearly_all_plants')
+ op.drop_table('out_eia__yearly_plants')
+ op.drop_table('out_eia923__yearly_generation_fuel_combined')
+ op.drop_table('out_eia923__yearly_fuel_receipts_costs')
+ op.drop_table('heat_rate_by_unit_yearly')
+ op.drop_table('core_ferc1__yearly_plants_steam')
+ op.drop_table('core_ferc1__yearly_plants_small')
+ op.drop_table('core_ferc1__yearly_plants_pumped_storage')
+ op.drop_table('core_ferc1__yearly_plants_hydro')
+ op.drop_table('core_ferc1__yearly_fuel')
+ op.drop_table('core_eia860__scd_generators')
+ op.drop_table('core_eia860__scd_boilers')
+ op.drop_table('_out_ferc1__yearly_steam_plants')
+ op.drop_table('_out_ferc1__yearly_small_plants')
+ op.drop_table('_out_ferc1__yearly_pumped_storage_plants')
+ op.drop_table('_out_ferc1__yearly_plants_utilities')
+ op.drop_table('_out_ferc1__yearly_hydro_plants')
+ op.drop_table('_out_eia__plants_utilities')
+ op.drop_table('out_ferc1__yearly_utility_plant_summary')
+ op.drop_table('out_ferc1__yearly_transmission_statistics')
+ op.drop_table('out_ferc1__yearly_retained_earnings')
+ op.drop_table('out_ferc1__yearly_purchased_power')
+ op.drop_table('out_ferc1__yearly_plant_in_service')
+ op.drop_table('out_ferc1__yearly_other_regulatory_liabilities')
+ op.drop_table('out_ferc1__yearly_income_statement')
+ op.drop_table('out_ferc1__yearly_electricity_sales_by_rate_schedule')
+ op.drop_table('out_ferc1__yearly_electric_plant_depreciation_functional')
+ op.drop_table('out_ferc1__yearly_electric_plant_depreciation_changes')
+ op.drop_table('out_ferc1__yearly_electric_operating_revenues')
+ op.drop_table('out_ferc1__yearly_electric_operating_expenses')
+ op.drop_table('out_ferc1__yearly_electric_energy_sources')
+ op.drop_table('out_ferc1__yearly_electric_energy_dispositions')
+ op.drop_table('out_ferc1__yearly_depreciation_amortization_summary')
+ op.drop_table('out_ferc1__yearly_cash_flow')
+ op.drop_table('out_ferc1__yearly_balance_sheet_liabilities')
+ op.drop_table('out_ferc1__yearly_balance_sheet_assets')
+ op.drop_table('out_eia__yearly_utilities')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__monthly_generation')
+ op.drop_table('out_eia923__monthly_boiler_fuel')
+ op.drop_table('out_eia923__generation')
+ op.drop_table('out_eia923__boiler_fuel')
+ op.drop_table('mcoe_monthly')
+ op.drop_table('mcoe_generators_monthly')
+ op.drop_table('heat_rate_by_generator_monthly')
+ op.drop_table('fuel_cost_by_generator_monthly')
+ op.drop_table('core_pudl__assn_utilities_ferc1_xbrl')
+ op.drop_table('core_pudl__assn_utilities_ferc1_dbf')
+ op.drop_table('core_pudl__assn_plants_ferc1')
+ op.drop_table('core_ferc1__yearly_utility_plant_summary')
+ op.drop_table('core_ferc1__yearly_transmission_statistics')
+ op.drop_table('core_ferc1__yearly_retained_earnings')
+ op.drop_table('core_ferc1__yearly_purchased_power')
+ op.drop_table('core_ferc1__yearly_plant_in_service')
+ op.drop_table('core_ferc1__yearly_other_regulatory_liabilities')
+ op.drop_table('core_ferc1__yearly_income_statement')
+ op.drop_table('core_ferc1__yearly_electricity_sales_by_rate_schedule')
+ op.drop_table('core_ferc1__yearly_electric_plant_depreciation_functional')
+ op.drop_table('core_ferc1__yearly_electric_plant_depreciation_changes')
+ op.drop_table('core_ferc1__yearly_electric_operating_revenues')
+ op.drop_table('core_ferc1__yearly_electric_operating_expenses')
+ op.drop_table('core_ferc1__yearly_electric_energy_sources')
+ op.drop_table('core_ferc1__yearly_electric_energy_dispositions')
+ op.drop_table('core_ferc1__yearly_depreciation_amortization_summary')
+ op.drop_table('core_ferc1__yearly_cash_flow')
+ op.drop_table('core_ferc1__yearly_balance_sheet_liabilities')
+ op.drop_table('core_ferc1__yearly_balance_sheet_assets')
+ op.drop_table('core_epa__assn_epacamd_eia')
+ op.drop_table('core_eia923__monthly_generation')
+ op.drop_table('core_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('core_eia923__monthly_boiler_fuel')
+ op.drop_table('core_eia860__scd_plants')
+ op.drop_table('capacity_factor_by_generator_monthly')
+ op.drop_table('out_ferc714__summarized_demand')
+ op.drop_table('out_ferc714__respondents_with_fips')
+ op.drop_table('out_eia923__monthly_generation_fuel_combined')
+ op.drop_table('out_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('out_eia923__generation_fuel_combined')
+ op.drop_table('out_eia923__fuel_receipts_costs')
+ op.drop_table('out_eia860__yearly_emissions_control_equipment')
+ op.drop_table('heat_rate_by_unit_monthly')
+ op.drop_table('core_pudl__assn_utilities_plants')
+ op.drop_table('core_pudl__assn_utilities_ferc1')
+ op.drop_table('core_pudl__assn_utilities_eia')
+ op.drop_table('core_pudl__assn_plants_eia')
+ op.drop_table('core_ferc714__hourly_demand_pa')
+ op.drop_table('core_eia__entity_generators')
+ op.drop_table('core_eia__entity_boilers')
+ op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
+ op.drop_table('core_eia923__monthly_generation_fuel')
+ op.drop_table('core_eia923__entity_coalmine')
+ op.drop_table('core_eia861__yearly_utility_data_rto')
+ op.drop_table('core_eia861__yearly_utility_data_nerc')
+ op.drop_table('core_eia861__yearly_utility_data_misc')
+ op.drop_table('core_eia861__yearly_service_territory')
+ op.drop_table('core_eia861__yearly_sales')
+ op.drop_table('core_eia861__yearly_reliability')
+ op.drop_table('core_eia861__yearly_operational_data_revenue')
+ op.drop_table('core_eia861__yearly_operational_data_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_net_metering_misc')
+ op.drop_table('core_eia861__yearly_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_mergers')
+ op.drop_table('core_eia861__yearly_green_pricing')
+ op.drop_table('core_eia861__yearly_energy_efficiency')
+ op.drop_table('core_eia861__yearly_dynamic_pricing')
+ op.drop_table('core_eia861__yearly_distribution_systems')
+ op.drop_table('core_eia861__yearly_distributed_generation_tech')
+ op.drop_table('core_eia861__yearly_distributed_generation_misc')
+ op.drop_table('core_eia861__yearly_distributed_generation_fuel')
+ op.drop_table('core_eia861__yearly_demand_side_management_sales')
+ op.drop_table('core_eia861__yearly_demand_side_management_misc')
+ op.drop_table('core_eia861__yearly_demand_side_management_ee_dr')
+ op.drop_table('core_eia861__yearly_demand_response_water_heater')
+ op.drop_table('core_eia861__yearly_demand_response')
+ op.drop_table('core_eia861__yearly_advanced_metering_infrastructure')
+ op.drop_table('core_eia860__scd_utilities')
+ op.drop_table('core_eia860__scd_emissions_control_equipment')
+ op.drop_table('out_ferc714__hourly_predicted_state_demand')
+ op.drop_table('out_eia861__compiled_geometry_utilities')
+ op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
+ op.drop_table('core_pudl__entity_utilities_pudl')
+ op.drop_table('core_pudl__entity_plants_pudl')
+ op.drop_table('core_pudl__codes_subdivisions')
+ op.drop_table('core_pudl__codes_datasources')
+ op.drop_table('core_pudl__codes_data_maturities')
+ op.drop_table('core_ferc__codes_accounts')
+ op.drop_table('core_ferc714__respondent_id')
+ op.drop_table('core_ferc1__codes_power_purchase_types')
+ op.drop_table('core_epa__assn_epacamd_eia_subplant_ids')
+ op.drop_table('core_eia__yearly_fuel_receipts_costs_aggs')
+ op.drop_table('core_eia__entity_utilities')
+ op.drop_table('core_eia__entity_plants')
+ op.drop_table('core_eia__codes_wet_dry_bottom')
+ op.drop_table('core_eia__codes_steam_plant_types')
+ op.drop_table('core_eia__codes_so2_units')
+ op.drop_table('core_eia__codes_so2_compliance_strategies')
+ op.drop_table('core_eia__codes_sector_consolidated')
+ op.drop_table('core_eia__codes_reporting_frequencies')
+ op.drop_table('core_eia__codes_regulations')
+ op.drop_table('core_eia__codes_prime_movers')
+ op.drop_table('core_eia__codes_particulate_units')
+ op.drop_table('core_eia__codes_particulate_compliance_strategies')
+ op.drop_table('core_eia__codes_operational_status')
+ op.drop_table('core_eia__codes_nox_units')
+ op.drop_table('core_eia__codes_nox_control_status')
+ op.drop_table('core_eia__codes_nox_compliance_strategies')
+ op.drop_table('core_eia__codes_momentary_interruptions')
+ op.drop_table('core_eia__codes_mercury_compliance_strategies')
+ op.drop_table('core_eia__codes_fuel_types_aer')
+ op.drop_table('core_eia__codes_fuel_transportation_modes')
+ op.drop_table('core_eia__codes_firing_types')
+ op.drop_table('core_eia__codes_environmental_equipment_manufacturers')
+ op.drop_table('core_eia__codes_energy_sources')
+ op.drop_table('core_eia__codes_emission_control_equipment_types')
+ op.drop_table('core_eia__codes_contract_types')
+ op.drop_table('core_eia__codes_coalmine_types')
+ op.drop_table('core_eia__codes_boiler_types')
+ op.drop_table('core_eia__codes_boiler_status')
+ op.drop_table('core_eia__codes_boiler_generator_assn_types')
+ op.drop_table('core_eia__codes_balancing_authorities')
+ op.drop_table('core_eia__codes_averaging_periods')
+ op.drop_table('core_eia861__yearly_balancing_authority')
+ op.drop_table('core_eia861__assn_utility')
+ op.drop_table('core_eia861__assn_balancing_authority')
+ # ### end Alembic commands ###
diff --git a/migrations/versions/84088c179e1d_fix_balance_authority_fk.py b/migrations/versions/84088c179e1d_fix_balance_authority_fk.py
deleted file mode 100644
index c8216148ae..0000000000
--- a/migrations/versions/84088c179e1d_fix_balance_authority_fk.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""Fix balance authority fk
-
-Revision ID: 84088c179e1d
-Revises: 232c79b90224
-Create Date: 2023-09-21 10:23:51.094487
-
-"""
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '84088c179e1d'
-down_revision = '232c79b90224'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
- batch_op.drop_constraint('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities', type_='foreignkey')
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('core_eia861__assn_balancing_authority', schema=None) as batch_op:
- batch_op.create_foreign_key('fk_core_eia861__assn_balancing_authority_utility_id_eia_core_eia__entity_utilities', 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/b3eb1a80721c_rename_eia_output_assets.py b/migrations/versions/b3eb1a80721c_rename_eia_output_assets.py
deleted file mode 100644
index 748fb94115..0000000000
--- a/migrations/versions/b3eb1a80721c_rename_eia_output_assets.py
+++ /dev/null
@@ -1,1607 +0,0 @@
-"""Rename EIA output assets
-
-Revision ID: b3eb1a80721c
-Revises: 1c2c961a7be5
-Create Date: 2023-09-18 17:00:45.296107
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = 'b3eb1a80721c'
-down_revision = '1c2c961a7be5'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_eia860__yearly_emissions_control_equipment',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
- )
- op.create_table('out_eia923__fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
- sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
- sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
- sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
- sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
- sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
- sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
- sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
- )
- op.create_table('out_eia923__monthly_fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
- )
- op.create_table('out_eia923__boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
- )
- op.create_table('out_eia923__generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
- )
- op.create_table('out_eia923__monthly_boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
- )
- op.create_table('out_eia923__monthly_generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
- )
- op.create_table('out_eia__yearly_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
- )
- op.create_table('_out_eia__plants_utilities',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
- )
- op.create_table('out_eia923__yearly_fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
- )
- op.create_table('out_eia__yearly_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
- sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
- sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
- sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
- sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
- sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
- sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
- sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
- sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
- sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
- sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
- sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
- sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
- sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
- sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
- sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
- sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
- )
- op.create_table('out_eia860__yearly_ownership',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment="EIA-assigned owner's identification number."),
- sa.Column('owner_name', sa.Text(), nullable=True, comment='Name of owner.'),
- sa.Column('owner_state', sa.Enum('MB', 'NB', 'MD', 'OH', 'NH', 'AB', 'NS', 'OR', 'AL', 'MI', 'FL', 'SD', 'WY', 'YT', 'NJ', 'VA', 'IN', 'WV', 'VT', 'AK', 'MN', 'CT', 'AZ', 'ND', 'TN', 'SK', 'PR', 'OK', 'NV', 'TX', 'IA', 'NM', 'AS', 'NL', 'CA', 'KS', 'GU', 'KY', 'DE', 'CO', 'MO', 'BC', 'IL', 'MP', 'MS', 'PE', 'NY', 'RI', 'WI', 'ON', 'LA', 'HI', 'ME', 'DC', 'NE', 'NC', 'PA', 'GA', 'VI', 'MT', 'QC', 'WA', 'MA', 'AR', 'SC', 'NU', 'NT', 'ID', 'UT'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
- sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
- sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
- sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
- )
- op.create_table('out_eia923__yearly_boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
- )
- op.create_table('out_eia923__yearly_generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
- )
- op.create_table('out_eia__yearly_boilers',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
- sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
- sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
- sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
- sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
- sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
- sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
- sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
- sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
- sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
- sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
- sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
- sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
- sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
- sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
- sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
- sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
- sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
- sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
- sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
- sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
- sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
- sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
- sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
- sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
- )
- op.create_table('out_eia__yearly_generators',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia__yearly_generators'))
- )
- op.drop_table('denorm_boiler_fuel_yearly_eia923')
- op.drop_table('denorm_generation_fuel_combined_monthly_eia923')
- op.drop_table('denorm_plants_eia')
- op.drop_table('denorm_boiler_fuel_eia923')
- op.drop_table('denorm_ownership_eia860')
- op.drop_table('denorm_fuel_receipts_costs_monthly_eia923')
- op.drop_table('denorm_boiler_fuel_monthly_eia923')
- op.drop_table('denorm_generation_yearly_eia923')
- op.drop_table('denorm_generators_eia')
- op.drop_table('denorm_generation_monthly_eia923')
- op.drop_table('denorm_generation_eia923')
- op.drop_table('denorm_utilities_eia')
- op.drop_table('denorm_fuel_receipts_costs_eia923')
- op.drop_table('denorm_emissions_control_equipment_eia860')
- op.drop_table('denorm_boilers_eia')
- op.drop_table('denorm_generation_fuel_combined_eia923')
- op.drop_table('denorm_fuel_receipts_costs_yearly_eia923')
- op.drop_table('denorm_generation_fuel_combined_yearly_eia923')
- op.drop_table('denorm_plants_utilities_eia')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('denorm_plants_utilities_eia',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_utilities_eia_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_utilities_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name='pk_denorm_plants_utilities_eia')
- )
- op.create_table('denorm_generation_fuel_combined_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_yearly_eia923')
- )
- op.create_table('denorm_fuel_receipts_costs_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_generation_fuel_combined_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_type_code_aer', sa.TEXT(), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generation_fuel_combined_eia923_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name='fk_denorm_generation_fuel_combined_eia923_fuel_type_code_aer_core_eia__codes_fuel_types_aer'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_eia923')
- )
- op.create_table('denorm_boilers_eia',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('boiler_id', sa.TEXT(), nullable=False),
- sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.FLOAT(), nullable=True),
- sa.Column('boiler_fuel_code_1', sa.TEXT(), nullable=True),
- sa.Column('boiler_fuel_code_2', sa.TEXT(), nullable=True),
- sa.Column('boiler_fuel_code_3', sa.TEXT(), nullable=True),
- sa.Column('boiler_fuel_code_4', sa.TEXT(), nullable=True),
- sa.Column('boiler_manufacturer', sa.TEXT(), nullable=True),
- sa.Column('boiler_manufacturer_code', sa.TEXT(), nullable=True),
- sa.Column('boiler_operating_date', sa.DATE(), nullable=True),
- sa.Column('boiler_retirement_date', sa.DATE(), nullable=True),
- sa.Column('boiler_status', sa.TEXT(), nullable=True),
- sa.Column('boiler_type', sa.TEXT(), nullable=True),
- sa.Column('city', sa.TEXT(), nullable=True),
- sa.Column('compliance_year_mercury', sa.INTEGER(), nullable=True),
- sa.Column('compliance_year_nox', sa.INTEGER(), nullable=True),
- sa.Column('compliance_year_particulate', sa.INTEGER(), nullable=True),
- sa.Column('compliance_year_so2', sa.INTEGER(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('efficiency_100pct_load', sa.FLOAT(), nullable=True),
- sa.Column('efficiency_50pct_load', sa.FLOAT(), nullable=True),
- sa.Column('firing_rate_using_coal_tons_per_hour', sa.FLOAT(), nullable=True),
- sa.Column('firing_rate_using_gas_mcf_per_hour', sa.FLOAT(), nullable=True),
- sa.Column('firing_rate_using_oil_bbls_per_hour', sa.FLOAT(), nullable=True),
- sa.Column('firing_rate_using_other_fuels', sa.FLOAT(), nullable=True),
- sa.Column('firing_type_1', sa.TEXT(), nullable=True),
- sa.Column('firing_type_2', sa.TEXT(), nullable=True),
- sa.Column('firing_type_3', sa.TEXT(), nullable=True),
- sa.Column('fly_ash_reinjection', sa.BOOLEAN(), nullable=True),
- sa.Column('hrsg', sa.BOOLEAN(), nullable=True),
- sa.Column('latitude', sa.FLOAT(), nullable=True),
- sa.Column('longitude', sa.FLOAT(), nullable=True),
- sa.Column('max_steam_flow_1000_lbs_per_hour', sa.FLOAT(), nullable=True),
- sa.Column('mercury_control_existing_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_existing_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_existing_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_existing_strategy_4', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_existing_strategy_5', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_existing_strategy_6', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_proposed_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_proposed_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_proposed_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('new_source_review', sa.BOOLEAN(), nullable=True),
- sa.Column('new_source_review_date', sa.DATE(), nullable=True),
- sa.Column('new_source_review_permit', sa.TEXT(), nullable=True),
- sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('nox_control_existing_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('nox_control_existing_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('nox_control_existing_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('nox_control_manufacturer', sa.TEXT(), nullable=True),
- sa.Column('nox_control_manufacturer_code', sa.TEXT(), nullable=True),
- sa.Column('nox_control_out_of_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('nox_control_out_of_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('nox_control_out_of_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('nox_control_proposed_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('nox_control_proposed_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('nox_control_proposed_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('nox_control_status_code', sa.TEXT(), nullable=True),
- sa.Column('particulate_control_out_of_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('particulate_control_out_of_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('particulate_control_out_of_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('regulation_mercury', sa.TEXT(), nullable=True),
- sa.Column('regulation_nox', sa.TEXT(), nullable=True),
- sa.Column('regulation_particulate', sa.TEXT(), nullable=True),
- sa.Column('regulation_so2', sa.TEXT(), nullable=True),
- sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('so2_control_existing_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('so2_control_existing_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('so2_control_existing_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('so2_control_out_of_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('so2_control_out_of_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('so2_control_out_of_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('so2_control_proposed_strategy_1', sa.TEXT(), nullable=True),
- sa.Column('so2_control_proposed_strategy_2', sa.TEXT(), nullable=True),
- sa.Column('so2_control_proposed_strategy_3', sa.TEXT(), nullable=True),
- sa.Column('standard_nox_rate', sa.FLOAT(), nullable=True),
- sa.Column('standard_particulate_rate', sa.FLOAT(), nullable=True),
- sa.Column('standard_so2_percent_scrubbed', sa.FLOAT(), nullable=True),
- sa.Column('standard_so2_rate', sa.FLOAT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('street_address', sa.TEXT(), nullable=True),
- sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
- sa.Column('turndown_ratio', sa.FLOAT(), nullable=True),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('unit_nox', sa.TEXT(), nullable=True),
- sa.Column('unit_particulate', sa.TEXT(), nullable=True),
- sa.Column('unit_so2', sa.TEXT(), nullable=True),
- sa.Column('waste_heat_input_mmbtu_per_hour', sa.FLOAT(), nullable=True),
- sa.Column('wet_dry_bottom', sa.TEXT(), nullable=True),
- sa.Column('zip_code', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_2_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_3_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boilers_eia_boiler_fuel_code_4_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name='fk_denorm_boilers_eia_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers'),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name='fk_denorm_boilers_eia_boiler_status_core_eia__codes_boiler_status'),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name='fk_denorm_boilers_eia_boiler_type_core_eia__codes_boiler_types'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_boilers_eia_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name='fk_denorm_boilers_eia_firing_type_1_core_eia__codes_firing_types'),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name='fk_denorm_boilers_eia_firing_type_2_core_eia__codes_firing_types'),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name='fk_denorm_boilers_eia_firing_type_3_core_eia__codes_firing_types'),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name='fk_denorm_boilers_eia_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name='fk_denorm_boilers_eia_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers'),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name='fk_denorm_boilers_eia_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies'),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name='fk_denorm_boilers_eia_nox_control_status_code_core_eia__codes_nox_control_status'),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name='fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies'),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name='fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies'),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name='fk_denorm_boilers_eia_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name='fk_denorm_boilers_eia_plant_id_eia_core_eia860__scd_boilers'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boilers_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_mercury_core_eia__codes_regulations'),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_nox_core_eia__codes_regulations'),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_particulate_core_eia__codes_regulations'),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name='fk_denorm_boilers_eia_regulation_so2_core_eia__codes_regulations'),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name='fk_denorm_boilers_eia_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies'),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name='fk_denorm_boilers_eia_unit_nox_core_eia__codes_nox_units'),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name='fk_denorm_boilers_eia_unit_particulate_core_eia__codes_particulate_units'),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name='fk_denorm_boilers_eia_unit_so2_core_eia__codes_so2_units'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_boilers_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boilers_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name='fk_denorm_boilers_eia_wet_dry_bottom_core_eia__codes_wet_dry_bottom'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name='pk_denorm_boilers_eia')
- )
- op.create_table('denorm_emissions_control_equipment_eia860',
- sa.Column('report_year', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('emission_control_id_pudl', sa.FLOAT(), nullable=False),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('emission_control_equipment_type_code', sa.TEXT(), nullable=True),
- sa.Column('operational_status_code', sa.TEXT(), nullable=True),
- sa.Column('operational_status', sa.TEXT(), nullable=True),
- sa.Column('mercury_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('nox_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('particulate_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('so2_control_id_eia', sa.TEXT(), nullable=True),
- sa.Column('acid_gas_control', sa.BOOLEAN(), nullable=True),
- sa.Column('emission_control_equipment_cost', sa.FLOAT(), nullable=True),
- sa.Column('emission_control_operating_date', sa.DATE(), nullable=True),
- sa.Column('emission_control_retirement_date', sa.DATE(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_emissions_control_equipment_eia860_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name='fk_denorm_emissions_control_equipment_eia860_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types'),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name='fk_denorm_emissions_control_equipment_eia860_operational_status_code_core_eia__codes_operational_status'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_emissions_control_equipment_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name='pk_denorm_emissions_control_equipment_eia860')
- )
- op.create_table('denorm_fuel_receipts_costs_eia923',
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('contract_type_code', sa.VARCHAR(length=2), nullable=True),
- sa.Column('contract_expiration_date', sa.DATE(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_group_code', sa.VARCHAR(length=14), nullable=True),
- sa.Column('supplier_name', sa.TEXT(), nullable=True),
- sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('primary_transportation_mode_code', sa.TEXT(), nullable=True),
- sa.Column('secondary_transportation_mode_code', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_transport_code', sa.VARCHAR(length=13), nullable=True),
- sa.Column('natural_gas_delivery_contract_type_code', sa.VARCHAR(length=13), nullable=True),
- sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('mine_id_msha', sa.INTEGER(), nullable=True),
- sa.Column('mine_name', sa.TEXT(), nullable=True),
- sa.Column('mine_state', sa.TEXT(), nullable=True),
- sa.Column('coalmine_county_id_fips', sa.TEXT(), nullable=True),
- sa.Column('mine_type_code', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_contract_type_code_core_eia__codes_contract_types'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_fuel_receipts_costs_eia923_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_fuel_receipts_costs_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name='fk_denorm_fuel_receipts_costs_eia923_mine_type_code_core_eia__codes_coalmine_types'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_fuel_receipts_costs_eia923_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_utilities_eia',
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('street_address', sa.TEXT(), nullable=True),
- sa.Column('city', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('zip_code', sa.TEXT(), nullable=True),
- sa.Column('plants_reported_owner', sa.BOOLEAN(), nullable=True),
- sa.Column('plants_reported_operator', sa.BOOLEAN(), nullable=True),
- sa.Column('plants_reported_asset_manager', sa.BOOLEAN(), nullable=True),
- sa.Column('plants_reported_other_relationship', sa.BOOLEAN(), nullable=True),
- sa.Column('entity_type', sa.TEXT(), nullable=True),
- sa.Column('attention_line', sa.TEXT(), nullable=True),
- sa.Column('address_2', sa.TEXT(), nullable=True),
- sa.Column('zip_code_4', sa.TEXT(), nullable=True),
- sa.Column('contact_firstname', sa.TEXT(), nullable=True),
- sa.Column('contact_lastname', sa.TEXT(), nullable=True),
- sa.Column('contact_title', sa.TEXT(), nullable=True),
- sa.Column('phone_number', sa.TEXT(), nullable=True),
- sa.Column('phone_extension', sa.TEXT(), nullable=True),
- sa.Column('contact_firstname_2', sa.TEXT(), nullable=True),
- sa.Column('contact_lastname_2', sa.TEXT(), nullable=True),
- sa.Column('contact_title_2', sa.TEXT(), nullable=True),
- sa.Column('phone_number_2', sa.TEXT(), nullable=True),
- sa.Column('phone_extension_2', sa.TEXT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_utilities_eia_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_utilities_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name='pk_denorm_utilities_eia')
- )
- op.create_table('denorm_generation_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generation_eia923_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_denorm_generation_eia923_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_eia923')
- )
- op.create_table('denorm_generation_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_denorm_generation_monthly_eia923_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_monthly_eia923')
- )
- op.create_table('denorm_generators_eia',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('associated_combined_heat_power', sa.BOOLEAN(), nullable=True),
- sa.Column('bga_source', sa.TEXT(), nullable=True),
- sa.Column('bypass_heat_recovery', sa.BOOLEAN(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('carbon_capture', sa.BOOLEAN(), nullable=True),
- sa.Column('city', sa.TEXT(), nullable=True),
- sa.Column('cofire_fuels', sa.BOOLEAN(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('current_planned_generator_operating_date', sa.DATE(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('deliver_power_transgrid', sa.BOOLEAN(), nullable=True),
- sa.Column('distributed_generation', sa.BOOLEAN(), nullable=True),
- sa.Column('duct_burners', sa.BOOLEAN(), nullable=True),
- sa.Column('energy_source_1_transport_1', sa.TEXT(), nullable=True),
- sa.Column('energy_source_1_transport_2', sa.TEXT(), nullable=True),
- sa.Column('energy_source_1_transport_3', sa.TEXT(), nullable=True),
- sa.Column('energy_source_2_transport_1', sa.TEXT(), nullable=True),
- sa.Column('energy_source_2_transport_2', sa.TEXT(), nullable=True),
- sa.Column('energy_source_2_transport_3', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_2', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_3', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_4', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_5', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_6', sa.TEXT(), nullable=True),
- sa.Column('energy_storage_capacity_mwh', sa.FLOAT(), nullable=True),
- sa.Column('ferc_qualifying_facility', sa.BOOLEAN(), nullable=True),
- sa.Column('fluidized_bed_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
- sa.Column('generator_operating_date', sa.DATE(), nullable=True),
- sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
- sa.Column('latitude', sa.FLOAT(), nullable=True),
- sa.Column('longitude', sa.FLOAT(), nullable=True),
- sa.Column('minimum_load_mw', sa.FLOAT(), nullable=True),
- sa.Column('multiple_fuels', sa.BOOLEAN(), nullable=True),
- sa.Column('nameplate_power_factor', sa.FLOAT(), nullable=True),
- sa.Column('net_capacity_mwdc', sa.FLOAT(), nullable=True),
- sa.Column('operating_switch', sa.TEXT(), nullable=True),
- sa.Column('operational_status', sa.TEXT(), nullable=True),
- sa.Column('operational_status_code', sa.TEXT(), nullable=True),
- sa.Column('original_planned_generator_operating_date', sa.DATE(), nullable=True),
- sa.Column('other_combustion_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('other_modifications_date', sa.DATE(), nullable=True),
- sa.Column('other_planned_modifications', sa.BOOLEAN(), nullable=True),
- sa.Column('owned_by_non_utility', sa.BOOLEAN(), nullable=True),
- sa.Column('ownership_code', sa.TEXT(), nullable=True),
- sa.Column('planned_derate_date', sa.DATE(), nullable=True),
- sa.Column('planned_energy_source_code_1', sa.TEXT(), nullable=True),
- sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
- sa.Column('planned_modifications', sa.BOOLEAN(), nullable=True),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.FLOAT(), nullable=True),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.FLOAT(), nullable=True),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.FLOAT(), nullable=True),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.FLOAT(), nullable=True),
- sa.Column('planned_new_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('planned_new_prime_mover_code', sa.TEXT(), nullable=True),
- sa.Column('planned_repower_date', sa.DATE(), nullable=True),
- sa.Column('planned_uprate_date', sa.DATE(), nullable=True),
- sa.Column('previously_canceled', sa.BOOLEAN(), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
- sa.Column('pulverized_coal_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('reactive_power_output_mvar', sa.FLOAT(), nullable=True),
- sa.Column('rto_iso_lmp_node_id', sa.TEXT(), nullable=True),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.TEXT(), nullable=True),
- sa.Column('solid_fuel_gasification', sa.BOOLEAN(), nullable=True),
- sa.Column('startup_source_code_1', sa.TEXT(), nullable=True),
- sa.Column('startup_source_code_2', sa.TEXT(), nullable=True),
- sa.Column('startup_source_code_3', sa.TEXT(), nullable=True),
- sa.Column('startup_source_code_4', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('stoker_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('street_address', sa.TEXT(), nullable=True),
- sa.Column('subcritical_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('summer_capacity_estimate', sa.BOOLEAN(), nullable=True),
- sa.Column('summer_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('summer_estimated_capability_mw', sa.FLOAT(), nullable=True),
- sa.Column('supercritical_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('switch_oil_gas', sa.BOOLEAN(), nullable=True),
- sa.Column('syncronized_transmission_grid', sa.BOOLEAN(), nullable=True),
- sa.Column('technology_description', sa.TEXT(), nullable=True),
- sa.Column('time_cold_shutdown_full_load_code', sa.TEXT(), nullable=True),
- sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
- sa.Column('topping_bottoming_code', sa.TEXT(), nullable=True),
- sa.Column('turbines_inverters_hydrokinetics', sa.INTEGER(), nullable=True),
- sa.Column('turbines_num', sa.INTEGER(), nullable=True),
- sa.Column('ultrasupercritical_tech', sa.BOOLEAN(), nullable=True),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('uprate_derate_completed_date', sa.DATE(), nullable=True),
- sa.Column('uprate_derate_during_year', sa.BOOLEAN(), nullable=True),
- sa.Column('winter_capacity_estimate', sa.BOOLEAN(), nullable=True),
- sa.Column('winter_capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('winter_estimated_capability_mw', sa.FLOAT(), nullable=True),
- sa.Column('zip_code', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_generators_eia_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name='fk_denorm_generators_eia_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_2_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_3_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_4_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_5_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_energy_source_code_6_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name='fk_denorm_generators_eia_operational_status_code_core_eia__codes_operational_status'),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_planned_energy_source_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generators_eia_planned_new_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_generators_eia_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generators_eia_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_2_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_3_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generators_eia_startup_source_code_4_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generators_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generators_eia')
- )
- op.create_table('denorm_generation_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_generation_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_generation_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name='pk_denorm_generation_yearly_eia923')
- )
- op.create_table('denorm_boiler_fuel_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('boiler_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_eia_core_eia__entity_boilers'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_monthly_eia923')
- )
- op.create_table('denorm_fuel_receipts_costs_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_received_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('mercury_content_ppm', sa.FLOAT(), nullable=True),
- sa.Column('moisture_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_fuel_receipts_costs_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl')
- )
- op.create_table('denorm_ownership_eia860',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('owner_utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('owner_name', sa.TEXT(), nullable=True),
- sa.Column('owner_state', sa.VARCHAR(length=2), nullable=True),
- sa.Column('owner_city', sa.TEXT(), nullable=True),
- sa.Column('owner_country', sa.VARCHAR(length=3), nullable=True),
- sa.Column('owner_street_address', sa.TEXT(), nullable=True),
- sa.Column('owner_zip_code', sa.TEXT(), nullable=True),
- sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_ownership_eia860_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_denorm_ownership_eia860_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_ownership_eia860_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_ownership_eia860_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_ownership_eia860_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name='pk_denorm_ownership_eia860')
- )
- op.create_table('denorm_boiler_fuel_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('boiler_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name='fk_denorm_boiler_fuel_eia923_plant_id_eia_core_eia__entity_boilers'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_boiler_fuel_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_eia923')
- )
- op.create_table('denorm_plants_eia',
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('city', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('latitude', sa.FLOAT(), nullable=True),
- sa.Column('longitude', sa.FLOAT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('street_address', sa.TEXT(), nullable=True),
- sa.Column('zip_code', sa.TEXT(), nullable=True),
- sa.Column('timezone', sa.VARCHAR(length=32), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('ash_impoundment', sa.BOOLEAN(), nullable=True),
- sa.Column('ash_impoundment_lined', sa.BOOLEAN(), nullable=True),
- sa.Column('ash_impoundment_status', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
- sa.Column('datum', sa.TEXT(), nullable=True),
- sa.Column('energy_storage', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_cogen_docket_no', sa.TEXT(), nullable=True),
- sa.Column('ferc_cogen_status', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.TEXT(), nullable=True),
- sa.Column('ferc_exempt_wholesale_generator', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_small_power_producer_docket_no', sa.TEXT(), nullable=True),
- sa.Column('ferc_small_power_producer', sa.BOOLEAN(), nullable=True),
- sa.Column('ferc_qualifying_facility_docket_no', sa.TEXT(), nullable=True),
- sa.Column('grid_voltage_1_kv', sa.FLOAT(), nullable=True),
- sa.Column('grid_voltage_2_kv', sa.FLOAT(), nullable=True),
- sa.Column('grid_voltage_3_kv', sa.FLOAT(), nullable=True),
- sa.Column('iso_rto_code', sa.TEXT(), nullable=True),
- sa.Column('liquefied_natural_gas_storage', sa.BOOLEAN(), nullable=True),
- sa.Column('natural_gas_local_distribution_company', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_storage', sa.BOOLEAN(), nullable=True),
- sa.Column('natural_gas_pipeline_name_1', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_pipeline_name_2', sa.TEXT(), nullable=True),
- sa.Column('natural_gas_pipeline_name_3', sa.TEXT(), nullable=True),
- sa.Column('nerc_region', sa.VARCHAR(length=9), nullable=True),
- sa.Column('net_metering', sa.BOOLEAN(), nullable=True),
- sa.Column('pipeline_notes', sa.TEXT(), nullable=True),
- sa.Column('primary_purpose_id_naics', sa.INTEGER(), nullable=True),
- sa.Column('regulatory_status_code', sa.TEXT(), nullable=True),
- sa.Column('reporting_frequency_code', sa.VARCHAR(length=2), nullable=True),
- sa.Column('sector_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('sector_name_eia', sa.TEXT(), nullable=True),
- sa.Column('service_area', sa.TEXT(), nullable=True),
- sa.Column('transmission_distribution_owner_id', sa.INTEGER(), nullable=True),
- sa.Column('transmission_distribution_owner_name', sa.TEXT(), nullable=True),
- sa.Column('transmission_distribution_owner_state', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('water_source', sa.TEXT(), nullable=True),
- sa.Column('data_maturity', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('balancing_authority_code_eia_consistent_rate', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name='fk_denorm_plants_eia_balancing_authority_code_eia_core_eia__codes_balancing_authorities'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name='fk_denorm_plants_eia_data_maturity_core_pudl__codes_data_maturities'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_denorm_plants_eia_plant_id_eia_core_eia860__scd_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name='fk_denorm_plants_eia_reporting_frequency_code_core_eia__codes_reporting_frequencies'),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name='fk_denorm_plants_eia_sector_id_eia_core_eia__codes_sector_consolidated'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_plants_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_plants_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name='pk_denorm_plants_eia')
- )
- op.create_table('denorm_generation_fuel_combined_monthly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_eia_core_eia__entity_plants'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_generation_fuel_combined_monthly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_generation_fuel_combined_monthly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name='pk_denorm_generation_fuel_combined_monthly_eia923')
- )
- op.create_table('denorm_boiler_fuel_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('boiler_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_consumed_units', sa.FLOAT(), nullable=True),
- sa.Column('fuel_mmbtu_per_unit', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('sulfur_content_pct', sa.FLOAT(), nullable=True),
- sa.Column('ash_content_pct', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_denorm_boiler_fuel_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_eia_core_eia860__scd_boilers'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_denorm_boiler_fuel_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_denorm_boiler_fuel_yearly_eia923_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name='pk_denorm_boiler_fuel_yearly_eia923')
- )
- op.drop_table('out_eia__yearly_generators')
- op.drop_table('out_eia__yearly_boilers')
- op.drop_table('out_eia923__yearly_generation')
- op.drop_table('out_eia923__yearly_boiler_fuel')
- op.drop_table('out_eia860__yearly_ownership')
- op.drop_table('out_eia__yearly_plants')
- op.drop_table('out_eia923__yearly_generation_fuel_combined')
- op.drop_table('out_eia923__yearly_fuel_receipts_costs')
- op.drop_table('_out_eia__plants_utilities')
- op.drop_table('out_eia__yearly_utilities')
- op.drop_table('out_eia923__monthly_generation')
- op.drop_table('out_eia923__monthly_boiler_fuel')
- op.drop_table('out_eia923__generation')
- op.drop_table('out_eia923__boiler_fuel')
- op.drop_table('out_eia923__monthly_generation_fuel_combined')
- op.drop_table('out_eia923__monthly_fuel_receipts_costs')
- op.drop_table('out_eia923__generation_fuel_combined')
- op.drop_table('out_eia923__fuel_receipts_costs')
- op.drop_table('out_eia860__yearly_emissions_control_equipment')
- # ### end Alembic commands ###
diff --git a/migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py b/migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py
deleted file mode 100644
index a3f6d3159a..0000000000
--- a/migrations/versions/c04b7a126f9e_rename_out_ferc714__fipsified_.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"""Rename out_ferc714__fipsified_respondents
-
-Revision ID: c04b7a126f9e
-Revises: 84088c179e1d
-Create Date: 2023-09-26 13:53:27.145134
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = 'c04b7a126f9e'
-down_revision = '84088c179e1d'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_ferc714__respondents_with_fips',
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
- )
- op.drop_table('out_ferc714__fipsified_respondents')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_ferc714__fipsified_respondents',
- sa.Column('eia_code', sa.INTEGER(), nullable=True),
- sa.Column('respondent_type', sa.VARCHAR(length=19), nullable=True),
- sa.Column('respondent_id_ferc714', sa.INTEGER(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.TEXT(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('balancing_authority_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.TEXT(), nullable=True),
- sa.Column('balancing_authority_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('state', sa.TEXT(), nullable=True),
- sa.Column('county', sa.TEXT(), nullable=True),
- sa.Column('state_id_fips', sa.TEXT(), nullable=True),
- sa.Column('county_id_fips', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name='fk_out_ferc714__fipsified_respondents_respondent_id_ferc714_core_ferc714__respondent_id')
- )
- op.drop_table('out_ferc714__respondents_with_fips')
- # ### end Alembic commands ###
diff --git a/migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py b/migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py
deleted file mode 100644
index a7fad60f14..0000000000
--- a/migrations/versions/d4149ca95fa9_rename_yearly_generation_fuel_by_.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""Rename yearly_generation_fuel_by_generator_energy_source_owner
-
-Revision ID: d4149ca95fa9
-Revises: 62f1f694f6af
-Create Date: 2023-09-18 12:29:19.219934
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = 'd4149ca95fa9'
-down_revision = '62f1f694f6af'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
- )
- op.drop_table('generation_fuel_by_generator_energy_source_owner_yearly_eia923')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('generation_fuel_by_generator_energy_source_owner_yearly_eia923',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=False),
- sa.Column('energy_source_code', sa.TEXT(), nullable=False),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=False),
- sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('energy_source_code_num', sa.VARCHAR(length=20), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name='fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_energy_source_code_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_generation_fuel_by_generator_energy_source_owner_yearly_eia923_prime_mover_code_core_eia__codes_prime_movers'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name='pk_generation_fuel_by_generator_energy_source_owner_yearly_eia923')
- )
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
- # ### end Alembic commands ###
diff --git a/migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py b/migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py
deleted file mode 100644
index 544213f623..0000000000
--- a/migrations/versions/dfbc19b1cb34_update_allocate_gen_fuel_fk.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""Update allocate gen fuel fk
-
-Revision ID: dfbc19b1cb34
-Revises: d4149ca95fa9
-Create Date: 2023-09-18 15:09:36.838769
-
-"""
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = 'dfbc19b1cb34'
-down_revision = 'd4149ca95fa9'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator', schema=None) as batch_op:
- batch_op.drop_constraint('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities', type_='foreignkey')
- batch_op.drop_constraint('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators', type_='foreignkey')
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities'), 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators'), 'core_eia__entity_generators', ['plant_id_eia', 'generator_id'], ['plant_id_eia', 'generator_id'])
-
- with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator_energy_source', schema=None) as batch_op:
- batch_op.drop_constraint('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators', type_='foreignkey')
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators'), 'core_eia__entity_generators', ['plant_id_eia', 'generator_id'], ['plant_id_eia', 'generator_id'])
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator_energy_source', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators'), type_='foreignkey')
- batch_op.create_foreign_key('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators', 'core_eia860__scd_generators', ['plant_id_eia', 'generator_id', 'report_date'], ['plant_id_eia', 'generator_id', 'report_date'])
-
- with op.batch_alter_table('out_eia923__monthly_generation_fuel_by_generator', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators'), type_='foreignkey')
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities'), type_='foreignkey')
- batch_op.create_foreign_key('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators', 'core_eia860__scd_generators', ['plant_id_eia', 'generator_id', 'report_date'], ['plant_id_eia', 'generator_id', 'report_date'])
- batch_op.create_foreign_key('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities', 'core_eia860__scd_utilities', ['utility_id_eia', 'report_date'], ['utility_id_eia', 'report_date'])
-
- # ### end Alembic commands ###
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 60423c4d20..8d0c933679 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -988,8 +988,9 @@ class NodeId(NamedTuple):
def _out_ferc1__explosion_tags(table_dimensions_ferc1) -> pd.DataFrame:
"""Grab the stored table of tags and add infered dimension."""
# NOTE: there are a bunch of duplicate records in xbrl_factoid_rate_base_tags.csv
- # Also, these tags are only applicable to the balance_sheet_assets_ferc1 table, but
- # we need to pass in a dataframe with the right structure to all of the exploders,
+ # Also, these tags are only applicable to the
+ # core_ferc1__yearly_balance_sheet_assets table, but we need to pass in
+ # a dataframe with the right structure to all of the exploders,
# so we're just re-using this one for the moment.
tags_csv = (
importlib.resources.files("pudl.package_data.ferc1")
@@ -1544,7 +1545,8 @@ class XbrlCalculationForestFerc1(BaseModel):
"""A class for manipulating groups of hierarchically nested XBRL calculations.
We expect that the facts reported in high-level FERC tables like
- :ref:`income_statement_ferc1` and :ref:`balance_sheet_assets_ferc1` should be
+ :ref:`core_ferc1__yearly_income_statement` and
+ :ref:`core_ferc1__yearly_balance_sheet_assets` should be
calculable from many individually reported granular values, based on the
calculations encoded in the XBRL Metadata, and that these relationships should have
a hierarchical tree structure. Several individual values from the higher level
diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py
index 5baebf3dfa..838b84deae 100644
--- a/src/pudl/transform/ferc1.py
+++ b/src/pudl/transform/ferc1.py
@@ -4081,14 +4081,15 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
return df
def aggregated_xbrl_factoids(self: Self, df: pd.DataFrame) -> pd.DataFrame:
- """Aggregate xbrl_factoids records for linking to :ref:`plant_in_service_ferc1`.
+ """Aggregate xbrl_factoids records for linking to :ref:`core_ferc1__yearly_plant_in_service`.
This table has two ``xbrl_factoid`` which can be linked via calcuations to one
- ``xbrl_factoid`` in the :ref:`plant_in_service_ferc1`. Doing this 2:1 linkage
- would be fine in theory. But the :ref:`plant_in_service_ferc1` is in most senses
+ ``xbrl_factoid`` in the :ref:`core_ferc1__yearly_plant_in_service`.
+ Doing this 2:1 linkage would be fine in theory. But the
+ :ref:`core_ferc1__yearly_plant_in_service` is in most senses
the table with the more details and of our desire to build tree-link
relationships between factoids, we need to build a new factoid to link in a 1:1
- manner between this table and the :ref:`plant_in_service_ferc1`.
+ manner between this table and the :ref:`core_ferc1__yearly_plant_in_service`.
We'll also add this factoid into the metadata via :meth:`process_xbrl_metadata`
and add the linking calculation via :meth:`apply_xbrl_calculation_fixes`.
@@ -5577,7 +5578,7 @@ def table_dimensions_ferc1(**kwargs) -> pd.DataFrame:
Compile a dataframe indicating what distinct values are observed in the data for
each dimension column in association with each unique combination of ``table_name``
and ``xbrl_factoid``. E.g. for all factoids found in the
- :ref:`electric_plant_depreciation_functional_ferc1` table,
+ :ref:`core_ferc1__yearly_electric_plant_depreciation_functional` table,
the only value observed for ``utility_type`` is ``electric`` and the values observed
for ``plant_status`` include: ``future``, ``in_service``, ``leased`` and ``total``.
@@ -5817,13 +5818,14 @@ def make_calculation_dimensions_explicit(
We have extended this calculation system to allow independent calculations to be
specified for different values within a given dimension. For example, the
- :ref:`utility_plant_summary_ferc1` table contains records with a variety of
+ :ref:`core_ferc1__yearly_utility_plant_summary` table contains records with a variety of
different ``utility_type`` values (gas, electric, etc.). For many combinations of
fact and ``utility_type``, no more detailed information about the soruce of the data
is available, but for some, and only in the case of electric utilities, much more
- detail can be found in the :ref:`plant_in_service_ferc1` table. In order to use this
- additional information when it is available, we sometimes explicitly specify
- different calculations for different values of additional dimension columns.
+ detail can be found in the :ref:`core_ferc1__yearly_plant_in_service` table.
+ In order to use this additional information when it is available, we sometimes
+ explicitly specify different calculations for different values of additional
+ dimension columns.
This function uses the observed associations between ``table_name``,
``xbrl_factoid`` and the other dimension columns compiled by
From 7a7a441ebe06c311c6d27da1ef2737dad18de59e Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 28 Sep 2023 13:25:54 +0200
Subject: [PATCH 33/70] Fix names of inputs to exploded tables and xbrl
calculation fixes
---
src/pudl/output/ferc1.py | 6 +-
.../xbrl_calculation_component_fixes.csv | 294 +++++++++---------
src/pudl/transform/ferc1.py | 15 +-
3 files changed, 160 insertions(+), 155 deletions(-)
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 8d0c933679..7664df964b 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -1945,21 +1945,21 @@ def forest(self: Self) -> nx.DiGraph:
# only stepchildren node removal from above. a generalization here would be good
almost_pure_stepparents = [
NodeId(
- "utility_plant_summary_ferc1",
+ "core_ferc1__yearly_utility_plant_summary",
"depreciation_amortization_and_depletion_utility_plant_leased_to_others",
"total",
pd.NA,
pd.NA,
),
NodeId(
- "utility_plant_summary_ferc1",
+ "core_ferc1__yearly_utility_plant_summary",
"depreciation_and_amortization_utility_plant_held_for_future_use",
"total",
pd.NA,
pd.NA,
),
NodeId(
- "utility_plant_summary_ferc1",
+ "core_ferc1__yearly_utility_plant_summary",
"utility_plant_in_service_classified_and_unclassified",
"total",
pd.NA,
diff --git a/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv b/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
index b0e6b7398f..3c95b6f6d8 100644
--- a/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
+++ b/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
@@ -1,148 +1,148 @@
table_name_parent,xbrl_factoid_parent,table_name,xbrl_factoid,weight,utility_type,plant_function,plant_status
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,abandonment_of_leases,,,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,1.0,total,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,amortization_of_other_utility_plant_utility_plant_in_service,,,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,amortization_of_plant_acquisition_adjustment,,,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,depreciation_amortization_and_depletion_utility_plant_leased_to_others,,,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,depreciation_and_amortization_utility_plant_held_for_future_use,,,,
-balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,depreciation_utility_plant_in_service,,,,
-balance_sheet_assets_ferc1,construction_work_in_progress,utility_plant_summary_ferc1,construction_work_in_progress,1.0,total,,
-balance_sheet_assets_ferc1,current_and_accrued_assets,balance_sheet_assets_ferc1,derivative_instrument_assets_hedges_long_term,,,,
-balance_sheet_assets_ferc1,current_and_accrued_assets,balance_sheet_assets_ferc1,derivative_instrument_assets_long_term,,,,
-balance_sheet_assets_ferc1,current_and_accrued_assets,balance_sheet_assets_ferc1,less_derivative_instrument_assets_hedges_long_term,-1.0,,,
-balance_sheet_assets_ferc1,current_and_accrued_assets,balance_sheet_assets_ferc1,less_derivative_instrument_assets_long_term,-1.0,,,
-balance_sheet_assets_ferc1,current_and_accrued_assets,balance_sheet_assets_ferc1,less_noncurrent_portion_of_allowances,-1.0,,,
-balance_sheet_assets_ferc1,current_and_accrued_assets,balance_sheet_assets_ferc1,noncurrent_portion_of_allowances,,,,
-balance_sheet_assets_ferc1,deferred_debits,balance_sheet_assets_ferc1,preliminary_natural_gas_survey_and_investigation_charges,1.0,,,
-balance_sheet_assets_ferc1,deferred_debits,balance_sheet_assets_ferc1,preliminary_natural_gas_and_other_survey_and_investigation_charges,1.0,,,
-balance_sheet_assets_ferc1,nuclear_fuel_net,balance_sheet_assets_ferc1,nuclear_fuel,1.0,,,
-balance_sheet_assets_ferc1,nuclear_fuel_net,nuclear_fuel_materials_ferc1,nuclear_fuel_materials_and_assemblies,,,,
-balance_sheet_assets_ferc1,nuclear_fuel_net,nuclear_fuel_materials_ferc1,spent_nuclear_fuel,,,,
-balance_sheet_assets_ferc1,other_property_and_investments,balance_sheet_assets_ferc1,special_funds_all,1.0,,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,balance_sheet_assets_ferc1,construction_work_in_progress,,,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,balance_sheet_assets_ferc1,utility_plant,,,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,utility_plant_summary_ferc1,utility_plant_acquisition_adjustment,,,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,utility_plant_summary_ferc1,utility_plant_and_construction_work_in_progress,1.0,total,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,utility_plant_summary_ferc1,utility_plant_held_for_future_use,,,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,utility_plant_summary_ferc1,utility_plant_in_service_classified_and_unclassified,,,,
-balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,utility_plant_summary_ferc1,utility_plant_leased_to_others,,,,
-balance_sheet_assets_ferc1,utility_plant_net,balance_sheet_assets_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,,,,
-balance_sheet_assets_ferc1,utility_plant_net,balance_sheet_assets_ferc1,utility_plant_and_construction_work_in_progress,,,,
-balance_sheet_assets_ferc1,utility_plant_net,utility_plant_summary_ferc1,utility_plant_net,1.0,total,,
-balance_sheet_liabilities_ferc1,deferred_credits,balance_sheet_liabilities_ferc1,accumulated_deferred_income_taxes,1.0,,,
-balance_sheet_liabilities_ferc1,retained_earnings,retained_earnings_ferc1,retained_earnings,1.0,,,
-balance_sheet_liabilities_ferc1,current_and_accrued_liabilities,balance_sheet_liabilities_ferc1,long_term_portion_of_derivative_instrument_liabilities,,,,
-balance_sheet_liabilities_ferc1,current_and_accrued_liabilities,balance_sheet_liabilities_ferc1,less_long_term_portion_of_derivative_instrument_liabilities,-1.0,,,
-balance_sheet_liabilities_ferc1,current_and_accrued_liabilities,balance_sheet_liabilities_ferc1,long_term_portion_of_derivative_instrument_liabilities_hedges,,,,
-balance_sheet_liabilities_ferc1,current_and_accrued_liabilities,balance_sheet_liabilities_ferc1,less_long_term_portion_of_derivative_instrument_liabilities_hedges,-1.0,,,
-electric_energy_sources_ferc1,sources_of_energy,electric_energy_sources_ferc1,megawatt_hours_purchased,1.0,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,electric_expenses_hydraulic_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,hydraulic_expenses,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,maintenance_of_electric_plant_hydraulic_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,maintenance_of_miscellaneous_hydraulic_plant,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,maintenance_of_reservoirs_dams_and_waterways,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,maintenance_of_structures_hydraulic_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,maintenance_supervision_and_engineering_hydraulic_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,miscellaneous_hydraulic_power_generation_expenses,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,rents_hydraulic_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,electric_operating_expenses_ferc1,water_for_power,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,plants_hydro_ferc1,opex_operations,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,plants_pumped_storage_ferc1,opex_operations,,,,
-electric_operating_expenses_ferc1,power_production_expenses_hydraulic_power,plants_steam_ferc1,opex_operations,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,allowances,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,coolants_and_water,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,electric_expenses_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,fuel_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,maintenance_of_boiler_plant_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,maintenance_of_electric_plant_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,maintenance_of_miscellaneous_steam_plant,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,maintenance_of_structures_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,maintenance_supervision_and_engineering_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,miscellaneous_steam_power_expenses,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,rents_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,steam_expenses_steam_power_generation,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,steam_from_other_sources,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,electric_operating_expenses_ferc1,steam_transferred_credit,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,plants_hydro_ferc1,opex_operations,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,plants_pumped_storage_ferc1,opex_operations,,,,
-electric_operating_expenses_ferc1,power_production_expenses_steam_power,plants_steam_ferc1,opex_operations,,,,
-electric_operating_expenses_ferc1,transmission_operation_expense,electric_operating_expenses_ferc1,load_dispatching_transmission_expense,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,forfeited_discounts,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,interdepartmental_rents,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,miscellaneous_revenue,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,miscellaneous_service_revenues,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,other_electric_revenue,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,other_miscellaneous_operating_revenues,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,regional_transmission_service_revenues,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,rent_from_electric_property,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,revenues_from_transmission_of_electricity_of_others,1.0,,,
-electric_operating_revenues_ferc1,other_operating_revenues,electric_operating_revenues_ferc1,sales_of_water_and_water_power,1.0,,,
-electric_operating_revenues_ferc1,sales_to_ultimate_consumers,electric_operating_revenues_ferc1,large_or_industrial,1.0,,,
-electric_operating_revenues_ferc1,sales_to_ultimate_consumers,electric_operating_revenues_ferc1,small_or_commercial,1.0,,,
-electric_operating_revenues_ferc1,sales_to_ultimate_consumers,electricity_sales_by_rate_schedule_ferc1,commercial_and_industrial,,,,
-electric_plant_depreciation_changes_ferc1,ending_balance,electric_plant_depreciation_changes_ferc1,book_cost_of_asset_retirement_costs,1.0,,,
-electric_plant_depreciation_changes_ferc1,ending_balance,electric_plant_depreciation_changes_ferc1,depreciation_provision,1.0,,,
-electric_plant_depreciation_changes_ferc1,ending_balance,electric_plant_depreciation_changes_ferc1,net_charges_for_retired_plant,1.0,,,
-electric_plant_depreciation_changes_ferc1,ending_balance,electric_plant_depreciation_changes_ferc1,other_adjustments_to_accumulated_depreciation,1.0,,,
-electric_plant_depreciation_changes_ferc1,ending_balance,electric_plant_depreciation_changes_ferc1,starting_balance,1.0,,,
-income_statement_ferc1,amortization_and_depletion_of_utility_plant,depreciation_amortization_summary_ferc1,amortization_limited_term_electric_plant,1.0,electric,total,
-income_statement_ferc1,amortization_and_depletion_of_utility_plant,depreciation_amortization_summary_ferc1,amortization_other_electric_plant,1.0,electric,total,
-income_statement_ferc1,depreciation_expense,depreciation_amortization_summary_ferc1,depreciation_expense,1.0,electric,total,
-income_statement_ferc1,depreciation_expense_for_asset_retirement_costs,depreciation_amortization_summary_ferc1,depreciation_expense_asset_retirement,1.0,electric,total,
-income_statement_ferc1,income_before_extraordinary_items,income_statement_ferc1,net_utility_operating_income,1.0,,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,distribution_maintenance_expense_electric,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,hydraulic_power_generation_maintenance_expense,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,maintenance_of_general_plant,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,nuclear_power_generation_maintenance_expense,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,other_power_generation_maintenance_expense,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,regional_market_maintenance_expense,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,steam_power_generation_maintenance_expense,1.0,electric,,
-income_statement_ferc1,maintenance_expense,electric_operating_expenses_ferc1,transmission_maintenance_expense_electric,1.0,electric,,
-income_statement_ferc1,operating_revenues,electric_operating_revenues_ferc1,electric_operating_revenues,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,administrative_and_general_operation_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,customer_account_expenses,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,customer_service_and_information_expenses,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,distribution_operation_expenses_electric,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,hydraulic_power_generation_operations_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,nuclear_power_generation_operations_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,other_power_generation_operations_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,regional_market_operation_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,sales_expenses,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,steam_power_generation_operations_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,transmission_operation_expense,1.0,electric,,
-income_statement_ferc1,operation_expense,electric_operating_expenses_ferc1,power_production_expenses,1.0,electric,,
-income_statement_ferc1,other_income_deductions,income_statement_ferc1,miscellaneous_deductions,1.0,,,
-income_statement_ferc1,taxes_on_other_income_and_deductions,income_statement_ferc1,investment_tax_credits,-1.0,,,
-plant_in_service_ferc1,electric_plant_in_service_and_completed_construction_not_classified_electric,plant_in_service_ferc1,distribution_plant,1.0,,,
-plant_in_service_ferc1,electric_plant_in_service_and_completed_construction_not_classified_electric,plant_in_service_ferc1,general_plant,1.0,,,
-plant_in_service_ferc1,electric_plant_in_service_and_completed_construction_not_classified_electric,plant_in_service_ferc1,intangible_plant,1.0,,,
-plant_in_service_ferc1,electric_plant_in_service_and_completed_construction_not_classified_electric,plant_in_service_ferc1,production_plant,1.0,,,
-plant_in_service_ferc1,electric_plant_in_service_and_completed_construction_not_classified_electric,plant_in_service_ferc1,transmission_and_market_operation_plant_regional_transmission_and_market_operation_plant,1.0,,,
-plant_in_service_ferc1,electric_plant_in_service_and_completed_construction_not_classified_electric,plant_in_service_ferc1,transmission_plant,1.0,,,
-retained_earnings_ferc1,appropriated_retained_earnings_including_reserve_amortization,retained_earnings_ferc1,appropriated_retained_earnings,1.0,,,
-retained_earnings_ferc1,appropriated_retained_earnings_including_reserve_amortization,retained_earnings_ferc1,appropriated_retained_earnings_amortization_reserve_federal,1.0,,,
-retained_earnings_ferc1,retained_earnings,retained_earnings_ferc1,appropriated_retained_earnings_including_reserve_amortization,1.0,,,
-retained_earnings_ferc1,retained_earnings,retained_earnings_ferc1,unappropriated_retained_earnings,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,adjustments_to_retained_earnings_credit,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,adjustments_to_retained_earnings_debit,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,appropriations_of_retained_earnings,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,balance_transferred_from_income,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,dividends_declared_common_stock,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,dividends_declared_preferred_stock,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,transfers_from_unappropriated_undistributed_subsidiary_earnings,1.0,,,
-retained_earnings_ferc1,unappropriated_retained_earnings,retained_earnings_ferc1,unappropriated_retained_earnings_previous_year,1.0,,,
-retained_earnings_ferc1,unappropriated_undistributed_subsidiary_earnings,retained_earnings_ferc1,changes_unappropriated_undistributed_subsidiary_earnings_credits,1.0,,,
-retained_earnings_ferc1,unappropriated_undistributed_subsidiary_earnings,retained_earnings_ferc1,dividends_received,-1.0,,,
-retained_earnings_ferc1,unappropriated_undistributed_subsidiary_earnings,retained_earnings_ferc1,equity_in_earnings_of_subsidiary_companies,1.0,,,
-retained_earnings_ferc1,unappropriated_undistributed_subsidiary_earnings,retained_earnings_ferc1,unappropriated_undistributed_subsidiary_earnings_previous_year,1.0,,,
-balance_sheet_liabilities_ferc1,unappropriated_undistributed_subsidiary_earnings,retained_earnings_ferc1,unappropriated_undistributed_subsidiary_earnings,1.0,,,
-utility_plant_summary_ferc1,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,utility_plant_summary_ferc1,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
-utility_plant_summary_ferc1,depreciation_utility_plant_in_service,electric_plant_depreciation_functional_ferc1,accumulated_depreciation,1.0,electric,total,in_service
-utility_plant_summary_ferc1,utility_plant_in_service_classified_and_unclassified,utility_plant_summary_ferc1,utility_plant_in_service_classified,,,,
-utility_plant_summary_ferc1,utility_plant_in_service_classified_and_unclassified,utility_plant_summary_ferc1,utility_plant_in_service_classified_and_property_under_capital_leases,1.0,,,
-utility_plant_summary_ferc1,utility_plant_in_service_classified_and_unclassified,utility_plant_summary_ferc1,utility_plant_in_service_property_under_capital_leases,,,,
-utility_plant_summary_ferc1,utility_plant_in_service_experimental_plant_unclassified,plant_in_service_ferc1,experimental_electric_plant_unclassified,1.0,electric,,
-utility_plant_summary_ferc1,utility_plant_in_service_plant_purchased_or_sold,plant_in_service_ferc1,electric_plant_purchased,1.0,electric,,
-utility_plant_summary_ferc1,utility_plant_in_service_plant_purchased_or_sold,plant_in_service_ferc1,electric_plant_sold,-1.0,electric,,
-utility_plant_summary_ferc1,utility_plant_and_construction_work_in_progress,balance_sheet_assets_ferc1,utility_plant,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,abandonment_of_leases,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,amortization_of_other_utility_plant_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,amortization_of_plant_acquisition_adjustment,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_amortization_and_depletion_utility_plant_leased_to_others,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_and_amortization_utility_plant_held_for_future_use,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,construction_work_in_progress,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,derivative_instrument_assets_hedges_long_term,,,,
+core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,derivative_instrument_assets_long_term,,,,
+core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_derivative_instrument_assets_hedges_long_term,-1.0,,,
+core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_derivative_instrument_assets_long_term,-1.0,,,
+core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_noncurrent_portion_of_allowances,-1.0,,,
+core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,noncurrent_portion_of_allowances,,,,
+core_ferc1__yearly_balance_sheet_assets,deferred_debits,core_ferc1__yearly_balance_sheet_assets,preliminary_natural_gas_survey_and_investigation_charges,1.0,,,
+core_ferc1__yearly_balance_sheet_assets,deferred_debits,core_ferc1__yearly_balance_sheet_assets,preliminary_natural_gas_and_other_survey_and_investigation_charges,1.0,,,
+core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,core_ferc1__yearly_balance_sheet_assets,nuclear_fuel,1.0,,,
+core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,nuclear_fuel_materials_ferc1,nuclear_fuel_materials_and_assemblies,,,,
+core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,nuclear_fuel_materials_ferc1,spent_nuclear_fuel,,,,
+core_ferc1__yearly_balance_sheet_assets,other_property_and_investments,core_ferc1__yearly_balance_sheet_assets,special_funds_all,1.0,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_acquisition_adjustment,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_and_construction_work_in_progress,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_held_for_future_use,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_leased_to_others,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_utility_plant_summary,utility_plant_net,1.0,total,,
+core_ferc1__yearly_balance_sheet_liabilities,deferred_credits,core_ferc1__yearly_balance_sheet_liabilities,accumulated_deferred_income_taxes,1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities,retained_earnings,core_ferc1__yearly_retained_earnings,retained_earnings,1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,long_term_portion_of_derivative_instrument_liabilities,,,,
+core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,less_long_term_portion_of_derivative_instrument_liabilities,-1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,long_term_portion_of_derivative_instrument_liabilities_hedges,,,,
+core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,less_long_term_portion_of_derivative_instrument_liabilities_hedges,-1.0,,,
+core_ferc1__yearly_electric_energy_sources,sources_of_energy,core_ferc1__yearly_electric_energy_sources,megawatt_hours_purchased,1.0,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,electric_expenses_hydraulic_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,hydraulic_expenses,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_electric_plant_hydraulic_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_miscellaneous_hydraulic_plant,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_reservoirs_dams_and_waterways,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_structures_hydraulic_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_supervision_and_engineering_hydraulic_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,miscellaneous_hydraulic_power_generation_expenses,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,rents_hydraulic_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,water_for_power,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_hydro,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_pumped_storage,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_steam,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,allowances,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,coolants_and_water,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,electric_expenses_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,fuel_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_boiler_plant_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_electric_plant_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_miscellaneous_steam_plant,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_structures_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_supervision_and_engineering_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,miscellaneous_steam_power_expenses,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,rents_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_expenses_steam_power_generation,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_from_other_sources,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_transferred_credit,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_hydro,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_pumped_storage,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_steam,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,transmission_operation_expense,core_ferc1__yearly_electric_operating_expenses,load_dispatching_transmission_expense,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,forfeited_discounts,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,interdepartmental_rents,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,miscellaneous_revenue,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,miscellaneous_service_revenues,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,other_electric_revenue,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,other_miscellaneous_operating_revenues,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,regional_transmission_service_revenues,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,rent_from_electric_property,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,revenues_from_transmission_of_electricity_of_others,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,sales_of_water_and_water_power,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,sales_to_ultimate_consumers,core_ferc1__yearly_electric_operating_revenues,large_or_industrial,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,sales_to_ultimate_consumers,core_ferc1__yearly_electric_operating_revenues,small_or_commercial,1.0,,,
+core_ferc1__yearly_electric_operating_revenues,sales_to_ultimate_consumers,core_ferc1__yearly_electricity_sales_by_rate_schedule,commercial_and_industrial,,,,
+core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,book_cost_of_asset_retirement_costs,1.0,,,
+core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,depreciation_provision,1.0,,,
+core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,net_charges_for_retired_plant,1.0,,,
+core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,other_adjustments_to_accumulated_depreciation,1.0,,,
+core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,starting_balance,1.0,,,
+core_ferc1__yearly_income_statement,amortization_and_depletion_of_utility_plant,core_ferc1__yearly_depreciation_amortization_summary,amortization_limited_term_electric_plant,1.0,electric,total,
+core_ferc1__yearly_income_statement,amortization_and_depletion_of_utility_plant,core_ferc1__yearly_depreciation_amortization_summary,amortization_other_electric_plant,1.0,electric,total,
+core_ferc1__yearly_income_statement,depreciation_expense,core_ferc1__yearly_depreciation_amortization_summary,depreciation_expense,1.0,electric,total,
+core_ferc1__yearly_income_statement,depreciation_expense_for_asset_retirement_costs,core_ferc1__yearly_depreciation_amortization_summary,depreciation_expense_asset_retirement,1.0,electric,total,
+core_ferc1__yearly_income_statement,income_before_extraordinary_items,core_ferc1__yearly_income_statement,net_utility_operating_income,1.0,,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,distribution_maintenance_expense_electric,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,hydraulic_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,maintenance_of_general_plant,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,nuclear_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,other_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,regional_market_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,steam_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,transmission_maintenance_expense_electric,1.0,electric,,
+core_ferc1__yearly_income_statement,operating_revenues,core_ferc1__yearly_electric_operating_revenues,electric_operating_revenues,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,administrative_and_general_operation_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,customer_account_expenses,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,customer_service_and_information_expenses,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,distribution_operation_expenses_electric,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,hydraulic_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,nuclear_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,other_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,regional_market_operation_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,sales_expenses,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,steam_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,transmission_operation_expense,1.0,electric,,
+core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,power_production_expenses,1.0,electric,,
+core_ferc1__yearly_income_statement,other_income_deductions,core_ferc1__yearly_income_statement,miscellaneous_deductions,1.0,,,
+core_ferc1__yearly_income_statement,taxes_on_other_income_and_deductions,core_ferc1__yearly_income_statement,investment_tax_credits,-1.0,,,
+core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,distribution_plant,1.0,,,
+core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,general_plant,1.0,,,
+core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,intangible_plant,1.0,,,
+core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,production_plant,1.0,,,
+core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,transmission_and_market_operation_plant_regional_transmission_and_market_operation_plant,1.0,,,
+core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,transmission_plant,1.0,,,
+core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_including_reserve_amortization,core_ferc1__yearly_retained_earnings,appropriated_retained_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_including_reserve_amortization,core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_amortization_reserve_federal,1.0,,,
+core_ferc1__yearly_retained_earnings,retained_earnings,core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_including_reserve_amortization,1.0,,,
+core_ferc1__yearly_retained_earnings,retained_earnings,core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,adjustments_to_retained_earnings_credit,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,adjustments_to_retained_earnings_debit,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,appropriations_of_retained_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,balance_transferred_from_income,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,dividends_declared_common_stock,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,dividends_declared_preferred_stock,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,transfers_from_unappropriated_undistributed_subsidiary_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings_previous_year,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,changes_unappropriated_undistributed_subsidiary_earnings_credits,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,dividends_received,-1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,equity_in_earnings_of_subsidiary_companies,1.0,,,
+core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings_previous_year,1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,1.0,,,
+core_ferc1__yearly_utility_plant_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
+core_ferc1__yearly_utility_plant_summary,depreciation_utility_plant_in_service,core_ferc1__yearly_electric_plant_depreciation_functional,accumulated_depreciation,1.0,electric,total,in_service
+core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified,,,,
+core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_property_under_capital_leases,1.0,,,
+core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_property_under_capital_leases,,,,
+core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_experimental_plant_unclassified,core_ferc1__yearly_plant_in_service,experimental_electric_plant_unclassified,1.0,electric,,
+core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_purchased,1.0,electric,,
+core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_sold,-1.0,electric,,
+core_ferc1__yearly_utility_plant_summary,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
\ No newline at end of file
diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py
index 838b84deae..5d29aa6675 100644
--- a/src/pudl/transform/ferc1.py
+++ b/src/pudl/transform/ferc1.py
@@ -5711,16 +5711,21 @@ def calculation_components_xbrl_ferc1(**kwargs) -> pd.DataFrame:
)
check_for_calc_components_duplicates(
calc_components,
- table_names_known_dupes=["electricity_sales_by_rate_schedule_ferc1"],
+ table_names_known_dupes=[
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule"
+ ],
idx=calc_and_parent_cols,
)
# check for parent/child duplicates. again need to remove the
- # electricity_sales_by_rate_schedule_ferc1 table. Null hack bc comparing pandas
+ # core_ferc1__yearly_electricity_sales_by_rate_schedule table. Null hack bc comparing pandas
# nulls
self_refs_mask = calc_components[calc_and_parent_cols].fillna("NULL HACK").apply(
lambda x: all(x[col] == x[f"{col}_parent"] for col in calc_cols), axis=1
- ) & (calc_components.table_name != "electricity_sales_by_rate_schedule_ferc1")
+ ) & (
+ calc_components.table_name
+ != "core_ferc1__yearly_electricity_sales_by_rate_schedule"
+ )
if not (parent_child_dupes := calc_components.loc[self_refs_mask]).empty:
raise AssertionError(
f"Found {len(parent_child_dupes)} calcuations where the parent and child "
@@ -5785,7 +5790,7 @@ def check_for_calc_components_duplicates(
) -> None:
"""Check for duplicates calculation records.
- We need to remove the electricity_sales_by_rate_schedule_ferc1 bc there are
+ We need to remove the core_ferc1__yearly_electricity_sales_by_rate_schedule bc there are
duplicate renamed factoids in that table (originally billed/unbilled).
"""
calc_components_test = (
@@ -6053,7 +6058,7 @@ def infer_intra_factoid_totals(
check_for_calc_components_duplicates(
calcs_with_totals,
table_names_known_dupes=[
- "electricity_sales_by_rate_schedule_ferc1",
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule",
],
idx=parent_node_pk + child_node_pk,
)
From 1aa511658d09b988df69da45f29e75eb1ae04d8b Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 29 Sep 2023 11:10:09 +0200
Subject: [PATCH 34/70] Rename mcoe and ppl assets
---
src/pudl/analysis/allocate_gen_fuel.py | 4 +-
src/pudl/analysis/mcoe.py | 73 +++--
src/pudl/analysis/plant_parts_eia.py | 14 +-
src/pudl/etl/__init__.py | 6 +-
src/pudl/metadata/resources/eia.py | 4 +-
src/pudl/metadata/resources/eia860.py | 20 +-
src/pudl/metadata/resources/mcoe.py | 392 +++++++++++--------------
src/pudl/output/eia.py | 2 +-
src/pudl/output/pudltabl.py | 10 +-
9 files changed, 246 insertions(+), 279 deletions(-)
diff --git a/src/pudl/analysis/allocate_gen_fuel.py b/src/pudl/analysis/allocate_gen_fuel.py
index 511755de1c..e130671332 100644
--- a/src/pudl/analysis/allocate_gen_fuel.py
+++ b/src/pudl/analysis/allocate_gen_fuel.py
@@ -216,7 +216,7 @@ def allocate_gen_fuel_asset_factory(
"bf": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_boiler_fuel"),
"gen": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_generation"),
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
- "gens": AssetIn(key="out_eia__yearly_generators"),
+ "gens": AssetIn(key="_out_eia__yearly_generators"),
},
io_manager_key=io_manager_key,
compute_kind="Python",
@@ -287,7 +287,7 @@ def gen_fuel_by_gen(
"net_gen_fuel_alloc": AssetIn(
key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source"
),
- "gens": AssetIn(key="out_eia__yearly_generators"),
+ "gens": AssetIn(key="_out_eia__yearly_generators"),
"own_eia860": AssetIn(key="out_eia860__yearly_ownership"),
},
io_manager_key=io_manager_key,
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index d5c9cce2bd..3e0e6eb43e 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -41,7 +41,6 @@
def mcoe_asset_factory(
freq: Literal["AS", "MS"],
- io_manager_key: str | None = None,
) -> list[AssetsDefinition]:
"""Build MCOE related assets at yearly and monthly frequencies."""
agg_freqs = {"AS": "yearly", "MS": "monthly"}
@@ -49,28 +48,33 @@ def mcoe_asset_factory(
raise ValueError(f"freq must be one of {agg_freqs.keys()}, got: {freq}.")
@asset(
- name=f"heat_rate_by_unit_{agg_freqs[freq]}",
+ name=f"_out_eia__{agg_freqs[freq]}_heat_rate_by_unit",
ins={
"gen": AssetIn(
key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator_energy_source"
),
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
},
- io_manager_key=io_manager_key,
compute_kind="Python",
+ description=f"{agg_freqs[freq].title()} heat rate estimates by generation unit. Generation "
+ "units are identified by ``unit_id_pudl`` and are composed of a set of "
+ f"interconnected boilers and generators.",
)
def hr_by_unit_asset(gen: pd.DataFrame, bga: pd.DataFrame) -> pd.DataFrame:
return heat_rate_by_unit(gen_fuel_by_energy_source=gen, bga=bga)
@asset(
- name=f"heat_rate_by_generator_{agg_freqs[freq]}",
+ name=f"_out_eia__{agg_freqs[freq]}_heat_rate_by_generator",
ins={
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
- "hr_by_unit": AssetIn(key=f"heat_rate_by_unit_{agg_freqs[freq]}"),
- "gens": AssetIn(key="out_eia__yearly_generators"),
+ "hr_by_unit": AssetIn(key=f"_out_eia__{agg_freqs[freq]}_heat_rate_by_unit"),
+ "gens": AssetIn(key="_out_eia__yearly_generators"),
},
- io_manager_key=io_manager_key,
compute_kind="Python",
+ description=f"{agg_freqs[freq].title()} heat rate estimates by generator. These are actually "
+ "just generation unit level heat rates, which have been broadcast "
+ "across all constituent generator IDs, since heat rates really only "
+ "have a well-defined meaning in the context of a generation unit.",
)
def hr_by_gen_asset(
bga: pd.DataFrame, hr_by_unit: pd.DataFrame, gens: pd.DataFrame
@@ -78,14 +82,22 @@ def hr_by_gen_asset(
return heat_rate_by_gen(bga=bga, hr_by_unit=hr_by_unit, gens=gens)
@asset(
- name=f"fuel_cost_by_generator_{agg_freqs[freq]}",
+ name=f"_out_eia__{agg_freqs[freq]}_fuel_cost_by_generator",
ins={
- "hr_by_gen": AssetIn(key=f"heat_rate_by_generator_{agg_freqs[freq]}"),
- "gens": AssetIn(key="out_eia__yearly_generators"),
+ "hr_by_gen": AssetIn(
+ key=f"_out_eia__{agg_freqs[freq]}_heat_rate_by_generator"
+ ),
+ "gens": AssetIn(key="_out_eia__yearly_generators"),
"frc": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_fuel_receipts_costs"),
},
- io_manager_key=io_manager_key,
compute_kind="Python",
+ description=f"{agg_freqs[freq].title()} estimate of per-generator fuel costs both per MMBTU "
+ "and per MWh. These calculations are based on the allocation of net "
+ "generation and fuel consumption as well as plant-level delivered fuel prices "
+ "reported in the fuel receipts and cost table. The intermediary heat rate "
+ "calculation depends on having the unit ID filled in, which means fuel cost "
+ "coverage is low. The fuel costs are also currently aggregated to coarse fuel "
+ "categories rather than using the more detailed energy source codes.",
)
def fc_asset(
hr_by_gen: pd.DataFrame, gens: pd.DataFrame, frc: pd.DataFrame
@@ -93,28 +105,31 @@ def fc_asset(
return fuel_cost(hr_by_gen=hr_by_gen, gens=gens, frc=frc)
@asset(
- name=f"capacity_factor_by_generator_{agg_freqs[freq]}",
+ name=f"_out_eia__{agg_freqs[freq]}_capacity_factor_by_generator",
ins={
"gen": AssetIn(
key=f"out_eia923__{agg_freqs[freq]}_generation_fuel_by_generator"
),
- "gens": AssetIn(key="out_eia__yearly_generators"),
+ "gens": AssetIn(key="_out_eia__yearly_generators"),
},
- io_manager_key=io_manager_key,
compute_kind="Python",
+ description=f"{agg_freqs[freq].title()} estimates of generator capacity factor. Capacity "
+ "factor is calculated based on reported generator capacity and the "
+ "allocated net generation reported in the generation and generation ",
)
def cf_asset(gens: pd.DataFrame, gen: pd.DataFrame) -> pd.DataFrame:
return capacity_factor(gens=gens, gen=gen, freq=freq)
@asset(
- name=f"mcoe_{agg_freqs[freq]}",
+ name=f"_out_eia__{agg_freqs[freq]}_derived_generator_attributes",
ins={
- "fuel_cost": AssetIn(key=f"fuel_cost_by_generator_{agg_freqs[freq]}"),
+ "fuel_cost": AssetIn(
+ key=f"_out_eia__{agg_freqs[freq]}_fuel_cost_by_generator"
+ ),
"capacity_factor": AssetIn(
- key=f"capacity_factor_by_generator_{agg_freqs[freq]}"
+ key=f"_out_eia__{agg_freqs[freq]}_capacity_factor_by_generator"
),
},
- io_manager_key=io_manager_key,
compute_kind="Python",
config_schema={
"min_heat_rate": Field(
@@ -155,6 +170,17 @@ def cf_asset(gens: pd.DataFrame, gen: pd.DataFrame) -> pd.DataFrame:
),
),
},
+ io_manager_key="pudl_sqlite_io_manager",
+ description=f"{agg_freqs[freq].title()} generator capacity factor, heat rate, fuel cost per MMBTU and fuel cost "
+ "per MWh. These calculations are based on the allocation of net generation reported on "
+ "the basis of plant, prime mover and energy source to individual generators. Heat rates "
+ "by generator-month are estimated by using allocated estimates for per-generator net "
+ "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
+ "reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
+ "consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
+ "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
+ "~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
+ "cost estimates.",
)
def mcoe_asset(
context, fuel_cost: pd.DataFrame, capacity_factor: pd.DataFrame
@@ -169,12 +195,14 @@ def mcoe_asset(
)
@asset(
- name=f"mcoe_generators_{agg_freqs[freq]}",
+ name=f"out_eia__{agg_freqs[freq]}_generators",
ins={
- "mcoe": AssetIn(key=f"mcoe_{agg_freqs[freq]}"),
- "gens": AssetIn(key="out_eia__yearly_generators"),
+ "mcoe": AssetIn(
+ key=f"_out_eia__{agg_freqs[freq]}_derived_generator_attributes"
+ ),
+ "gens": AssetIn(key="_out_eia__yearly_generators"),
},
- io_manager_key=io_manager_key,
+ io_manager_key="pudl_sqlite_io_manager",
compute_kind="Python",
config_schema={
"all_gens": Field(
@@ -223,7 +251,6 @@ def mcoe_generators_asset(
for freq in ["AS", "MS"]
for mcoe_asset in mcoe_asset_factory(
freq=freq,
- io_manager_key="pudl_sqlite_io_manager",
)
]
diff --git a/src/pudl/analysis/plant_parts_eia.py b/src/pudl/analysis/plant_parts_eia.py
index 5cabc548a9..d0486a5da2 100644
--- a/src/pudl/analysis/plant_parts_eia.py
+++ b/src/pudl/analysis/plant_parts_eia.py
@@ -367,32 +367,30 @@
@asset(
- name="mega_generators_eia",
compute_kind="Python",
)
-def mega_gens_asset(
- mcoe_generators_yearly: pd.DataFrame, out_eia860__yearly_ownership: pd.DataFrame
+def out_eia__yearly_generators_by_ownership(
+ out_eia__yearly_generators: pd.DataFrame, out_eia860__yearly_ownership: pd.DataFrame
) -> pd.DataFrame:
"""Create mega generators table asset."""
return MakeMegaGenTbl().execute(
- mcoe=mcoe_generators_yearly,
+ mcoe=out_eia__yearly_generators,
own_eia860=out_eia860__yearly_ownership,
)
@asset(
- name="plant_parts_eia",
io_manager_key="pudl_sqlite_io_manager",
compute_kind="Python",
)
-def plant_parts_eia_asset(
- mega_generators_eia: pd.DataFrame,
+def out_eia__plant_parts(
+ out_eia__yearly_generators_by_ownership: pd.DataFrame,
out_eia__yearly_plants: pd.DataFrame,
out_eia__yearly_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Create plant parts list asset."""
return MakePlantParts().execute(
- gens_mega=mega_generators_eia,
+ gens_mega=out_eia__yearly_generators_by_ownership,
plants_eia860=out_eia__yearly_plants,
utils_eia860=out_eia__yearly_utilities,
)
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index d04c7f0c52..2a71c9a70d 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -66,7 +66,9 @@
*load_assets_from_modules(
[pudl.analysis.allocate_gen_fuel], group_name="out_allocate_gen_fuel"
),
- *load_assets_from_modules([pudl.analysis.mcoe], group_name="mcoe"),
+ *load_assets_from_modules(
+ [pudl.analysis.mcoe], group_name="out_derived_gen_attributes"
+ ),
*load_assets_from_modules([pudl.output.ferc1], group_name="out_ferc1"),
*load_assets_from_modules(
[pudl.analysis.service_territory], group_name="out_service_territory_eia861"
@@ -75,7 +77,7 @@
[pudl.analysis.state_demand], group_name="out_state_demand_ferc714"
),
*load_assets_from_modules(
- [pudl.analysis.plant_parts_eia], group_name="plant_parts_eia"
+ [pudl.analysis.plant_parts_eia], group_name="out_plant_parts_eia"
),
)
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index b4b2d09337..1b7d6e9437 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -525,7 +525,7 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "mega_generators_eia": {
+ "out_eia__yearly_generators_by_ownership": {
"description": "A mega table of all EIA generators with ownership integrated.",
"schema": {
"fields": [
@@ -1020,7 +1020,7 @@
"sources": ["eia860", "eia923"],
"etl_group": "outputs",
},
- "out_eia__yearly_generators": {
+ "_out_eia__yearly_generators": {
"description": ("Denormalized table containing all EIA generator attributes."),
"schema": {
"fields": [
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index d79481c2c0..50f0c8e099 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -228,18 +228,15 @@
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
"core_eia923__monthly_boiler_fuel",
- "capacity_factor_by_generator_monthly",
"out_eia923__generation",
"out_eia923__monthly_generation",
- "fuel_cost_by_generator_monthly",
"core_eia923__monthly_fuel_receipts_costs",
"core_eia923__monthly_generation",
"out_eia923__monthly_generation_fuel_by_generator_energy_source",
"out_eia923__monthly_generation_fuel_by_generator",
"core_eia923__monthly_generation_fuel",
- "heat_rate_by_generator_monthly",
- "mcoe_monthly",
- "mcoe_generators_monthly",
+ "_out_eia__monthly_derived_generator_attributes",
+ "out_eia__monthly_generators",
],
},
},
@@ -385,12 +382,8 @@
"core_eia923__monthly_generation",
"core_eia923__monthly_generation_fuel",
"core_eia923__monthly_generation_fuel_nuclear",
- "heat_rate_by_unit_monthly",
- "heat_rate_by_generator_monthly",
- "fuel_cost_by_generator_monthly",
- "capacity_factor_by_generator_monthly",
- "mcoe_monthly",
- "mcoe_generators_monthly",
+ "_out_eia__monthly_derived_generator_attributes",
+ "out_eia__monthly_generators",
],
},
},
@@ -461,7 +454,6 @@
"out_eia923__monthly_generation",
"out_eia923__generation_fuel_combined",
"out_eia923__monthly_generation_fuel_combined",
- "fuel_cost_by_generator_monthly",
"out_eia923__monthly_generation_fuel_by_generator_energy_source",
"out_eia923__monthly_generation_fuel_by_generator",
# Utility IDs in this table are owners, not operators, and we are
@@ -476,8 +468,8 @@
"core_eia861__yearly_energy_efficiency",
"out_ferc714__respondents_with_fips",
"core_eia861__yearly_green_pricing",
- "mcoe_monthly",
- "mcoe_generators_monthly",
+ "_out_eia__monthly_derived_generator_attributes",
+ "out_eia__monthly_generators",
"core_eia861__yearly_mergers",
"core_eia861__yearly_net_metering_customer_fuel_class",
"core_eia861__yearly_net_metering_misc",
diff --git a/src/pudl/metadata/resources/mcoe.py b/src/pudl/metadata/resources/mcoe.py
index 864dd61b3e..34e838dcd2 100644
--- a/src/pudl/metadata/resources/mcoe.py
+++ b/src/pudl/metadata/resources/mcoe.py
@@ -1,4 +1,4 @@
-"""Resource metadata for the MCOE (marginal cost of electricity) tables."""
+"""Resource metadata for the generator table with derived attributes."""
from typing import Any
AGG_FREQS = ["yearly", "monthly"]
@@ -9,226 +9,174 @@
"This table should not be used without filtering values to within "
"logical boundaries."
)
-RESOURCE_METADATA: dict[str, dict[str, Any]] = (
- {
- f"heat_rate_by_unit_{freq}": {
- "description": (
- f"{freq.title()} heat rate estimates by generation unit. Generation "
- "units are identified by ``unit_id_pudl`` and are composed of a set of "
- f"interconnected boilers and generators. {FILTERING_WARNING}"
- ),
- "schema": {
- "fields": [
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- "net_generation_mwh",
- "fuel_consumed_for_electricity_mmbtu",
- "heat_rate_mmbtu_mwh",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
- }
- for freq in AGG_FREQS
+RESOURCE_METADATA: dict[str, dict[str, Any]] = {
+ f"_out_eia__{freq}_derived_generator_attributes": {
+ "description": (
+ f"{freq.title()} generator capacity factor, heat rate, fuel cost per MMBTU and fuel cost "
+ "per MWh. These calculations are based on the allocation of net generation reported on "
+ "the basis of plant, prime mover and energy source to individual generators. Heat rates "
+ "by generator-month are estimated by using allocated estimates for per-generator net "
+ "generation and fuel consumption as well as the :ref:`boiler_fuel_eia923` table, which "
+ "reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
+ "consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
+ "fuel prices are taken from the :ref:`fuel_receipts_costs_eia923` table, which only has "
+ "~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
+ "cost estimates."
+ ),
+ "schema": {
+ "fields": [
+ "plant_id_eia",
+ "generator_id",
+ "unit_id_pudl",
+ "report_date",
+ "capacity_factor",
+ "fuel_cost_from_eiaapi",
+ "fuel_cost_per_mmbtu",
+ "fuel_cost_per_mwh",
+ "heat_rate_mmbtu_mwh",
+ "net_generation_mwh",
+ "total_fuel_cost",
+ "total_mmbtu",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
}
- | {
- f"heat_rate_by_generator_{freq}": {
- "description": (
- f"{freq.title()} heat rate estimates by generator. These are actually "
- "just generation unit level heat rates, which have been broadcast "
- "across all constituent generator IDs, since heat rates really only "
- "have a well-defined meaning in the context of a generation unit."
- f"{FILTERING_WARNING}"
- ),
- "schema": {
- "fields": [
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- "generator_id",
- "heat_rate_mmbtu_mwh",
- "fuel_type_code_pudl",
- "fuel_type_count",
- "prime_mover_code",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
- }
- for freq in AGG_FREQS
+ for freq in AGG_FREQS
+} | {
+ f"out_eia__{freq}_generators": {
+ "description": (
+ f"{freq.title()} all generator attributes including calculated capacity factor, "
+ "heat rate, fuel cost per MMBTU and fuel cost."
+ ),
+ "schema": {
+ "fields": [
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ "unit_id_pudl",
+ "plant_id_pudl",
+ "plant_name_eia",
+ "utility_id_eia",
+ "utility_id_pudl",
+ "utility_name_eia",
+ "technology_description",
+ "energy_source_code_1",
+ "prime_mover_code",
+ "generator_operating_date",
+ "generator_retirement_date",
+ "operational_status",
+ "capacity_mw",
+ "fuel_type_code_pudl",
+ "planned_generator_retirement_date",
+ "capacity_factor",
+ "fuel_cost_from_eiaapi",
+ "fuel_cost_per_mmbtu",
+ "fuel_cost_per_mwh",
+ "heat_rate_mmbtu_mwh",
+ "net_generation_mwh",
+ "total_fuel_cost",
+ "total_mmbtu",
+ "associated_combined_heat_power",
+ "bga_source",
+ "bypass_heat_recovery",
+ "carbon_capture",
+ "city",
+ "cofire_fuels",
+ "county",
+ "current_planned_generator_operating_date",
+ "data_maturity",
+ "deliver_power_transgrid",
+ "distributed_generation",
+ "duct_burners",
+ "energy_source_1_transport_1",
+ "energy_source_1_transport_2",
+ "energy_source_1_transport_3",
+ "energy_source_2_transport_1",
+ "energy_source_2_transport_2",
+ "energy_source_2_transport_3",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_storage_capacity_mwh",
+ "ferc_qualifying_facility",
+ "fluidized_bed_tech",
+ "fuel_type_count",
+ "latitude",
+ "longitude",
+ "minimum_load_mw",
+ "multiple_fuels",
+ "nameplate_power_factor",
+ "net_capacity_mwdc",
+ "operating_switch",
+ "operational_status_code",
+ "original_planned_generator_operating_date",
+ "other_combustion_tech",
+ "other_modifications_date",
+ "other_planned_modifications",
+ "owned_by_non_utility",
+ "ownership_code",
+ "planned_derate_date",
+ "planned_energy_source_code_1",
+ "planned_modifications",
+ "planned_net_summer_capacity_derate_mw",
+ "planned_net_summer_capacity_uprate_mw",
+ "planned_net_winter_capacity_derate_mw",
+ "planned_net_winter_capacity_uprate_mw",
+ "planned_new_capacity_mw",
+ "planned_new_prime_mover_code",
+ "planned_repower_date",
+ "planned_uprate_date",
+ "previously_canceled",
+ "pulverized_coal_tech",
+ "reactive_power_output_mvar",
+ "rto_iso_lmp_node_id",
+ "rto_iso_location_wholesale_reporting_id",
+ "solid_fuel_gasification",
+ "startup_source_code_1",
+ "startup_source_code_2",
+ "startup_source_code_3",
+ "startup_source_code_4",
+ "state",
+ "stoker_tech",
+ "street_address",
+ "subcritical_tech",
+ "summer_capacity_estimate",
+ "summer_capacity_mw",
+ "summer_estimated_capability_mw",
+ "supercritical_tech",
+ "switch_oil_gas",
+ "syncronized_transmission_grid",
+ "time_cold_shutdown_full_load_code",
+ "timezone",
+ "topping_bottoming_code",
+ "turbines_inverters_hydrokinetics",
+ "turbines_num",
+ "ultrasupercritical_tech",
+ "uprate_derate_completed_date",
+ "uprate_derate_during_year",
+ "winter_capacity_estimate",
+ "winter_capacity_mw",
+ "winter_estimated_capability_mw",
+ "zip_code",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
}
- | {
- f"capacity_factor_by_generator_{freq}": {
- "description": (
- f"{freq.title()} estimates of generator capacity factor. Capacity "
- "factor is calculated based on reported generator capacity and the "
- "allocated net generation reported in the generation and generation "
- f"fuel tables. {FILTERING_WARNING}"
- ),
- "schema": {
- "fields": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- "net_generation_mwh",
- "capacity_mw",
- "capacity_factor",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
- }
- for freq in AGG_FREQS
- }
- | {
- f"fuel_cost_by_generator_{freq}": {
- "description": (
- f"{freq.title()} estimate of per-generator fuel costs both per MMBTU "
- "and per MWh. These calculations are based on the allocation of net "
- "generation and fuel consumption as well as plant-level delivered fuel prices "
- "reported in the fuel receipts and cost table. The intermediary heat rate "
- "calculation depends on having the unit ID filled in, which means fuel cost "
- "coverage is low. The fuel costs are also currently aggregated to coarse fuel "
- "categories rather than using the more detailed energy source codes."
- f"{FILTERING_WARNING}"
- ),
- "schema": {
- "fields": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- "unit_id_pudl",
- "plant_name_eia",
- "plant_id_pudl",
- "utility_id_eia",
- "utility_name_eia",
- "utility_id_pudl",
- "fuel_type_count",
- "fuel_type_code_pudl",
- "fuel_cost_from_eiaapi",
- "fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh",
- "fuel_cost_per_mwh",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
- }
- for freq in AGG_FREQS
- }
- | {
- f"mcoe_{freq}": {
- "description": (
- f"{freq.title()} generator capacity factor, heat rate, fuel cost per MMBTU and fuel cost "
- "per MWh. These calculations are based on the allocation of net generation reported on "
- "the basis of plant, prime mover and energy source to individual generators. Heat rates "
- "by generator-month are estimated by using allocated estimates for per-generator net "
- "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
- "reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
- "consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
- "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
- "~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
- "cost estimates."
- ),
- "schema": {
- "fields": [
- "plant_id_eia",
- "generator_id",
- "unit_id_pudl",
- "report_date",
- "capacity_factor",
- "fuel_cost_from_eiaapi",
- "fuel_cost_per_mmbtu",
- "fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
- "net_generation_mwh",
- "total_fuel_cost",
- "total_mmbtu",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
- }
- for freq in AGG_FREQS
- }
- | {
- f"mcoe_generators_{freq}": {
- "description": (
- f"The marginal cost of energy table with {freq.title()} generator capacity factor, "
- "heat rate, fuel cost per MMBTU and fuel cost, but with additional potentially "
- "useful generator attributes merged on."
- "See the description in the MCOE table for more explanation of these calculations."
- ),
- "schema": {
- "fields": [
- "plant_id_eia",
- "generator_id",
- "report_date",
- "unit_id_pudl",
- "plant_id_pudl",
- "plant_name_eia",
- "utility_id_eia",
- "utility_id_pudl",
- "utility_name_eia",
- "technology_description",
- "energy_source_code_1",
- "prime_mover_code",
- "generator_operating_date",
- "generator_retirement_date",
- "operational_status",
- "capacity_mw",
- "fuel_type_code_pudl",
- "planned_generator_retirement_date",
- "capacity_factor",
- "fuel_cost_from_eiaapi",
- "fuel_cost_per_mmbtu",
- "fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
- "net_generation_mwh",
- "total_fuel_cost",
- "total_mmbtu",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
- }
- for freq in AGG_FREQS
- }
-)
+ for freq in AGG_FREQS
+}
diff --git a/src/pudl/output/eia.py b/src/pudl/output/eia.py
index 91a58ec794..8fac02235a 100644
--- a/src/pudl/output/eia.py
+++ b/src/pudl/output/eia.py
@@ -114,7 +114,7 @@ def out_eia__yearly_plants(
},
compute_kind="Python",
)
-def out_eia__yearly_generators(
+def _out_eia__yearly_generators(
context,
core_eia860__scd_generators: pd.DataFrame,
core_eia__entity_generators: pd.DataFrame,
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 0104827e88..9fb24eed65 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -163,7 +163,7 @@ def _register_output_methods(self: Self):
"out_eia__yearly_plants": "plants_eia860",
"out_eia__yearly_utilities": "utils_eia860",
"out_eia__yearly_boilers": "boil_eia860",
- "out_eia__yearly_generators": "gens_eia860",
+ "_out_eia__yearly_generators": "gens_eia860",
"_out_eia__plants_utilities": "pu_eia860",
# eia860 (denormalized, data primarily from EIA-860)
"out_eia860__yearly_ownership": "own_eia860",
@@ -219,8 +219,8 @@ def _register_output_methods(self: Self):
# state demand
"out_ferc714__hourly_predicted_state_demand": "predicted_state_hourly_demand",
# plant parts
- "mega_generators_eia": "gens_mega_eia",
- "plant_parts_eia": "plant_parts_eia",
+ "out_eia__yearly_generators_by_ownership": "gens_by_own_eia",
+ "out_eia__plant_parts": "plant_parts_eia",
}
table_method_map_any_agg = {
@@ -230,8 +230,8 @@ def _register_output_methods(self: Self):
"heat_rate_by_generator_AGG": "hr_by_gen",
"capacity_factor_by_generator_AGG": "capacity_factor",
"fuel_cost_by_generator_AGG": "fuel_cost",
- "mcoe_AGG": "mcoe",
- "mcoe_generators_AGG": "mcoe_generators",
+ "_out_eia__AGG_derived_generator_attributes": "mcoe",
+ "out_eia__AGG_generators": "mcoe_generators",
}
table_method_map_yearly_only = {
From f2314524613d26ca6ee0eb8ced12e7c60a3a547a Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 29 Sep 2023 11:53:49 +0200
Subject: [PATCH 35/70] Fix small ppl migration issue
---
...2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py | 655 ++++++++++++++++++
.../versions/56ba0ae0e12b_rename_ppl_asset.py | 131 ++++
src/pudl/analysis/plant_parts_eia.py | 2 +-
src/pudl/metadata/resources/eia.py | 2 +-
4 files changed, 788 insertions(+), 2 deletions(-)
create mode 100644 migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py
create mode 100644 migrations/versions/56ba0ae0e12b_rename_ppl_asset.py
diff --git a/migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py b/migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py
new file mode 100644
index 0000000000..ef69aa3638
--- /dev/null
+++ b/migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py
@@ -0,0 +1,655 @@
+"""Rename mcoe and ppl assets
+
+Revision ID: 2c1e76ddb4dc
+Revises: 83d32937c386
+Create Date: 2023-09-29 11:13:50.149079
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '2c1e76ddb4dc'
+down_revision = '83d32937c386'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('_out_eia__monthly_derived_generator_attributes',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_derived_generator_attributes'))
+ )
+ op.create_table('out_eia__monthly_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__monthly_generators'))
+ )
+ op.create_table('_out_eia__yearly_derived_generator_attributes',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_derived_generator_attributes'))
+ )
+ op.create_table('_out_eia__yearly_generators',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk__out_eia__yearly_generators'))
+ )
+ op.create_table('out_eia__yearly_generators_by_ownership',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.drop_table('mega_generators_eia')
+ op.drop_table('mcoe_generators_monthly')
+ op.drop_table('capacity_factor_by_generator_monthly')
+ op.drop_table('fuel_cost_by_generator_yearly')
+ op.drop_table('heat_rate_by_unit_monthly')
+ op.drop_table('mcoe_monthly')
+ op.drop_table('heat_rate_by_generator_monthly')
+ op.drop_table('heat_rate_by_unit_yearly')
+ op.drop_table('mcoe_generators_yearly')
+ op.drop_table('fuel_cost_by_generator_monthly')
+ op.drop_table('mcoe_yearly')
+ op.drop_table('heat_rate_by_generator_yearly')
+ op.drop_table('capacity_factor_by_generator_yearly')
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'))
+ batch_op.add_column(sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'))
+ batch_op.add_column(sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'))
+ batch_op.add_column(sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'))
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.add_column(sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'))
+ batch_op.add_column(sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'))
+ batch_op.add_column(sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'))
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.drop_column('total_mmbtu')
+ batch_op.drop_column('total_fuel_cost')
+ batch_op.drop_column('net_generation_mwh')
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+ batch_op.drop_column('fuel_cost_per_mwh')
+ batch_op.drop_column('fuel_cost_per_mmbtu')
+ batch_op.drop_column('fuel_cost_from_eiaapi')
+ batch_op.drop_column('capacity_factor')
+
+ op.create_table('capacity_factor_by_generator_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_capacity_factor_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_capacity_factor_by_generator_yearly')
+ )
+ op.create_table('heat_rate_by_generator_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_heat_rate_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_heat_rate_by_generator_yearly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_heat_rate_by_generator_yearly')
+ )
+ op.create_table('mcoe_yearly',
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_mcoe_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_yearly')
+ )
+ op.create_table('fuel_cost_by_generator_monthly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_fuel_cost_by_generator_monthly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_fuel_cost_by_generator_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_fuel_cost_by_generator_monthly')
+ )
+ op.create_table('mcoe_generators_yearly',
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('technology_description', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_mcoe_generators_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mcoe_generators_yearly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_mcoe_generators_yearly_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mcoe_generators_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_generators_yearly')
+ )
+ op.create_table('heat_rate_by_unit_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=False),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_heat_rate_by_unit_yearly_plant_id_eia_core_eia860__scd_plants'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name='pk_heat_rate_by_unit_yearly')
+ )
+ op.create_table('heat_rate_by_generator_monthly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_heat_rate_by_generator_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_heat_rate_by_generator_monthly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_heat_rate_by_generator_monthly')
+ )
+ op.create_table('mcoe_monthly',
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_mcoe_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_monthly')
+ )
+ op.create_table('heat_rate_by_unit_monthly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=False),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_heat_rate_by_unit_monthly_plant_id_eia_core_eia__entity_plants'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name='pk_heat_rate_by_unit_monthly')
+ )
+ op.create_table('fuel_cost_by_generator_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_fuel_cost_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_fuel_cost_by_generator_yearly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_fuel_cost_by_generator_yearly_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_fuel_cost_by_generator_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_fuel_cost_by_generator_yearly')
+ )
+ op.create_table('capacity_factor_by_generator_monthly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_capacity_factor_by_generator_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_capacity_factor_by_generator_monthly')
+ )
+ op.create_table('mcoe_generators_monthly',
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('technology_description', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_mcoe_generators_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mcoe_generators_monthly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_mcoe_generators_monthly_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mcoe_generators_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_generators_monthly')
+ )
+ op.create_table('mega_generators_eia',
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('technology_description', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('ferc_acct_name', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('generator_operating_year', sa.INTEGER(), nullable=True),
+ sa.Column('operational_status_pudl', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('capacity_eoy_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
+ sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')
+ )
+ op.drop_table('out_eia__yearly_generators_by_ownership')
+ op.drop_table('_out_eia__yearly_generators')
+ op.drop_table('_out_eia__yearly_derived_generator_attributes')
+ op.drop_table('out_eia__monthly_generators')
+ op.drop_table('_out_eia__monthly_derived_generator_attributes')
+ # ### end Alembic commands ###
diff --git a/migrations/versions/56ba0ae0e12b_rename_ppl_asset.py b/migrations/versions/56ba0ae0e12b_rename_ppl_asset.py
new file mode 100644
index 0000000000..a85d7dec5a
--- /dev/null
+++ b/migrations/versions/56ba0ae0e12b_rename_ppl_asset.py
@@ -0,0 +1,131 @@
+"""Rename ppl asset
+
+Revision ID: 56ba0ae0e12b
+Revises: 2c1e76ddb4dc
+Create Date: 2023-09-29 11:43:25.225220
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '56ba0ae0e12b'
+down_revision = '2c1e76ddb4dc'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia__plant_parts',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_unit', 'plant_prime_fuel', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_unit', 'plant_prime_fuel', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__plant_parts_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__plant_parts_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__plant_parts'))
+ )
+ op.drop_table('plant_parts_eia')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('plant_parts_eia',
+ sa.Column('record_id_eia', sa.TEXT(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_part', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=True),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.VARCHAR(length=3), nullable=True),
+ sa.Column('technology_description', sa.VARCHAR(length=43), nullable=True),
+ sa.Column('ferc_acct_name', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('true_gran', sa.BOOLEAN(), nullable=True),
+ sa.Column('appro_part_label', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('appro_record_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('ferc1_generator_agg_id', sa.INTEGER(), nullable=True),
+ sa.Column('capacity_eoy_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('generator_operating_year', sa.INTEGER(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('operational_status_pudl', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=True),
+ sa.Column('ownership_dupe', sa.BOOLEAN(), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_name_ppe', sa.TEXT(), nullable=True),
+ sa.Column('plant_part_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('record_count', sa.INTEGER(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_report_year', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id_eia', name='pk_plant_parts_eia')
+ )
+ op.drop_table('out_eia__plant_parts')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/plant_parts_eia.py b/src/pudl/analysis/plant_parts_eia.py
index d0486a5da2..819157eb76 100644
--- a/src/pudl/analysis/plant_parts_eia.py
+++ b/src/pudl/analysis/plant_parts_eia.py
@@ -658,7 +658,7 @@ def execute(self, gens_mega, plants_eia860, utils_eia860):
)
.pipe(pudl.helpers.organize_cols, FIRST_COLS)
.pipe(self._clean_plant_parts)
- .pipe(Resource.from_id("plant_parts_eia").format_df)
+ .pipe(Resource.from_id("out_eia__plant_parts").format_df)
)
return self.plant_parts_eia
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 1b7d6e9437..d4bd30e9b1 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -623,7 +623,7 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "plant_parts_eia": {
+ "out_eia__plant_parts": {
"description": "Output table with the aggregation of all EIA plant parts. For use with matching to FERC 1.",
"schema": {
"fields": [
From 7b7dba187dee0a6e8636c6412b0244661afecda7 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 2 Oct 2023 12:37:18 +0200
Subject: [PATCH 36/70] Format and sort intermediate resource name cross refs
in data dictionary
---
docs/templates/package.rst.jinja | 4 ++--
src/pudl/metadata/classes.py | 34 ++++++++++++++++++++++++++---
src/pudl/metadata/helpers.py | 26 ++++++++++++++++++++++
src/pudl/metadata/resources/mcoe.py | 4 ++--
test/unit/helpers_test.py | 14 ++++++++++++
5 files changed, 75 insertions(+), 7 deletions(-)
diff --git a/docs/templates/package.rst.jinja b/docs/templates/package.rst.jinja
index 48bd4854a9..dbbcf02cbf 100644
--- a/docs/templates/package.rst.jinja
+++ b/docs/templates/package.rst.jinja
@@ -6,8 +6,8 @@ The following data tables have been cleaned and transformed by our ETL process.
Please note that tables beginning with "denorm" are temporary tables whose names and
metadata will shortly change, as we migrate new tables into our database.
-{% for resource in package.resources %}
-.. _{{ resource.name.lstrip("_") }}:
+{% for resource in package.get_sorted_resources() %}
+.. _{{ resource.name|format_resource_name_cross_ref }}:
{% include 'resource.rst.jinja' %}
{% endfor %}
diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py
index ca4b46c863..c1d327061a 100644
--- a/src/pudl/metadata/classes.py
+++ b/src/pudl/metadata/classes.py
@@ -34,6 +34,7 @@
FIELD_METADATA_BY_RESOURCE,
)
from pudl.metadata.helpers import (
+ JINJA_FILTERS,
expand_periodic_column_names,
format_errors,
groupby_aggregate,
@@ -133,10 +134,13 @@ def _get_jinja_environment(template_dir: DirectoryPath = None):
path = template_dir / "templates"
else:
path = Path(__file__).parent.resolve() / "templates"
- return jinja2.Environment(
+ environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(path),
autoescape=True,
)
+ for func_name, func in JINJA_FILTERS.items():
+ environment.filters[func_name] = func
+ return environment
# ---- Base ---- #
@@ -1877,6 +1881,22 @@ def to_sql(
)
return metadata
+ def get_sorted_resources(self) -> StrictList(Resource):
+ """Get a list of sorted Resources.
+
+ Currently Resources are listed in reverse alphabetical order based
+ on their name which results in the following order: (out_*, core_*, _*).
+ This is promotes out_ tables to users and pushes intermediate tables
+ to the bottom of the docs.
+
+ In the future we might want to have more fine grain control over how
+ Resources are sorted.
+
+ Returns:
+ A sorted list of resources.
+ """
+ return sorted(self.resources, key=lambda r: r.name, reverse=True)
+
class CodeMetadata(Base):
"""A list of Encoders for standardizing and documenting categorical codes.
@@ -1920,7 +1940,7 @@ class DatasetteMetadata(Base):
"""
data_sources: list[DataSource]
- resources: list[Resource] = Package.from_resource_ids().resources
+ resources: list[Resource] = Package.from_resource_ids().get_sorted_resources()
xbrl_resources: dict[str, list[Resource]] = {}
label_columns: dict[str, str] = {
"core_eia__entity_plants": "plant_name_eia",
@@ -2000,9 +2020,17 @@ def from_data_source_ids(
xbrl_resources=xbrl_resources,
)
- def to_yaml(self, path: str = None) -> None:
+ def to_yaml(
+ self, path: str = None, exclude_intermediate_resources: bool = False
+ ) -> None:
"""Output database, table, and column metadata to YAML file."""
template = _get_jinja_environment().get_template("datasette-metadata.yml.jinja")
+ if exclude_intermediate_resources:
+ [
+ resource
+ for resource in self.resources
+ if not resource.name.startswith("_")
+ ]
rendered = template.render(
license=LICENSES["cc-by-4.0"],
data_sources=self.data_sources,
diff --git a/src/pudl/metadata/helpers.py b/src/pudl/metadata/helpers.py
index 790a07a11c..31ecfcef86 100644
--- a/src/pudl/metadata/helpers.py
+++ b/src/pudl/metadata/helpers.py
@@ -1,4 +1,5 @@
"""Functions for manipulating metadata constants."""
+import re
from collections import defaultdict
from collections.abc import Callable, Iterable
from typing import Any
@@ -590,3 +591,28 @@ def groupby_aggregate( # noqa: C901
# Enforce original data types, which nulls and errors may have changed
result = result.astype(dtypes, copy=False)
return result, reports
+
+
+# --- Jinja Filters --- #
+
+
+def _format_resource_name_cross_ref(resource_name: str) -> str:
+ """Format resource name as a cross_ref for sphinx docs.
+
+ Sphinx throws an error when creating a cross ref for
+ a resource that has a preceeding underscore. It is
+ also possible for resources to have identical names
+ when the preceeding underscore is removed. This funcntion
+ adds a preceeding 'i' to cross references for resources
+ with preceeding underscores.
+
+ Args:
+ resource_name: the name of the resource.
+
+ Returns:
+ The name of the resource formatted for a sphinx cross ref.
+ """
+ return re.sub(r"^_.*", lambda x: "i" + x.group(0), resource_name)
+
+
+JINJA_FILTERS = {"format_resource_name_cross_ref": _format_resource_name_cross_ref}
diff --git a/src/pudl/metadata/resources/mcoe.py b/src/pudl/metadata/resources/mcoe.py
index 34e838dcd2..c2b070216f 100644
--- a/src/pudl/metadata/resources/mcoe.py
+++ b/src/pudl/metadata/resources/mcoe.py
@@ -16,10 +16,10 @@
"per MWh. These calculations are based on the allocation of net generation reported on "
"the basis of plant, prime mover and energy source to individual generators. Heat rates "
"by generator-month are estimated by using allocated estimates for per-generator net "
- "generation and fuel consumption as well as the :ref:`boiler_fuel_eia923` table, which "
+ "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
"reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
"consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
- "fuel prices are taken from the :ref:`fuel_receipts_costs_eia923` table, which only has "
+ "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
"~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
"cost estimates."
),
diff --git a/test/unit/helpers_test.py b/test/unit/helpers_test.py
index 85ba67905a..a7a867483d 100644
--- a/test/unit/helpers_test.py
+++ b/test/unit/helpers_test.py
@@ -20,6 +20,7 @@
remove_leading_zeros_from_numeric_strings,
zero_pad_numeric_string,
)
+from pudl.metadata.helpers import _format_resource_name_cross_ref
from pudl.output.sql.helpers import sql_asset_factory
MONTHLY_GEN_FUEL = pd.DataFrame(
@@ -666,3 +667,16 @@ def test_convert_col_to_bool(df):
.isin([False, np.nan])
.all()
)
+
+
+@pytest.mark.parametrize(
+ "test_input,expected",
+ [
+ ("out_eia__yearly_generators", "out_eia__yearly_generators"),
+ ("_out_eia__yearly_generators", "i_out_eia__yearly_generators"),
+ ("__out_eia__yearly_generators", "i__out_eia__yearly_generators"),
+ ("", ""),
+ ],
+)
+def test_format_resource_name_cross_ref(test_input, expected):
+ assert _format_resource_name_cross_ref(test_input) == expected
From 50cea89a5488944a2404586caeb45753fcd72acf Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 2 Oct 2023 18:32:41 +0200
Subject: [PATCH 37/70] Add upstream mcoe assets back to metadata
---
.../versions/56ba0ae0e12b_rename_ppl_asset.py | 131 -----
...6d425818439_rename_mcoe_and_ppl_assets.py} | 394 ++++++++++-----
...4e1_rename_fuel_cost_by_generator_asset.py | 117 +++++
src/pudl/analysis/mcoe.py | 3 +
src/pudl/metadata/classes.py | 6 +-
src/pudl/metadata/resources/eia860.py | 8 +
src/pudl/metadata/resources/mcoe.py | 472 +++++++++++-------
src/pudl/output/pudltabl.py | 6 +-
8 files changed, 706 insertions(+), 431 deletions(-)
delete mode 100644 migrations/versions/56ba0ae0e12b_rename_ppl_asset.py
rename migrations/versions/{2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py => 56d425818439_rename_mcoe_and_ppl_assets.py} (81%)
create mode 100644 migrations/versions/6c66da98c4e1_rename_fuel_cost_by_generator_asset.py
diff --git a/migrations/versions/56ba0ae0e12b_rename_ppl_asset.py b/migrations/versions/56ba0ae0e12b_rename_ppl_asset.py
deleted file mode 100644
index a85d7dec5a..0000000000
--- a/migrations/versions/56ba0ae0e12b_rename_ppl_asset.py
+++ /dev/null
@@ -1,131 +0,0 @@
-"""Rename ppl asset
-
-Revision ID: 56ba0ae0e12b
-Revises: 2c1e76ddb4dc
-Create Date: 2023-09-29 11:43:25.225220
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '56ba0ae0e12b'
-down_revision = '2c1e76ddb4dc'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('out_eia__plant_parts',
- sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_unit', 'plant_prime_fuel', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_unit', 'plant_prime_fuel', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__plant_parts_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__plant_parts_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__plant_parts'))
- )
- op.drop_table('plant_parts_eia')
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table('plant_parts_eia',
- sa.Column('record_id_eia', sa.TEXT(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('report_date', sa.DATE(), nullable=True),
- sa.Column('plant_part', sa.VARCHAR(length=20), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=True),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_1', sa.VARCHAR(length=3), nullable=True),
- sa.Column('technology_description', sa.VARCHAR(length=43), nullable=True),
- sa.Column('ferc_acct_name', sa.VARCHAR(length=9), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('true_gran', sa.BOOLEAN(), nullable=True),
- sa.Column('appro_part_label', sa.VARCHAR(length=20), nullable=True),
- sa.Column('appro_record_id_eia', sa.TEXT(), nullable=True),
- sa.Column('ferc1_generator_agg_id', sa.INTEGER(), nullable=True),
- sa.Column('capacity_eoy_mw', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('construction_year', sa.INTEGER(), nullable=True),
- sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
- sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
- sa.Column('installation_year', sa.INTEGER(), nullable=True),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('generator_operating_year', sa.INTEGER(), nullable=True),
- sa.Column('operational_status', sa.TEXT(), nullable=True),
- sa.Column('operational_status_pudl', sa.VARCHAR(length=9), nullable=True),
- sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=True),
- sa.Column('ownership_dupe', sa.BOOLEAN(), nullable=True),
- sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('plant_name_ppe', sa.TEXT(), nullable=True),
- sa.Column('plant_part_id_eia', sa.TEXT(), nullable=True),
- sa.Column('record_count', sa.INTEGER(), nullable=True),
- sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
- sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('report_year', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_report_year', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('record_id_eia', name='pk_plant_parts_eia')
- )
- op.drop_table('out_eia__plant_parts')
- # ### end Alembic commands ###
diff --git a/migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py b/migrations/versions/56d425818439_rename_mcoe_and_ppl_assets.py
similarity index 81%
rename from migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py
rename to migrations/versions/56d425818439_rename_mcoe_and_ppl_assets.py
index ef69aa3638..535d6a4b81 100644
--- a/migrations/versions/2c1e76ddb4dc_rename_mcoe_and_ppl_assets.py
+++ b/migrations/versions/56d425818439_rename_mcoe_and_ppl_assets.py
@@ -1,15 +1,15 @@
"""Rename mcoe and ppl assets
-Revision ID: 2c1e76ddb4dc
+Revision ID: 56d425818439
Revises: 83d32937c386
-Create Date: 2023-09-29 11:13:50.149079
+Create Date: 2023-10-02 17:38:36.582394
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
-revision = '2c1e76ddb4dc'
+revision = '56d425818439'
down_revision = '83d32937c386'
branch_labels = None
depends_on = None
@@ -17,6 +17,26 @@
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('_out_eia__monthly_heat_rate_by_unit',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__monthly_heat_rate_by_unit'))
+ )
+ op.create_table('_out_eia__monthly_capacity_factor_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_capacity_factor_by_generator'))
+ )
op.create_table('_out_eia__monthly_derived_generator_attributes',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
@@ -33,6 +53,19 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_derived_generator_attributes'))
)
+ op.create_table('_out_eia__monthly_heat_rate_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_heat_rate_by_generator'))
+ )
op.create_table('out_eia__monthly_generators',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
@@ -171,6 +204,26 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__monthly_generators'))
)
+ op.create_table('_out_eia__yearly_heat_rate_by_unit',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__yearly_heat_rate_by_unit'))
+ )
+ op.create_table('_out_eia__yearly_capacity_factor_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_capacity_factor_by_generator'))
+ )
op.create_table('_out_eia__yearly_derived_generator_attributes',
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
@@ -317,6 +370,71 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk__out_eia__yearly_generators'))
)
+ op.create_table('_out_eia__yearly_heat_rate_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_heat_rate_by_generator'))
+ )
+ op.create_table('out_eia__plant_parts',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant', 'plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_technology', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_prime_mover', 'plant_gen'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant', 'plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_technology', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_prime_mover', 'plant_gen'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__plant_parts_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__plant_parts_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__plant_parts'))
+ )
op.create_table('out_eia__yearly_generators_by_ownership',
sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
@@ -357,19 +475,24 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities')),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl'))
)
- op.drop_table('mega_generators_eia')
- op.drop_table('mcoe_generators_monthly')
+ op.drop_table('heat_rate_by_generator_yearly')
op.drop_table('capacity_factor_by_generator_monthly')
- op.drop_table('fuel_cost_by_generator_yearly')
- op.drop_table('heat_rate_by_unit_monthly')
+ op.drop_table('mega_generators_eia')
+ op.drop_table('plant_parts_eia')
op.drop_table('mcoe_monthly')
+ op.drop_table('mcoe_generators_yearly')
op.drop_table('heat_rate_by_generator_monthly')
+ op.drop_table('heat_rate_by_unit_monthly')
+ op.drop_table('mcoe_generators_monthly')
op.drop_table('heat_rate_by_unit_yearly')
- op.drop_table('mcoe_generators_yearly')
- op.drop_table('fuel_cost_by_generator_monthly')
- op.drop_table('mcoe_yearly')
- op.drop_table('heat_rate_by_generator_yearly')
op.drop_table('capacity_factor_by_generator_yearly')
+ op.drop_table('mcoe_yearly')
+ with op.batch_alter_table('fuel_cost_by_generator_monthly', schema=None) as batch_op:
+ batch_op.drop_constraint('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators', type_='foreignkey')
+ batch_op.drop_constraint('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities', type_='foreignkey')
+ batch_op.create_foreign_key(batch_op.f('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia860__scd_generators'), 'core_eia860__scd_generators', ['plant_id_eia', 'generator_id', 'report_date'], ['plant_id_eia', 'generator_id', 'report_date'])
+ batch_op.create_foreign_key(batch_op.f('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia860__scd_utilities'), 'core_eia860__scd_utilities', ['utility_id_eia', 'report_date'], ['utility_id_eia', 'report_date'])
+
with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
batch_op.add_column(sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'))
batch_op.add_column(sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'))
@@ -395,29 +518,12 @@ def downgrade() -> None:
batch_op.drop_column('fuel_cost_from_eiaapi')
batch_op.drop_column('capacity_factor')
- op.create_table('capacity_factor_by_generator_yearly',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_capacity_factor_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_capacity_factor_by_generator_yearly')
- )
- op.create_table('heat_rate_by_generator_yearly',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
- sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_heat_rate_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_heat_rate_by_generator_yearly_prime_mover_code_core_eia__codes_prime_movers'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_heat_rate_by_generator_yearly')
- )
+ with op.batch_alter_table('fuel_cost_by_generator_monthly', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia860__scd_utilities'), type_='foreignkey')
+ batch_op.drop_constraint(batch_op.f('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia860__scd_generators'), type_='foreignkey')
+ batch_op.create_foreign_key('fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities', 'core_eia__entity_utilities', ['utility_id_eia'], ['utility_id_eia'])
+ batch_op.create_foreign_key('fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators', 'core_eia__entity_generators', ['plant_id_eia', 'generator_id'], ['plant_id_eia', 'generator_id'])
+
op.create_table('mcoe_yearly',
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('generator_id', sa.TEXT(), nullable=False),
@@ -434,29 +540,27 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_mcoe_yearly_plant_id_eia_core_eia860__scd_generators'),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_yearly')
)
- op.create_table('fuel_cost_by_generator_monthly',
+ op.create_table('capacity_factor_by_generator_yearly',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_capacity_factor_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_capacity_factor_by_generator_yearly')
+ )
+ op.create_table('heat_rate_by_unit_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=False),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_fuel_cost_by_generator_monthly_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_fuel_cost_by_generator_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_fuel_cost_by_generator_monthly')
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_heat_rate_by_unit_yearly_plant_id_eia_core_eia860__scd_plants'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name='pk_heat_rate_by_unit_yearly')
)
- op.create_table('mcoe_generators_yearly',
+ op.create_table('mcoe_generators_monthly',
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('generator_id', sa.TEXT(), nullable=False),
sa.Column('report_date', sa.DATE(), nullable=False),
@@ -483,23 +587,23 @@ def downgrade() -> None:
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_mcoe_generators_yearly_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mcoe_generators_yearly_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_mcoe_generators_yearly_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mcoe_generators_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_generators_yearly')
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_mcoe_generators_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mcoe_generators_monthly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_mcoe_generators_monthly_utility_id_eia_core_eia__entity_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mcoe_generators_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_generators_monthly')
)
- op.create_table('heat_rate_by_unit_yearly',
+ op.create_table('heat_rate_by_unit_monthly',
sa.Column('report_date', sa.DATE(), nullable=False),
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('unit_id_pudl', sa.INTEGER(), nullable=False),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name='fk_heat_rate_by_unit_yearly_plant_id_eia_core_eia860__scd_plants'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name='pk_heat_rate_by_unit_yearly')
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_heat_rate_by_unit_monthly_plant_id_eia_core_eia__entity_plants'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name='pk_heat_rate_by_unit_monthly')
)
op.create_table('heat_rate_by_generator_monthly',
sa.Column('report_date', sa.DATE(), nullable=False),
@@ -514,11 +618,25 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_heat_rate_by_generator_monthly_prime_mover_code_core_eia__codes_prime_movers'),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_heat_rate_by_generator_monthly')
)
- op.create_table('mcoe_monthly',
+ op.create_table('mcoe_generators_yearly',
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('technology_description', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('generator_operating_date', sa.DATE(), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
@@ -527,85 +645,81 @@ def downgrade() -> None:
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_mcoe_monthly_plant_id_eia_core_eia__entity_generators'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_monthly')
- )
- op.create_table('heat_rate_by_unit_monthly',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('unit_id_pudl', sa.INTEGER(), nullable=False),
- sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name='fk_heat_rate_by_unit_monthly_plant_id_eia_core_eia__entity_plants'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name='pk_heat_rate_by_unit_monthly')
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mcoe_generators_yearly_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_mcoe_generators_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mcoe_generators_yearly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mcoe_generators_yearly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_mcoe_generators_yearly_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mcoe_generators_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_generators_yearly')
)
- op.create_table('fuel_cost_by_generator_yearly',
- sa.Column('report_date', sa.DATE(), nullable=False),
+ op.create_table('mcoe_monthly',
sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
sa.Column('generator_id', sa.TEXT(), nullable=False),
sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
- sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_fuel_cost_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_fuel_cost_by_generator_yearly_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_fuel_cost_by_generator_yearly_utility_id_eia_core_eia860__scd_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_fuel_cost_by_generator_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_fuel_cost_by_generator_yearly')
- )
- op.create_table('capacity_factor_by_generator_monthly',
- sa.Column('report_date', sa.DATE(), nullable=False),
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_capacity_factor_by_generator_monthly_plant_id_eia_core_eia__entity_generators'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_capacity_factor_by_generator_monthly')
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_mcoe_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_monthly')
)
- op.create_table('mcoe_generators_monthly',
- sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
- sa.Column('generator_id', sa.TEXT(), nullable=False),
- sa.Column('report_date', sa.DATE(), nullable=False),
+ op.create_table('plant_parts_eia',
+ sa.Column('record_id_eia', sa.TEXT(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_part', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=True),
sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
- sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
- sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
- sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
- sa.Column('technology_description', sa.TEXT(), nullable=True),
- sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
- sa.Column('generator_operating_date', sa.DATE(), nullable=True),
- sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
- sa.Column('operational_status', sa.TEXT(), nullable=True),
- sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
- sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
- sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('energy_source_code_1', sa.VARCHAR(length=3), nullable=True),
+ sa.Column('technology_description', sa.VARCHAR(length=43), nullable=True),
+ sa.Column('ferc_acct_name', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('true_gran', sa.BOOLEAN(), nullable=True),
+ sa.Column('appro_part_label', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('appro_record_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('ferc1_generator_agg_id', sa.INTEGER(), nullable=True),
+ sa.Column('capacity_eoy_mw', sa.FLOAT(), nullable=True),
sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
- sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('generator_operating_year', sa.INTEGER(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('operational_status_pudl', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=True),
+ sa.Column('ownership_dupe', sa.BOOLEAN(), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_name_ppe', sa.TEXT(), nullable=True),
+ sa.Column('plant_part_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('record_count', sa.INTEGER(), nullable=True),
sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_mcoe_generators_monthly_energy_source_code_1_core_eia__codes_energy_sources'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_mcoe_generators_monthly_plant_id_eia_core_eia__entity_generators'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_mcoe_generators_monthly_plant_id_pudl_core_pudl__entity_plants_pudl'),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_mcoe_generators_monthly_prime_mover_code_core_eia__codes_prime_movers'),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name='fk_mcoe_generators_monthly_utility_id_eia_core_eia__entity_utilities'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mcoe_generators_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_mcoe_generators_monthly')
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_report_year', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id_eia', name='pk_plant_parts_eia')
)
op.create_table('mega_generators_eia',
sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
@@ -647,9 +761,39 @@ def downgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities'),
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')
)
+ op.create_table('capacity_factor_by_generator_monthly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name='fk_capacity_factor_by_generator_monthly_plant_id_eia_core_eia__entity_generators'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_capacity_factor_by_generator_monthly')
+ )
+ op.create_table('heat_rate_by_generator_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_heat_rate_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_heat_rate_by_generator_yearly_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_heat_rate_by_generator_yearly')
+ )
op.drop_table('out_eia__yearly_generators_by_ownership')
+ op.drop_table('out_eia__plant_parts')
+ op.drop_table('_out_eia__yearly_heat_rate_by_generator')
op.drop_table('_out_eia__yearly_generators')
op.drop_table('_out_eia__yearly_derived_generator_attributes')
+ op.drop_table('_out_eia__yearly_capacity_factor_by_generator')
+ op.drop_table('_out_eia__yearly_heat_rate_by_unit')
op.drop_table('out_eia__monthly_generators')
+ op.drop_table('_out_eia__monthly_heat_rate_by_generator')
op.drop_table('_out_eia__monthly_derived_generator_attributes')
+ op.drop_table('_out_eia__monthly_capacity_factor_by_generator')
+ op.drop_table('_out_eia__monthly_heat_rate_by_unit')
# ### end Alembic commands ###
diff --git a/migrations/versions/6c66da98c4e1_rename_fuel_cost_by_generator_asset.py b/migrations/versions/6c66da98c4e1_rename_fuel_cost_by_generator_asset.py
new file mode 100644
index 0000000000..2236626ed6
--- /dev/null
+++ b/migrations/versions/6c66da98c4e1_rename_fuel_cost_by_generator_asset.py
@@ -0,0 +1,117 @@
+"""Rename fuel cost by generator asset
+
+Revision ID: 6c66da98c4e1
+Revises: 56d425818439
+Create Date: 2023-10-02 18:31:16.729897
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '6c66da98c4e1'
+down_revision = '56d425818439'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('_out_eia__monthly_fuel_cost_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_fuel_cost_by_generator'))
+ )
+ op.create_table('_out_eia__yearly_fuel_cost_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_fuel_cost_by_generator'))
+ )
+ op.drop_table('fuel_cost_by_generator_yearly')
+ op.drop_table('fuel_cost_by_generator_monthly')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('fuel_cost_by_generator_monthly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_fuel_cost_by_generator_monthly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_fuel_cost_by_generator_monthly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_fuel_cost_by_generator_monthly_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_fuel_cost_by_generator_monthly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_fuel_cost_by_generator_monthly')
+ )
+ op.create_table('fuel_cost_by_generator_yearly',
+ sa.Column('report_date', sa.DATE(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=False),
+ sa.Column('generator_id', sa.TEXT(), nullable=False),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('utility_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_count', sa.INTEGER(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('fuel_cost_from_eiaapi', sa.BOOLEAN(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_fuel_cost_by_generator_yearly_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_fuel_cost_by_generator_yearly_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_fuel_cost_by_generator_yearly_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_fuel_cost_by_generator_yearly_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name='pk_fuel_cost_by_generator_yearly')
+ )
+ op.drop_table('_out_eia__yearly_fuel_cost_by_generator')
+ op.drop_table('_out_eia__monthly_fuel_cost_by_generator')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 3e0e6eb43e..bfa96da89b 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -56,6 +56,7 @@ def mcoe_asset_factory(
"bga": AssetIn(key="core_eia860__assn_boiler_generator"),
},
compute_kind="Python",
+ io_manager_key="pudl_sqlite_io_manager",
description=f"{agg_freqs[freq].title()} heat rate estimates by generation unit. Generation "
"units are identified by ``unit_id_pudl`` and are composed of a set of "
f"interconnected boilers and generators.",
@@ -71,6 +72,7 @@ def hr_by_unit_asset(gen: pd.DataFrame, bga: pd.DataFrame) -> pd.DataFrame:
"gens": AssetIn(key="_out_eia__yearly_generators"),
},
compute_kind="Python",
+ io_manager_key="pudl_sqlite_io_manager",
description=f"{agg_freqs[freq].title()} heat rate estimates by generator. These are actually "
"just generation unit level heat rates, which have been broadcast "
"across all constituent generator IDs, since heat rates really only "
@@ -113,6 +115,7 @@ def fc_asset(
"gens": AssetIn(key="_out_eia__yearly_generators"),
},
compute_kind="Python",
+ io_manager_key="pudl_sqlite_io_manager",
description=f"{agg_freqs[freq].title()} estimates of generator capacity factor. Capacity "
"factor is calculated based on reported generator capacity and the "
"allocated net generation reported in the generation and generation ",
diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py
index c1d327061a..b01a23bfa7 100644
--- a/src/pudl/metadata/classes.py
+++ b/src/pudl/metadata/classes.py
@@ -1885,9 +1885,9 @@ def get_sorted_resources(self) -> StrictList(Resource):
"""Get a list of sorted Resources.
Currently Resources are listed in reverse alphabetical order based
- on their name which results in the following order: (out_*, core_*, _*).
- This is promotes out_ tables to users and pushes intermediate tables
- to the bottom of the docs.
+ on their name which results in the following order to promote output
+ tables to users and push intermediate tables to the bottom of the
+ docs: output, core, intermediate.
In the future we might want to have more fine grain control over how
Resources are sorted.
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index 50f0c8e099..673cf85ee1 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -228,13 +228,16 @@
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
"exclude": [
"core_eia923__monthly_boiler_fuel",
+ "_out_eia__monthly_capacity_factor_by_generator",
"out_eia923__generation",
"out_eia923__monthly_generation",
+ "_out_eia__monthly_fuel_cost_by_generator",
"core_eia923__monthly_fuel_receipts_costs",
"core_eia923__monthly_generation",
"out_eia923__monthly_generation_fuel_by_generator_energy_source",
"out_eia923__monthly_generation_fuel_by_generator",
"core_eia923__monthly_generation_fuel",
+ "_out_eia__monthly_heat_rate_by_generator",
"_out_eia__monthly_derived_generator_attributes",
"out_eia__monthly_generators",
],
@@ -382,6 +385,10 @@
"core_eia923__monthly_generation",
"core_eia923__monthly_generation_fuel",
"core_eia923__monthly_generation_fuel_nuclear",
+ "_out_eia__monthly_heat_rate_by_unit",
+ "_out_eia__monthly_heat_rate_by_generator",
+ "_out_eia__monthly_fuel_cost_by_generator",
+ "_out_eia__monthly_capacity_factor_by_generator",
"_out_eia__monthly_derived_generator_attributes",
"out_eia__monthly_generators",
],
@@ -454,6 +461,7 @@
"out_eia923__monthly_generation",
"out_eia923__generation_fuel_combined",
"out_eia923__monthly_generation_fuel_combined",
+ "_out_eia__monthly_fuel_cost_by_generator",
"out_eia923__monthly_generation_fuel_by_generator_energy_source",
"out_eia923__monthly_generation_fuel_by_generator",
# Utility IDs in this table are owners, not operators, and we are
diff --git a/src/pudl/metadata/resources/mcoe.py b/src/pudl/metadata/resources/mcoe.py
index c2b070216f..2b738a3e3d 100644
--- a/src/pudl/metadata/resources/mcoe.py
+++ b/src/pudl/metadata/resources/mcoe.py
@@ -9,174 +9,308 @@
"This table should not be used without filtering values to within "
"logical boundaries."
)
-RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- f"_out_eia__{freq}_derived_generator_attributes": {
- "description": (
- f"{freq.title()} generator capacity factor, heat rate, fuel cost per MMBTU and fuel cost "
- "per MWh. These calculations are based on the allocation of net generation reported on "
- "the basis of plant, prime mover and energy source to individual generators. Heat rates "
- "by generator-month are estimated by using allocated estimates for per-generator net "
- "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
- "reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
- "consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
- "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
- "~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
- "cost estimates."
- ),
- "schema": {
- "fields": [
- "plant_id_eia",
- "generator_id",
- "unit_id_pudl",
- "report_date",
- "capacity_factor",
- "fuel_cost_from_eiaapi",
- "fuel_cost_per_mmbtu",
- "fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
- "net_generation_mwh",
- "total_fuel_cost",
- "total_mmbtu",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
+RESOURCE_METADATA: dict[str, dict[str, Any]] = (
+ {
+ f"_out_eia__{freq}_heat_rate_by_unit": {
+ "description": (
+ f"{freq.title()} heat rate estimates by generation unit. Generation "
+ "units are identified by ``unit_id_pudl`` and are composed of a set of "
+ f"interconnected boilers and generators. {FILTERING_WARNING}"
+ ),
+ "schema": {
+ "fields": [
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ "net_generation_mwh",
+ "fuel_consumed_for_electricity_mmbtu",
+ "heat_rate_mmbtu_mwh",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
+ }
+ for freq in AGG_FREQS
}
- for freq in AGG_FREQS
-} | {
- f"out_eia__{freq}_generators": {
- "description": (
- f"{freq.title()} all generator attributes including calculated capacity factor, "
- "heat rate, fuel cost per MMBTU and fuel cost."
- ),
- "schema": {
- "fields": [
- "plant_id_eia",
- "generator_id",
- "report_date",
- "unit_id_pudl",
- "plant_id_pudl",
- "plant_name_eia",
- "utility_id_eia",
- "utility_id_pudl",
- "utility_name_eia",
- "technology_description",
- "energy_source_code_1",
- "prime_mover_code",
- "generator_operating_date",
- "generator_retirement_date",
- "operational_status",
- "capacity_mw",
- "fuel_type_code_pudl",
- "planned_generator_retirement_date",
- "capacity_factor",
- "fuel_cost_from_eiaapi",
- "fuel_cost_per_mmbtu",
- "fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
- "net_generation_mwh",
- "total_fuel_cost",
- "total_mmbtu",
- "associated_combined_heat_power",
- "bga_source",
- "bypass_heat_recovery",
- "carbon_capture",
- "city",
- "cofire_fuels",
- "county",
- "current_planned_generator_operating_date",
- "data_maturity",
- "deliver_power_transgrid",
- "distributed_generation",
- "duct_burners",
- "energy_source_1_transport_1",
- "energy_source_1_transport_2",
- "energy_source_1_transport_3",
- "energy_source_2_transport_1",
- "energy_source_2_transport_2",
- "energy_source_2_transport_3",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_storage_capacity_mwh",
- "ferc_qualifying_facility",
- "fluidized_bed_tech",
- "fuel_type_count",
- "latitude",
- "longitude",
- "minimum_load_mw",
- "multiple_fuels",
- "nameplate_power_factor",
- "net_capacity_mwdc",
- "operating_switch",
- "operational_status_code",
- "original_planned_generator_operating_date",
- "other_combustion_tech",
- "other_modifications_date",
- "other_planned_modifications",
- "owned_by_non_utility",
- "ownership_code",
- "planned_derate_date",
- "planned_energy_source_code_1",
- "planned_modifications",
- "planned_net_summer_capacity_derate_mw",
- "planned_net_summer_capacity_uprate_mw",
- "planned_net_winter_capacity_derate_mw",
- "planned_net_winter_capacity_uprate_mw",
- "planned_new_capacity_mw",
- "planned_new_prime_mover_code",
- "planned_repower_date",
- "planned_uprate_date",
- "previously_canceled",
- "pulverized_coal_tech",
- "reactive_power_output_mvar",
- "rto_iso_lmp_node_id",
- "rto_iso_location_wholesale_reporting_id",
- "solid_fuel_gasification",
- "startup_source_code_1",
- "startup_source_code_2",
- "startup_source_code_3",
- "startup_source_code_4",
- "state",
- "stoker_tech",
- "street_address",
- "subcritical_tech",
- "summer_capacity_estimate",
- "summer_capacity_mw",
- "summer_estimated_capability_mw",
- "supercritical_tech",
- "switch_oil_gas",
- "syncronized_transmission_grid",
- "time_cold_shutdown_full_load_code",
- "timezone",
- "topping_bottoming_code",
- "turbines_inverters_hydrokinetics",
- "turbines_num",
- "ultrasupercritical_tech",
- "uprate_derate_completed_date",
- "uprate_derate_during_year",
- "winter_capacity_estimate",
- "winter_capacity_mw",
- "winter_estimated_capability_mw",
- "zip_code",
- ],
- "primary_key": [
- "report_date",
- "plant_id_eia",
- "generator_id",
- ],
- },
- "field_namespace": "eia",
- "sources": ["eia923", "eia860"],
- "etl_group": "outputs",
+ | {
+ f"_out_eia__{freq}_heat_rate_by_generator": {
+ "description": (
+ f"{freq.title()} heat rate estimates by generator. These are actually "
+ "just generation unit level heat rates, which have been broadcast "
+ "across all constituent generator IDs, since heat rates really only "
+ "have a well-defined meaning in the context of a generation unit."
+ f"{FILTERING_WARNING}"
+ ),
+ "schema": {
+ "fields": [
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ "generator_id",
+ "heat_rate_mmbtu_mwh",
+ "fuel_type_code_pudl",
+ "fuel_type_count",
+ "prime_mover_code",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
+ }
+ for freq in AGG_FREQS
}
- for freq in AGG_FREQS
-}
+ | {
+ f"_out_eia__{freq}_capacity_factor_by_generator": {
+ "description": (
+ f"{freq.title()} estimates of generator capacity factor. Capacity "
+ "factor is calculated based on reported generator capacity and the "
+ "allocated net generation reported in the generation and generation "
+ f"fuel tables. {FILTERING_WARNING}"
+ ),
+ "schema": {
+ "fields": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "net_generation_mwh",
+ "capacity_mw",
+ "capacity_factor",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
+ }
+ for freq in AGG_FREQS
+ }
+ | {
+ f"_out_eia__{freq}_fuel_cost_by_generator": {
+ "description": (
+ f"{freq.title()} estimate of per-generator fuel costs both per MMBTU "
+ "and per MWh. These calculations are based on the allocation of net "
+ "generation and fuel consumption as well as plant-level delivered fuel prices "
+ "reported in the fuel receipts and cost table. The intermediary heat rate "
+ "calculation depends on having the unit ID filled in, which means fuel cost "
+ "coverage is low. The fuel costs are also currently aggregated to coarse fuel "
+ "categories rather than using the more detailed energy source codes."
+ f"{FILTERING_WARNING}"
+ ),
+ "schema": {
+ "fields": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "unit_id_pudl",
+ "plant_name_eia",
+ "plant_id_pudl",
+ "utility_id_eia",
+ "utility_name_eia",
+ "utility_id_pudl",
+ "fuel_type_count",
+ "fuel_type_code_pudl",
+ "fuel_cost_from_eiaapi",
+ "fuel_cost_per_mmbtu",
+ "heat_rate_mmbtu_mwh",
+ "fuel_cost_per_mwh",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
+ }
+ for freq in AGG_FREQS
+ }
+ | {
+ f"_out_eia__{freq}_derived_generator_attributes": {
+ "description": (
+ f"{freq.title()} generator capacity factor, heat rate, fuel cost per MMBTU and fuel cost "
+ "per MWh. These calculations are based on the allocation of net generation reported on "
+ "the basis of plant, prime mover and energy source to individual generators. Heat rates "
+ "by generator-month are estimated by using allocated estimates for per-generator net "
+ "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
+ "reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
+ "consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
+ "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
+ "~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
+ "cost estimates."
+ ),
+ "schema": {
+ "fields": [
+ "plant_id_eia",
+ "generator_id",
+ "unit_id_pudl",
+ "report_date",
+ "capacity_factor",
+ "fuel_cost_from_eiaapi",
+ "fuel_cost_per_mmbtu",
+ "fuel_cost_per_mwh",
+ "heat_rate_mmbtu_mwh",
+ "net_generation_mwh",
+ "total_fuel_cost",
+ "total_mmbtu",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
+ }
+ for freq in AGG_FREQS
+ }
+ | {
+ f"out_eia__{freq}_generators": {
+ "description": (
+ f"{freq.title()} all generator attributes including calculated capacity factor, "
+ "heat rate, fuel cost per MMBTU and fuel cost."
+ ),
+ "schema": {
+ "fields": [
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ "unit_id_pudl",
+ "plant_id_pudl",
+ "plant_name_eia",
+ "utility_id_eia",
+ "utility_id_pudl",
+ "utility_name_eia",
+ "technology_description",
+ "energy_source_code_1",
+ "prime_mover_code",
+ "generator_operating_date",
+ "generator_retirement_date",
+ "operational_status",
+ "capacity_mw",
+ "fuel_type_code_pudl",
+ "planned_generator_retirement_date",
+ "capacity_factor",
+ "fuel_cost_from_eiaapi",
+ "fuel_cost_per_mmbtu",
+ "fuel_cost_per_mwh",
+ "heat_rate_mmbtu_mwh",
+ "net_generation_mwh",
+ "total_fuel_cost",
+ "total_mmbtu",
+ "associated_combined_heat_power",
+ "bga_source",
+ "bypass_heat_recovery",
+ "carbon_capture",
+ "city",
+ "cofire_fuels",
+ "county",
+ "current_planned_generator_operating_date",
+ "data_maturity",
+ "deliver_power_transgrid",
+ "distributed_generation",
+ "duct_burners",
+ "energy_source_1_transport_1",
+ "energy_source_1_transport_2",
+ "energy_source_1_transport_3",
+ "energy_source_2_transport_1",
+ "energy_source_2_transport_2",
+ "energy_source_2_transport_3",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_storage_capacity_mwh",
+ "ferc_qualifying_facility",
+ "fluidized_bed_tech",
+ "fuel_type_count",
+ "latitude",
+ "longitude",
+ "minimum_load_mw",
+ "multiple_fuels",
+ "nameplate_power_factor",
+ "net_capacity_mwdc",
+ "operating_switch",
+ "operational_status_code",
+ "original_planned_generator_operating_date",
+ "other_combustion_tech",
+ "other_modifications_date",
+ "other_planned_modifications",
+ "owned_by_non_utility",
+ "ownership_code",
+ "planned_derate_date",
+ "planned_energy_source_code_1",
+ "planned_modifications",
+ "planned_net_summer_capacity_derate_mw",
+ "planned_net_summer_capacity_uprate_mw",
+ "planned_net_winter_capacity_derate_mw",
+ "planned_net_winter_capacity_uprate_mw",
+ "planned_new_capacity_mw",
+ "planned_new_prime_mover_code",
+ "planned_repower_date",
+ "planned_uprate_date",
+ "previously_canceled",
+ "pulverized_coal_tech",
+ "reactive_power_output_mvar",
+ "rto_iso_lmp_node_id",
+ "rto_iso_location_wholesale_reporting_id",
+ "solid_fuel_gasification",
+ "startup_source_code_1",
+ "startup_source_code_2",
+ "startup_source_code_3",
+ "startup_source_code_4",
+ "state",
+ "stoker_tech",
+ "street_address",
+ "subcritical_tech",
+ "summer_capacity_estimate",
+ "summer_capacity_mw",
+ "summer_estimated_capability_mw",
+ "supercritical_tech",
+ "switch_oil_gas",
+ "syncronized_transmission_grid",
+ "time_cold_shutdown_full_load_code",
+ "timezone",
+ "topping_bottoming_code",
+ "turbines_inverters_hydrokinetics",
+ "turbines_num",
+ "ultrasupercritical_tech",
+ "uprate_derate_completed_date",
+ "uprate_derate_during_year",
+ "winter_capacity_estimate",
+ "winter_capacity_mw",
+ "winter_estimated_capability_mw",
+ "zip_code",
+ ],
+ "primary_key": [
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ ],
+ },
+ "field_namespace": "eia",
+ "sources": ["eia923", "eia860"],
+ "etl_group": "outputs",
+ }
+ for freq in AGG_FREQS
+ }
+)
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 9fb24eed65..bfd832e5b3 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -226,9 +226,9 @@ def _register_output_methods(self: Self):
table_method_map_any_agg = {
"out_eia923__AGG_generation_fuel_by_generator_energy_source": "gen_fuel_by_generator_energy_source_eia923",
"out_eia923__AGG_generation_fuel_by_generator": "gen_fuel_by_generator_eia923",
- "heat_rate_by_unit_AGG": "hr_by_unit",
- "heat_rate_by_generator_AGG": "hr_by_gen",
- "capacity_factor_by_generator_AGG": "capacity_factor",
+ "_out_eia__AGG_heat_rate_by_unit": "hr_by_unit",
+ "_out_eia__AGG_heat_rate_by_generator": "hr_by_gen",
+ "_out_eia__AGG_capacity_factor_by_generator": "capacity_factor",
"fuel_cost_by_generator_AGG": "fuel_cost",
"_out_eia__AGG_derived_generator_attributes": "mcoe",
"out_eia__AGG_generators": "mcoe_generators",
From 791a70bf703432d5682105f1e8d5b4346b30eae9 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Tue, 3 Oct 2023 09:48:10 +0200
Subject: [PATCH 38/70] Update stragler PudlTabl method name
---
src/pudl/output/pudltabl.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index bfd832e5b3..1fd9bfc8ab 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -229,7 +229,7 @@ def _register_output_methods(self: Self):
"_out_eia__AGG_heat_rate_by_unit": "hr_by_unit",
"_out_eia__AGG_heat_rate_by_generator": "hr_by_gen",
"_out_eia__AGG_capacity_factor_by_generator": "capacity_factor",
- "fuel_cost_by_generator_AGG": "fuel_cost",
+ "_out_eia__AGG_fuel_cost_by_generator": "fuel_cost",
"_out_eia__AGG_derived_generator_attributes": "mcoe",
"out_eia__AGG_generators": "mcoe_generators",
}
From 9f578b393b5a41e8ddd5fb0fccb81db9295cad15 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 5 Oct 2023 18:04:52 +0200
Subject: [PATCH 39/70] Add frequency to ppl asset name and some clean up
---
docs/templates/package.rst.jinja | 2 -
...add_frequency_to_plant_parts_asset_name.py | 131 ++++++++++++++++++
src/pudl/analysis/mcoe.py | 27 ----
src/pudl/analysis/plant_parts_eia.py | 4 +-
src/pudl/metadata/helpers.py | 9 +-
src/pudl/metadata/resources/eia.py | 2 +-
src/pudl/output/pudltabl.py | 4 +-
7 files changed, 141 insertions(+), 38 deletions(-)
create mode 100644 migrations/versions/73cd55a6a815_add_frequency_to_plant_parts_asset_name.py
diff --git a/docs/templates/package.rst.jinja b/docs/templates/package.rst.jinja
index dbbcf02cbf..e18365d7c9 100644
--- a/docs/templates/package.rst.jinja
+++ b/docs/templates/package.rst.jinja
@@ -3,8 +3,6 @@ PUDL Data Dictionary
===============================================================================
The following data tables have been cleaned and transformed by our ETL process.
-Please note that tables beginning with "denorm" are temporary tables whose names and
-metadata will shortly change, as we migrate new tables into our database.
{% for resource in package.get_sorted_resources() %}
.. _{{ resource.name|format_resource_name_cross_ref }}:
diff --git a/migrations/versions/73cd55a6a815_add_frequency_to_plant_parts_asset_name.py b/migrations/versions/73cd55a6a815_add_frequency_to_plant_parts_asset_name.py
new file mode 100644
index 0000000000..821e1b3b7f
--- /dev/null
+++ b/migrations/versions/73cd55a6a815_add_frequency_to_plant_parts_asset_name.py
@@ -0,0 +1,131 @@
+"""Add frequency to plant parts asset name
+
+Revision ID: 73cd55a6a815
+Revises: 6c66da98c4e1
+Create Date: 2023-10-05 17:09:15.525429
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '73cd55a6a815'
+down_revision = '6c66da98c4e1'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia__yearly_plant_parts',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_unit', 'plant_gen', 'plant_match_ferc1', 'plant', 'plant_prime_fuel', 'plant_ferc_acct', 'plant_prime_mover', 'plant_technology', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_gen', 'plant_match_ferc1', 'plant', 'plant_prime_fuel', 'plant_ferc_acct', 'plant_prime_mover', 'plant_technology', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__yearly_plant_parts'))
+ )
+ op.drop_table('out_eia__plant_parts')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('out_eia__plant_parts',
+ sa.Column('record_id_eia', sa.TEXT(), nullable=False),
+ sa.Column('plant_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('report_date', sa.DATE(), nullable=True),
+ sa.Column('plant_part', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('generator_id', sa.TEXT(), nullable=True),
+ sa.Column('unit_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('prime_mover_code', sa.TEXT(), nullable=True),
+ sa.Column('energy_source_code_1', sa.TEXT(), nullable=True),
+ sa.Column('technology_description', sa.TEXT(), nullable=True),
+ sa.Column('ferc_acct_name', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('utility_id_eia', sa.INTEGER(), nullable=True),
+ sa.Column('true_gran', sa.BOOLEAN(), nullable=True),
+ sa.Column('appro_part_label', sa.VARCHAR(length=20), nullable=True),
+ sa.Column('appro_record_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('ferc1_generator_agg_id', sa.INTEGER(), nullable=True),
+ sa.Column('capacity_eoy_mw', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_factor', sa.FLOAT(), nullable=True),
+ sa.Column('capacity_mw', sa.FLOAT(), nullable=True),
+ sa.Column('construction_year', sa.INTEGER(), nullable=True),
+ sa.Column('fraction_owned', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_cost_per_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('fuel_type_code_pudl', sa.VARCHAR(length=7), nullable=True),
+ sa.Column('generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('installation_year', sa.INTEGER(), nullable=True),
+ sa.Column('net_generation_mwh', sa.FLOAT(), nullable=True),
+ sa.Column('generator_operating_year', sa.INTEGER(), nullable=True),
+ sa.Column('operational_status', sa.TEXT(), nullable=True),
+ sa.Column('operational_status_pudl', sa.VARCHAR(length=9), nullable=True),
+ sa.Column('ownership_record_type', sa.VARCHAR(length=5), nullable=True),
+ sa.Column('ownership_dupe', sa.BOOLEAN(), nullable=True),
+ sa.Column('planned_generator_retirement_date', sa.DATE(), nullable=True),
+ sa.Column('plant_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('plant_name_eia', sa.TEXT(), nullable=True),
+ sa.Column('plant_name_ppe', sa.TEXT(), nullable=True),
+ sa.Column('plant_part_id_eia', sa.TEXT(), nullable=True),
+ sa.Column('record_count', sa.INTEGER(), nullable=True),
+ sa.Column('total_fuel_cost', sa.FLOAT(), nullable=True),
+ sa.Column('total_mmbtu', sa.FLOAT(), nullable=True),
+ sa.Column('utility_id_pudl', sa.INTEGER(), nullable=True),
+ sa.Column('report_year', sa.INTEGER(), nullable=True),
+ sa.Column('plant_id_report_year', sa.TEXT(), nullable=True),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name='fk_out_eia__plant_parts_energy_source_code_1_core_eia__codes_energy_sources'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name='fk_out_eia__plant_parts_plant_id_eia_core_eia860__scd_generators'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name='fk_out_eia__plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl'),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name='fk_out_eia__plant_parts_prime_mover_code_core_eia__codes_prime_movers'),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name='fk_out_eia__plant_parts_utility_id_eia_core_eia860__scd_utilities'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name='fk_out_eia__plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl'),
+ sa.PrimaryKeyConstraint('record_id_eia', name='pk_out_eia__plant_parts')
+ )
+ op.drop_table('out_eia__yearly_plant_parts')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index bfa96da89b..8522d6abca 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -57,9 +57,6 @@ def mcoe_asset_factory(
},
compute_kind="Python",
io_manager_key="pudl_sqlite_io_manager",
- description=f"{agg_freqs[freq].title()} heat rate estimates by generation unit. Generation "
- "units are identified by ``unit_id_pudl`` and are composed of a set of "
- f"interconnected boilers and generators.",
)
def hr_by_unit_asset(gen: pd.DataFrame, bga: pd.DataFrame) -> pd.DataFrame:
return heat_rate_by_unit(gen_fuel_by_energy_source=gen, bga=bga)
@@ -73,10 +70,6 @@ def hr_by_unit_asset(gen: pd.DataFrame, bga: pd.DataFrame) -> pd.DataFrame:
},
compute_kind="Python",
io_manager_key="pudl_sqlite_io_manager",
- description=f"{agg_freqs[freq].title()} heat rate estimates by generator. These are actually "
- "just generation unit level heat rates, which have been broadcast "
- "across all constituent generator IDs, since heat rates really only "
- "have a well-defined meaning in the context of a generation unit.",
)
def hr_by_gen_asset(
bga: pd.DataFrame, hr_by_unit: pd.DataFrame, gens: pd.DataFrame
@@ -93,13 +86,6 @@ def hr_by_gen_asset(
"frc": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_fuel_receipts_costs"),
},
compute_kind="Python",
- description=f"{agg_freqs[freq].title()} estimate of per-generator fuel costs both per MMBTU "
- "and per MWh. These calculations are based on the allocation of net "
- "generation and fuel consumption as well as plant-level delivered fuel prices "
- "reported in the fuel receipts and cost table. The intermediary heat rate "
- "calculation depends on having the unit ID filled in, which means fuel cost "
- "coverage is low. The fuel costs are also currently aggregated to coarse fuel "
- "categories rather than using the more detailed energy source codes.",
)
def fc_asset(
hr_by_gen: pd.DataFrame, gens: pd.DataFrame, frc: pd.DataFrame
@@ -116,9 +102,6 @@ def fc_asset(
},
compute_kind="Python",
io_manager_key="pudl_sqlite_io_manager",
- description=f"{agg_freqs[freq].title()} estimates of generator capacity factor. Capacity "
- "factor is calculated based on reported generator capacity and the "
- "allocated net generation reported in the generation and generation ",
)
def cf_asset(gens: pd.DataFrame, gen: pd.DataFrame) -> pd.DataFrame:
return capacity_factor(gens=gens, gen=gen, freq=freq)
@@ -174,16 +157,6 @@ def cf_asset(gens: pd.DataFrame, gen: pd.DataFrame) -> pd.DataFrame:
),
},
io_manager_key="pudl_sqlite_io_manager",
- description=f"{agg_freqs[freq].title()} generator capacity factor, heat rate, fuel cost per MMBTU and fuel cost "
- "per MWh. These calculations are based on the allocation of net generation reported on "
- "the basis of plant, prime mover and energy source to individual generators. Heat rates "
- "by generator-month are estimated by using allocated estimates for per-generator net "
- "generation and fuel consumption as well as the :ref:`core_eia923__monthly_boiler_fuel` table, which "
- "reports fuel consumed by boiler. Heat rates are necessary to estimate the amount of fuel "
- "consumed by a generation unit, and thus the fuel cost per MWh generated. Plant specific "
- "fuel prices are taken from the :ref:`core_eia923__monthly_fuel_receipts_costs` table, which only has "
- "~70% coverage, leading to some generators with heat rate estimates still lacking fuel "
- "cost estimates.",
)
def mcoe_asset(
context, fuel_cost: pd.DataFrame, capacity_factor: pd.DataFrame
diff --git a/src/pudl/analysis/plant_parts_eia.py b/src/pudl/analysis/plant_parts_eia.py
index 819157eb76..1a1cc5b5df 100644
--- a/src/pudl/analysis/plant_parts_eia.py
+++ b/src/pudl/analysis/plant_parts_eia.py
@@ -383,7 +383,7 @@ def out_eia__yearly_generators_by_ownership(
io_manager_key="pudl_sqlite_io_manager",
compute_kind="Python",
)
-def out_eia__plant_parts(
+def out_eia__yearly_plant_parts(
out_eia__yearly_generators_by_ownership: pd.DataFrame,
out_eia__yearly_plants: pd.DataFrame,
out_eia__yearly_utilities: pd.DataFrame,
@@ -658,7 +658,7 @@ def execute(self, gens_mega, plants_eia860, utils_eia860):
)
.pipe(pudl.helpers.organize_cols, FIRST_COLS)
.pipe(self._clean_plant_parts)
- .pipe(Resource.from_id("out_eia__plant_parts").format_df)
+ .pipe(Resource.from_id("out_eia__yearly_plant_parts").format_df)
)
return self.plant_parts_eia
diff --git a/src/pudl/metadata/helpers.py b/src/pudl/metadata/helpers.py
index 31ecfcef86..cc7f1be817 100644
--- a/src/pudl/metadata/helpers.py
+++ b/src/pudl/metadata/helpers.py
@@ -599,12 +599,13 @@ def groupby_aggregate( # noqa: C901
def _format_resource_name_cross_ref(resource_name: str) -> str:
"""Format resource name as a cross_ref for sphinx docs.
- Sphinx throws an error when creating a cross ref for
+ Sphinx throws an error when creating a cross ref target for
a resource that has a preceeding underscore. It is
also possible for resources to have identical names
- when the preceeding underscore is removed. This funcntion
- adds a preceeding 'i' to cross references for resources
- with preceeding underscores.
+ when the preceeding underscore is removed. This function
+ adds a preceeding 'i' to cross ref targets for resources
+ with preceeding underscores. The 'i' will not be rendered
+ in the docs, only in the .rst files the hyperlinks.
Args:
resource_name: the name of the resource.
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index d4bd30e9b1..eee24adffb 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -623,7 +623,7 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "out_eia__plant_parts": {
+ "out_eia__yearly_plant_parts": {
"description": "Output table with the aggregation of all EIA plant parts. For use with matching to FERC 1.",
"schema": {
"fields": [
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 1fd9bfc8ab..90e15252af 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -219,8 +219,8 @@ def _register_output_methods(self: Self):
# state demand
"out_ferc714__hourly_predicted_state_demand": "predicted_state_hourly_demand",
# plant parts
- "out_eia__yearly_generators_by_ownership": "gens_by_own_eia",
- "out_eia__plant_parts": "plant_parts_eia",
+ "out_eia__yearly_generators_by_ownership": "gens_mega_eia",
+ "out_eia__yearly_plant_parts": "plant_parts_eia",
}
table_method_map_any_agg = {
From c63dd8f468bf2357fcae2d452124ca2163aec965 Mon Sep 17 00:00:00 2001
From: Christina Gosnell
Date: Tue, 31 Oct 2023 14:02:19 -0400
Subject: [PATCH 40/70] rename six of the non-contreversial FERC1 tables (core
+ out)
---
devtools/debug-ferc1-etl.ipynb | 6 +-
docs/release_notes.rst | 14 +-
...1_wipe_out_schema_and_core_asset_rename.py | 31027 +++++++++++++---
src/pudl/analysis/classify_plants_ferc1.py | 5 +-
src/pudl/analysis/ferc1_eia_record_linkage.py | 6 +-
src/pudl/extract/ferc1.py | 12 +-
src/pudl/glue/ferc1_eia.py | 4 +-
src/pudl/metadata/fields.py | 8 +-
src/pudl/metadata/resources/ferc1.py | 26 +-
src/pudl/output/ferc1.py | 88 +-
src/pudl/output/pudltabl.py | 14 +-
.../xbrl_calculation_component_fixes.csv | 52 +-
src/pudl/transform/ferc1.py | 60 +-
src/pudl/transform/params/ferc1.py | 12 +-
test/validate/ferc1_test.py | 8 +-
test/validate/fuel_ferc1_test.py | 14 +-
16 files changed, 26990 insertions(+), 4366 deletions(-)
diff --git a/devtools/debug-ferc1-etl.ipynb b/devtools/debug-ferc1-etl.ipynb
index 3b633f7582..13f8b8e431 100644
--- a/devtools/debug-ferc1-etl.ipynb
+++ b/devtools/debug-ferc1-etl.ipynb
@@ -99,7 +99,7 @@
},
"outputs": [],
"source": [
- "ferc1_xbrl_raw_dfs[\"core_ferc1__yearly_fuel\"][\"duration\"].report_year"
+ "ferc1_xbrl_raw_dfs[\"core_ferc1__yearly_steam_plants_fuel\"][\"duration\"].report_year"
]
},
{
@@ -327,7 +327,7 @@
"transformed_tables = {}\n",
"for table_name, transformer in transformers.items():\n",
" if table_name == \"core_ferc1__yearly_plants_steam\":\n",
- " # core_ferc1__yearly_plants_steam is a special case. It depends on the transformed core_ferc1__yearly_fuel table.\n",
+ " # core_ferc1__yearly_plants_steam is a special case. It depends on the transformed core_ferc1__yearly_steam_plants_fuel table.\n",
" continue\n",
" transformed_tables[transformer.table_id.value] = transformer.transform(\n",
" raw_dbf=ferc1_dbf_raw_dfs[transformer.table_id.value],\n",
@@ -351,7 +351,7 @@
" raw_dbf=ferc1_dbf_raw_dfs[transformer.table_id.value],\n",
" raw_xbrl_instant=ferc1_xbrl_raw_dfs[transformer.table_id.value][\"instant\"],\n",
" raw_xbrl_duration=ferc1_xbrl_raw_dfs[transformer.table_id.value][\"duration\"],\n",
- " transformed_fuel=transformed_tables[\"core_ferc1__yearly_fuel\"],\n",
+ " transformed_fuel=transformed_tables[\"core_ferc1__yearly_steam_plants_fuel\"],\n",
")"
]
}
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 8f31a87267..f07ecb6a60 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -88,10 +88,10 @@ Data Coverage
:pr:`2094`.
* :ref:`core_ferc1__yearly_electric_energy_dispositions`, see issue :issue:`1819` &
PR :pr:`2100`.
- * :ref:`core_ferc1__yearly_transmission_statistics`, see issue :issue:`1822` & PR
+ * :ref:`core_ferc1__yearly_transmission_lines`, see issue :issue:`1822` & PR
:pr:`2103`
- * :ref:`core_ferc1__yearly_utility_plant_summary`, see issue :issue:`1806` & PR
- :pr:`2105`.
+ * :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary`, see issue
+ :issue:`1806` & PR :pr:`2105`.
* :ref:`core_ferc1__yearly_balance_sheet_assets`, see issue :issue:`1805` & PRs
:pr:`2112,2127`.
* :ref:`core_ferc1__yearly_balance_sheet_liabilities`, see issue :issue:`1810` & PR
@@ -107,7 +107,7 @@ Data Coverage
:pr:`2162`.
* :ref:`core_ferc1__yearly_retained_earnings`, see issue :issue:`1811` & PR
:pr:`2155`.
- * :ref:`core_ferc1__yearly_cash_flow`, see issue :issue:`1821` & PR :pr:`2184`
+ * :ref:`core_ferc1__yearly_cash_flows`, see issue :issue:`1821` & PR :pr:`2184`
* :ref:`core_ferc1__yearly_electricity_sales_by_rate_schedule`, see issue
:issue:`1823` & PR :pr:`2205`.
@@ -231,7 +231,7 @@ Data Cleaning
:ref:`core_ferc1__yearly_electric_operating_revenues` table.
* Made minor calculation fixes in the metadata for
:ref:`core_ferc1__yearly_income_statement`,
- :ref:`core_ferc1__yearly_utility_plant_summary`,
+ :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary`,
:ref:`core_ferc1__yearly_electric_operating_revenues`,
:ref:`core_ferc1__yearly_balance_sheet_assets`,
:ref:`core_ferc1__yearly_balance_sheet_liabilities`, and
@@ -247,8 +247,8 @@ Data Cleaning
the often incorrect calculation specifications!). See :issue:`2957` and :pr:`2620`.
* Flip the sign of some erroneous negative values in the
:ref:`core_ferc1__yearly_plant_in_service` and
- :ref:`core_ferc1__yearly_utility_plant_summary` tables. See :issue:`2599`, and
- :pr:`2647`.
+ :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary` tables. See
+ :issue:`2599`, and :pr:`2647`.
Analysis
^^^^^^^^
diff --git a/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py b/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py
index dcdcf59fe7..578930427b 100644
--- a/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py
+++ b/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py
@@ -10,7 +10,7 @@
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
-revision = '3b8641576a41'
+revision = "3b8641576a41"
down_revision = None
branch_labels = None
depends_on = None
@@ -18,4215 +18,26830 @@
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('core_eia861__assn_balancing_authority',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_balancing_authority'))
- )
- op.create_table('core_eia861__assn_utility',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_utility'))
- )
- op.create_table('core_eia861__yearly_balancing_authority',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_core_eia861__yearly_balancing_authority'))
- )
- op.create_table('core_eia__codes_averaging_periods',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_averaging_periods'))
- )
- op.create_table('core_eia__codes_balancing_authorities',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_balancing_authorities'))
- )
- op.create_table('core_eia__codes_boiler_generator_assn_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_generator_assn_types'))
- )
- op.create_table('core_eia__codes_boiler_status',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_status'))
- )
- op.create_table('core_eia__codes_boiler_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_types'))
- )
- op.create_table('core_eia__codes_coalmine_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_coalmine_types'))
- )
- op.create_table('core_eia__codes_contract_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_contract_types'))
- )
- op.create_table('core_eia__codes_emission_control_equipment_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_emission_control_equipment_types'))
- )
- op.create_table('core_eia__codes_energy_sources',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('fuel_units', sa.Enum('barrels', 'mcf', 'mwh', 'short_tons'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('min_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Minimum heat content per physical unit of fuel in MMBtu.'),
- sa.Column('max_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Maximum heat content per physical unit of fuel in MMBtu.'),
- sa.Column('fuel_group_eia', sa.Enum('fossil', 'other', 'renewable'), nullable=True, comment='High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.'),
- sa.Column('fuel_derived_from', sa.Enum('biomass', 'coal', 'gas', 'other', 'petroleum'), nullable=True, comment='Original fuel from which this refined fuel was derived.'),
- sa.Column('fuel_phase', sa.Enum('gas', 'liquid', 'solid'), nullable=True, comment='Physical phase of matter of the fuel.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_energy_sources'))
- )
- op.create_table('core_eia__codes_environmental_equipment_manufacturers',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_environmental_equipment_manufacturers'))
- )
- op.create_table('core_eia__codes_firing_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_firing_types'))
- )
- op.create_table('core_eia__codes_fuel_transportation_modes',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_transportation_modes'))
- )
- op.create_table('core_eia__codes_fuel_types_aer',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_types_aer'))
- )
- op.create_table('core_eia__codes_mercury_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_mercury_compliance_strategies'))
- )
- op.create_table('core_eia__codes_momentary_interruptions',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_momentary_interruptions'))
- )
- op.create_table('core_eia__codes_nox_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_compliance_strategies'))
- )
- op.create_table('core_eia__codes_nox_control_status',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_control_status'))
- )
- op.create_table('core_eia__codes_nox_units',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_units'))
- )
- op.create_table('core_eia__codes_operational_status',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_operational_status'))
- )
- op.create_table('core_eia__codes_particulate_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_compliance_strategies'))
- )
- op.create_table('core_eia__codes_particulate_units',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_units'))
- )
- op.create_table('core_eia__codes_prime_movers',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_prime_movers'))
- )
- op.create_table('core_eia__codes_regulations',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_regulations'))
- )
- op.create_table('core_eia__codes_reporting_frequencies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_reporting_frequencies'))
- )
- op.create_table('core_eia__codes_sector_consolidated',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_sector_consolidated'))
- )
- op.create_table('core_eia__codes_so2_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_compliance_strategies'))
- )
- op.create_table('core_eia__codes_so2_units',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_units'))
- )
- op.create_table('core_eia__codes_steam_plant_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_steam_plant_types'))
- )
- op.create_table('core_eia__codes_wet_dry_bottom',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
- )
- op.create_table('core_eia__entity_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_eia__entity_plants'))
- )
- op.create_table('core_eia__entity_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
- )
- op.create_table('core_eia__yearly_fuel_receipts_costs_aggs',
- sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
- sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
- sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
- sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_core_eia__yearly_fuel_receipts_costs_aggs'))
- )
- op.create_table('core_epa__assn_epacamd_eia_subplant_ids',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
- )
- op.create_table('core_ferc1__codes_power_purchase_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
- )
- op.create_table('core_ferc714__respondent_id',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
- )
- op.create_table('core_ferc__codes_accounts',
- sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
- sa.Column('ferc_account_description', sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc__codes_accounts'))
- )
- op.create_table('core_pudl__codes_data_maturities',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_pudl__codes_datasources',
- sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'core_epa__assn_epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
- sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
- sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
- sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
- sa.PrimaryKeyConstraint('datasource', name=op.f('pk_core_pudl__codes_datasources'))
- )
- op.create_table('core_pudl__codes_subdivisions',
- sa.Column('country_code', sa.Enum('CAN', 'USA'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
- sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
- sa.Column('subdivision_code', sa.Enum('MI', 'NV', 'DE', 'NY', 'GA', 'NL', 'ME', 'IL', 'WA', 'WY', 'NE', 'ON', 'MS', 'IN', 'AK', 'NS', 'VA', 'NH', 'HI', 'YT', 'NM', 'AL', 'PR', 'CO', 'NB', 'PA', 'AZ', 'SD', 'MP', 'GU', 'KY', 'MN', 'ND', 'OK', 'QC', 'TN', 'UT', 'TX', 'VT', 'WI', 'NU', 'LA', 'RI', 'CT', 'NC', 'WV', 'PE', 'CA', 'AR', 'MO', 'DC', 'IA', 'SC', 'MB', 'MD', 'NT', 'FL', 'MA', 'ID', 'BC', 'MT', 'SK', 'KS', 'AB', 'NJ', 'VI', 'AS', 'OH', 'OR'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
- sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
- sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
- sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
- sa.Column('division_code_us_census', sa.Enum('SAT', 'NEW', 'ENC', 'WNC', 'MTN', 'PCN', 'WSC', 'MAT', 'PCC', 'ESC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
- sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
- sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
- sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
- )
- op.create_table('core_pudl__entity_plants_pudl',
- sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
- sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_core_pudl__entity_plants_pudl'))
- )
- op.create_table('core_pudl__entity_utilities_pudl',
- sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
- sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia861__compiled_geometry_balancing_authorities',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
- )
- op.create_table('out_eia861__compiled_geometry_utilities',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
- )
- op.create_table('out_ferc714__hourly_predicted_state_demand',
- sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
- sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
- sa.Column('demand_mwh', sa.Float(), nullable=True),
- sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
- sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
- )
- op.create_table('_out_eia__monthly_heat_rate_by_unit',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__monthly_heat_rate_by_unit'))
- )
- op.create_table('core_eia860__scd_emissions_control_equipment',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_core_eia860__scd_emissions_control_equipment'))
- )
- op.create_table('core_eia860__scd_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
- )
- op.create_table('core_eia861__yearly_advanced_metering_infrastructure',
- sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
- sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
- sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
- sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('home_area_network', sa.Integer(), nullable=True),
- sa.Column('non_amr_ami', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_advanced_metering_infrastructure'))
- )
- op.create_table('core_eia861__yearly_demand_response',
- sa.Column('actual_peak_demand_savings_mw', sa.Float(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('customer_incentives_cost', sa.Float(), nullable=True),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('other_costs', sa.Float(), nullable=True),
- sa.Column('potential_peak_demand_savings_mw', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response'))
- )
- op.create_table('core_eia861__yearly_demand_response_water_heater',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('water_heater', sa.Integer(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response_water_heater'))
- )
- op.create_table('core_eia861__yearly_demand_side_management_ee_dr',
- sa.Column('annual_indirect_program_cost', sa.Float(), nullable=True),
- sa.Column('annual_total_cost', sa.Float(), nullable=True),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('energy_efficiency_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_annual_cost', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_annual_effects_mwh', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_annual_incentive_payment', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_incremental_effects_mwh', sa.Float(), nullable=True),
- sa.Column('load_management_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('load_management_annual_cost', sa.Float(), nullable=True),
- sa.Column('load_management_annual_effects_mwh', sa.Float(), nullable=True),
- sa.Column('load_management_annual_incentive_payment', sa.Float(), nullable=True),
- sa.Column('load_management_annual_potential_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('load_management_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('load_management_incremental_effects_mwh', sa.Float(), nullable=True),
- sa.Column('load_management_incremental_potential_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('price_responsiveness_customers', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_demand_side_management_misc',
- sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
- sa.Column('energy_savings_independently_verified', sa.Boolean(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('major_program_changes', sa.Boolean(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('price_responsive_programs', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('reported_as_another_company', sa.Text(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_responsive_programs', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_demand_side_management_sales',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
- sa.Column('sales_to_ultimate_consumers_mwh', sa.Float(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distributed_generation_fuel',
- sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
- sa.Column('fuel_pct', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distributed_generation_misc',
- sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
- sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
- sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
- sa.Column('generators_number', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distributed_generation_tech',
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distribution_systems',
- sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
- sa.Column('distribution_circuits', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_dynamic_pricing',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
- sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_energy_efficiency',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
- sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
- sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
- sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_green_pricing',
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
- sa.Column('rec_revenue', sa.Float(), nullable=True),
- sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_mergers',
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('merge_address', sa.Text(), nullable=True),
- sa.Column('merge_city', sa.Text(), nullable=True),
- sa.Column('merge_company', sa.Text(), nullable=True),
- sa.Column('merge_date', sa.Date(), nullable=True),
- sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
- sa.Column('new_parent', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_net_metering_customer_fuel_class',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_net_metering_misc',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_non_net_metering_customer_fuel_class',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_non_net_metering_misc',
- sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('generators_number', sa.Float(), nullable=True),
- sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_operational_data_misc',
- sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
- sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
- sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
- sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
- sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
- sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
- sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
- sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
- sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
- sa.Column('total_sources_mwh', sa.Float(), nullable=True),
- sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
- sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
- sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
- sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_operational_data_revenue',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('revenue', sa.Float(), nullable=True),
- sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_reliability',
- sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
- sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
- sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
- sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
- sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
- sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
- sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
- sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
- )
- op.create_table('core_eia861__yearly_sales',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
- sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_core_eia861__yearly_sales'))
- )
- op.create_table('core_eia861__yearly_service_territory',
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_core_eia861__yearly_service_territory'))
- )
- op.create_table('core_eia861__yearly_utility_data_misc',
- sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
- sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
- sa.Column('bundled_activity', sa.Boolean(), nullable=True),
- sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
- sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
- sa.Column('distribution_activity', sa.Boolean(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('generation_activity', sa.Boolean(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('transmission_activity', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_utility_data_nerc',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_utility_data_rto',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia923__entity_coalmine',
- sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
- sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
- sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
- sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
- )
- op.create_table('core_eia923__monthly_generation_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
- )
- op.create_table('core_eia923__monthly_generation_fuel_nuclear',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
- )
- op.create_table('core_eia__entity_boilers',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
- )
- op.create_table('core_eia__entity_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
- )
- op.create_table('core_ferc714__hourly_demand_pa',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
- sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('demand_mwh', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id')),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_core_ferc714__hourly_demand_pa'))
- )
- op.create_table('core_pudl__assn_plants_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_pudl__assn_plants_eia'))
- )
- op.create_table('core_pudl__assn_utilities_eia',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_pudl__assn_utilities_eia'))
- )
- op.create_table('core_pudl__assn_utilities_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_pudl__assn_utilities_plants',
- sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_core_pudl__assn_utilities_plants'))
- )
- op.create_table('out_eia860__yearly_emissions_control_equipment',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
- )
- op.create_table('out_eia923__fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
- sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
- sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
- sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
- sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
- sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
- sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
- sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
- )
- op.create_table('out_eia923__monthly_fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
- )
- op.create_table('out_ferc714__respondents_with_fips',
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
- )
- op.create_table('out_ferc714__summarized_demand',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
- sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
- sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
- )
- op.create_table('_out_eia__monthly_capacity_factor_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_capacity_factor_by_generator'))
- )
- op.create_table('_out_eia__monthly_derived_generator_attributes',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_derived_generator_attributes'))
- )
- op.create_table('_out_eia__monthly_fuel_cost_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_fuel_cost_by_generator'))
- )
- op.create_table('_out_eia__monthly_heat_rate_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_heat_rate_by_generator'))
- )
- op.create_table('core_eia860__scd_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
- sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
- sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
- sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
- sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
- sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
- sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
- sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
- sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
- sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
- sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
- sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
- sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
- sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
- sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
- sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
- sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_plants'))
- )
- op.create_table('core_eia923__monthly_boiler_fuel',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_core_eia923__monthly_boiler_fuel'))
- )
- op.create_table('core_eia923__monthly_fuel_receipts_costs',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
- sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
- sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
- sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['mine_id_pudl'], ['core_eia923__entity_coalmine.mine_id_pudl'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
- )
- op.create_table('core_eia923__monthly_generation',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
- )
- op.create_table('core_epa__assn_epacamd_eia',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
- )
- op.create_table('core_ferc1__yearly_balance_sheet_assets',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets'))
- )
- op.create_table('core_ferc1__yearly_balance_sheet_liabilities',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities'))
- )
- op.create_table('core_ferc1__yearly_cash_flow',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
- sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flow'))
- )
- op.create_table('core_ferc1__yearly_depreciation_amortization_summary',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_amortization_summary'))
- )
- op.create_table('core_ferc1__yearly_electric_energy_dispositions',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_electric_energy_dispositions'))
- )
- op.create_table('core_ferc1__yearly_electric_energy_sources',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_electric_energy_sources'))
- )
- op.create_table('core_ferc1__yearly_electric_operating_expenses',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_electric_operating_expenses'))
- )
- op.create_table('core_ferc1__yearly_electric_operating_revenues',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_electric_operating_revenues'))
- )
- op.create_table('core_ferc1__yearly_electric_plant_depreciation_changes',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_changes'))
- )
- op.create_table('core_ferc1__yearly_electric_plant_depreciation_functional',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_electric_plant_depreciation_functional'))
- )
- op.create_table('core_ferc1__yearly_electricity_sales_by_rate_schedule',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
- sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
- sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
- sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_income_statement',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statement'))
- )
- op.create_table('core_ferc1__yearly_other_regulatory_liabilities',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
- sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_plant_in_service',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service'))
- )
- op.create_table('core_ferc1__yearly_purchased_power',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
- sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
- sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
- sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
- sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
- sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
- sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_retained_earnings',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings'))
- )
- op.create_table('core_ferc1__yearly_transmission_statistics',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
- sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
- sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
- sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
- sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
- sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
- sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
- sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
- sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_utility_plant_summary',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary'))
- )
- op.create_table('core_pudl__assn_plants_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_pudl__assn_utilities_ferc1_dbf',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_core_pudl__assn_utilities_ferc1_dbf'))
- )
- op.create_table('core_pudl__assn_utilities_ferc1_xbrl',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_core_pudl__assn_utilities_ferc1_xbrl'))
- )
- op.create_table('out_eia923__boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
- )
- op.create_table('out_eia923__generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
- )
- op.create_table('out_eia923__monthly_boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
- )
- op.create_table('out_eia923__monthly_generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
- )
- op.create_table('out_eia__monthly_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__monthly_generators'))
- )
- op.create_table('out_eia__yearly_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
- )
- op.create_table('out_ferc1__yearly_balance_sheet_assets',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets'))
- )
- op.create_table('out_ferc1__yearly_balance_sheet_liabilities',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities'))
- )
- op.create_table('out_ferc1__yearly_cash_flow',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
- sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flow_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flow'))
- )
- op.create_table('out_ferc1__yearly_depreciation_amortization_summary',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_amortization_summary'))
- )
- op.create_table('out_ferc1__yearly_electric_energy_dispositions',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_electric_energy_dispositions'))
- )
- op.create_table('out_ferc1__yearly_electric_energy_sources',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_electric_energy_sources'))
- )
- op.create_table('out_ferc1__yearly_electric_operating_expenses',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_electric_operating_expenses'))
- )
- op.create_table('out_ferc1__yearly_electric_operating_revenues',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_electric_operating_revenues'))
- )
- op.create_table('out_ferc1__yearly_electric_plant_depreciation_changes',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_changes'))
- )
- op.create_table('out_ferc1__yearly_electric_plant_depreciation_functional',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_electric_plant_depreciation_functional'))
- )
- op.create_table('out_ferc1__yearly_electricity_sales_by_rate_schedule',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
- sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
- sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
- sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_income_statement',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statement_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statement'))
- )
- op.create_table('out_ferc1__yearly_other_regulatory_liabilities',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
- sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_plant_in_service',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service'))
- )
- op.create_table('out_ferc1__yearly_purchased_power',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
- sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
- sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
- sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
- sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
- sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
- sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
- sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
- sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_retained_earnings',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings'))
- )
- op.create_table('out_ferc1__yearly_transmission_statistics',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
- sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
- sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
- sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
- sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
- sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
- sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
- sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
- sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_statistics_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_utility_plant_summary',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary'))
- )
- op.create_table('_out_eia__plants_utilities',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
- )
- op.create_table('_out_eia__yearly_heat_rate_by_unit',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__yearly_heat_rate_by_unit'))
- )
- op.create_table('_out_ferc1__yearly_hydro_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydro_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydro_plants'))
- )
- op.create_table('_out_ferc1__yearly_plants_utilities',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
- )
- op.create_table('_out_ferc1__yearly_pumped_storage_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants'))
- )
- op.create_table('_out_ferc1__yearly_small_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants'))
- )
- op.create_table('_out_ferc1__yearly_steam_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants'))
- )
- op.create_table('core_eia860__scd_boilers',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
- sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
- sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
- sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
- sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
- sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
- sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
- sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
- sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
- sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
- sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
- sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
- sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
- sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
- sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
- sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
- sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
- sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
- sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
- sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
- sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
- sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
- sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
- sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
- sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
- sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
- sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
- sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
- sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
- sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
- sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
- sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
- sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status')),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units')),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_core_eia860__scd_boilers'))
- )
- op.create_table('core_eia860__scd_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia860__scd_generators'))
- )
- op.create_table('core_ferc1__yearly_fuel',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_plants_hydro',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('plant_type', sa.Enum('hydro', 'storage', 'run_of_river_with_storage', 'na_category', 'run_of_river'), nullable=True),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_hydro_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_plants_pumped_storage',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_plants_small',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_small_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_plants_steam',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Enum('internal_combustion', 'combustion_turbine', 'photovoltaic', 'solar_thermal', 'na_category', 'nuclear', 'steam', 'geothermal', 'combined_cycle', 'wind'), nullable=True),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('out_eia923__yearly_fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
- )
- op.create_table('out_eia__yearly_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
- sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
- sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
- sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
- sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
- sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
- sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
- sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
- sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
- sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
- sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
- sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
- sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
- sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
- sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
- sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
- sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
- )
- op.create_table('out_ferc1__yearly_all_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
- )
- op.create_table('out_ferc1__yearly_fuel',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_fuel'))
- )
- op.create_table('out_ferc1__yearly_fuel_by_plant',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
- sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
- sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
- sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
- sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
- sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
- sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
- sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
- sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
- sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
- sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_fuel_by_plant_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_fuel_by_plant'))
- )
- op.create_table('_out_eia__yearly_capacity_factor_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_capacity_factor_by_generator'))
- )
- op.create_table('_out_eia__yearly_derived_generator_attributes',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_derived_generator_attributes'))
- )
- op.create_table('_out_eia__yearly_fuel_cost_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_fuel_cost_by_generator'))
- )
- op.create_table('_out_eia__yearly_generators',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk__out_eia__yearly_generators'))
- )
- op.create_table('_out_eia__yearly_heat_rate_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_heat_rate_by_generator'))
- )
- op.create_table('core_eia860__assn_boiler_cooling',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_core_eia860__assn_boiler_cooling'))
- )
- op.create_table('core_eia860__assn_boiler_generator',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_eia', sa.Text(), nullable=True, comment='EIA-assigned unit identification code.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('boiler_generator_assn_type_code', sa.Text(), nullable=True, comment='Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.'),
- sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_core_eia860__assn_boiler_generator'))
- )
- op.create_table('core_eia860__assn_boiler_stack_flue',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('stack_id_eia', sa.Text(), nullable=True, comment='The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.'),
- sa.Column('flue_id_eia', sa.Text(), nullable=True, comment='The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.'),
- sa.Column('stack_flue_id_eia', sa.Text(), nullable=True, comment='The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.'),
- sa.Column('stack_flue_id_pudl', sa.Text(), nullable=False, comment='A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_core_eia860__assn_boiler_stack_flue'))
- )
- op.create_table('core_eia860__scd_ownership',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
- sa.Column('owner_state', sa.Enum('MI', 'NV', 'DE', 'NY', 'GA', 'NL', 'ME', 'IL', 'WA', 'WY', 'NE', 'ON', 'MS', 'IN', 'AK', 'NS', 'VA', 'NH', 'HI', 'YT', 'NM', 'AL', 'PR', 'CO', 'NB', 'PA', 'AZ', 'SD', 'MP', 'GU', 'KY', 'MN', 'ND', 'OK', 'QC', 'TN', 'UT', 'TX', 'VT', 'WI', 'NU', 'LA', 'RI', 'CT', 'NC', 'WV', 'PE', 'CA', 'AR', 'MO', 'DC', 'IA', 'SC', 'MB', 'MD', 'NT', 'FL', 'MA', 'ID', 'BC', 'MT', 'SK', 'KS', 'AB', 'NJ', 'VI', 'AS', 'OH', 'OR'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
- sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('CAN', 'USA'), nullable=True, comment='Three letter ISO-3166 country code.'),
- sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
- sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
- )
- op.create_table('core_eia860__yearly_boiler_emissions_control_equipment_assn',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
- sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__yearly_boiler_emissions_control_equipment_assn'))
- )
- op.create_table('mega_generators_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out__yearly_plants_all_ferc1_plant_parts_eia',
- sa.Column('record_id_ferc1', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('record_id_eia', sa.Text(), nullable=True, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('match_type', sa.Text(), nullable=True, comment='Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part', sa.Enum('plant_technology', 'plant_unit', 'plant_prime_fuel', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_technology', 'plant_unit', 'plant_prime_fuel', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('total_fuel_cost_eia', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_per_mmbtu_eia', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('net_generation_mwh_eia', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw_eia', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor_eia', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('total_mmbtu_eia', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('heat_rate_mmbtu_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_type_code_pudl_eia', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('installation_year_eia', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor_ferc1', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw_ferc1', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year_eia', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('construction_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh_ferc1', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('fuel_cost_per_mwh_eia', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh_ferc1', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('fuel_cost_per_mmbtu_ferc1', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('total_fuel_cost_ferc1', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu_ferc1', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('fuel_type_code_pudl_ferc1', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_ferc1', name=op.f('pk_out__yearly_plants_all_ferc1_plant_parts_eia'))
- )
- op.create_table('out_eia860__yearly_ownership',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_state', sa.Enum('MI', 'NV', 'DE', 'NY', 'GA', 'NL', 'ME', 'IL', 'WA', 'WY', 'NE', 'ON', 'MS', 'IN', 'AK', 'NS', 'VA', 'NH', 'HI', 'YT', 'NM', 'AL', 'PR', 'CO', 'NB', 'PA', 'AZ', 'SD', 'MP', 'GU', 'KY', 'MN', 'ND', 'OK', 'QC', 'TN', 'UT', 'TX', 'VT', 'WI', 'NU', 'LA', 'RI', 'CT', 'NC', 'WV', 'PE', 'CA', 'AR', 'MO', 'DC', 'IA', 'SC', 'MB', 'MD', 'NT', 'FL', 'MA', 'ID', 'BC', 'MT', 'SK', 'KS', 'AB', 'NJ', 'VI', 'AS', 'OH', 'OR'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
- sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('CAN', 'USA'), nullable=True, comment='Three letter ISO-3166 country code.'),
- sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
- sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
- )
- op.create_table('out_eia923__yearly_boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
- )
- op.create_table('out_eia923__yearly_generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
- )
- op.create_table('out_eia__yearly_boilers',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
- sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
- sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
- sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
- sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
- sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
- sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
- sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
- sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
- sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
- sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
- sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
- sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
- sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
- sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
- sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
- sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
- sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
- sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
- sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
- sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
- sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
- sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
- sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
- sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
- )
- op.create_table('out_eia__yearly_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__yearly_generators'))
- )
- op.create_table('out_eia__yearly_generators_by_ownership',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia__yearly_plant_parts',
- sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_technology', 'plant_unit', 'plant_prime_fuel', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_technology', 'plant_unit', 'plant_prime_fuel', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__yearly_plant_parts'))
- )
- op.create_table('plant_parts_eia',
- sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_technology', 'plant_unit', 'plant_prime_fuel', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Enum('TDF', 'SGP', 'SLW', 'PUR', 'SG', 'OBL', 'OTH', 'MSB', 'SUB', 'WND', 'MSW', 'RC', 'OBS', 'WDS', 'WAT', 'PG', 'OBG', 'WDL', 'DFO', 'SUN', 'LIG', 'SGC', 'RFO', 'MSN', 'ANT', 'LFG', 'KER', 'WC', 'PC', 'OG', 'BFG', 'BIT', 'BLQ', 'WH', 'SC', 'NG', 'JF', 'GEO', 'MWH', 'AB', 'NUC', 'WO'), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Enum('Solar Photovoltaic', 'Conventional Steam Coal', 'Solar Thermal with Energy Storage', 'Batteries', 'Landfill Gas', 'Petroleum Liquids', 'Other Waste Biomass', 'Natural Gas Fired Combustion Turbine', 'Coal Integrated Gasification Combined Cycle', 'Hydroelectric Pumped Storage', 'Natural Gas with Compressed Air Storage', 'Offshore Wind Turbine', 'Other Natural Gas', 'Natural Gas Internal Combustion Engine', 'Nuclear', 'Wood/Wood Waste Biomass', 'Natural Gas Steam Turbine', 'Geothermal', 'Flywheels', 'Hydrokinetic', 'Municipal Solid Waste', 'Conventional Hydroelectric', 'Natural Gas Fired Combined Cycle', 'Petroleum Coke', 'Solar Thermal without Energy Storage', 'All Other', 'Onshore Wind Turbine', 'Other Gases'), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_technology', 'plant_unit', 'plant_prime_fuel', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_ferc_acct', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_plant_parts_eia'))
+ op.create_table(
+ "core_eia861__assn_balancing_authority",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "balancing_authority_id_eia",
+ "utility_id_eia",
+ "state",
+ name=op.f("pk_core_eia861__assn_balancing_authority"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__assn_utility",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "utility_id_eia",
+ "state",
+ name=op.f("pk_core_eia861__assn_utility"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_balancing_authority",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "balancing_authority_id_eia",
+ name=op.f("pk_core_eia861__yearly_balancing_authority"),
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_averaging_periods",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_averaging_periods")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_balancing_authorities",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_balancing_authorities")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_boiler_generator_assn_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_boiler_generator_assn_types")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_boiler_status",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_status")),
+ )
+ op.create_table(
+ "core_eia__codes_boiler_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_types")),
+ )
+ op.create_table(
+ "core_eia__codes_coalmine_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_coalmine_types")),
+ )
+ op.create_table(
+ "core_eia__codes_contract_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_contract_types")),
+ )
+ op.create_table(
+ "core_eia__codes_emission_control_equipment_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_emission_control_equipment_types")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_energy_sources",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "fuel_units",
+ sa.Enum("barrels", "mcf", "mwh", "short_tons"),
+ nullable=True,
+ comment="Reported unit of measure for fuel.",
+ ),
+ sa.Column(
+ "min_fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Minimum heat content per physical unit of fuel in MMBtu.",
+ ),
+ sa.Column(
+ "max_fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Maximum heat content per physical unit of fuel in MMBtu.",
+ ),
+ sa.Column(
+ "fuel_group_eia",
+ sa.Enum("fossil", "other", "renewable"),
+ nullable=True,
+ comment="High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.",
+ ),
+ sa.Column(
+ "fuel_derived_from",
+ sa.Enum("biomass", "coal", "gas", "other", "petroleum"),
+ nullable=True,
+ comment="Original fuel from which this refined fuel was derived.",
+ ),
+ sa.Column(
+ "fuel_phase",
+ sa.Enum("gas", "liquid", "solid"),
+ nullable=True,
+ comment="Physical phase of matter of the fuel.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_energy_sources")),
+ )
+ op.create_table(
+ "core_eia__codes_environmental_equipment_manufacturers",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code",
+ name=op.f("pk_core_eia__codes_environmental_equipment_manufacturers"),
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_firing_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_firing_types")),
+ )
+ op.create_table(
+ "core_eia__codes_fuel_transportation_modes",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_fuel_transportation_modes")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_fuel_types_aer",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_fuel_types_aer")),
+ )
+ op.create_table(
+ "core_eia__codes_mercury_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_mercury_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_momentary_interruptions",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_momentary_interruptions")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_nox_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_nox_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_nox_control_status",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_nox_control_status")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_nox_units",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_nox_units")),
+ )
+ op.create_table(
+ "core_eia__codes_operational_status",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_operational_status")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_particulate_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_particulate_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_particulate_units",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_particulate_units")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_prime_movers",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_prime_movers")),
+ )
+ op.create_table(
+ "core_eia__codes_regulations",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_regulations")),
+ )
+ op.create_table(
+ "core_eia__codes_reporting_frequencies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_reporting_frequencies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_sector_consolidated",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_sector_consolidated")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_so2_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_so2_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_so2_units",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_so2_units")),
+ )
+ op.create_table(
+ "core_eia__codes_steam_plant_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_steam_plant_types")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_wet_dry_bottom",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_wet_dry_bottom")),
+ )
+ op.create_table(
+ "core_eia__entity_plants",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", name=op.f("pk_core_eia__entity_plants")
+ ),
+ )
+ op.create_table(
+ "core_eia__entity_utilities",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", name=op.f("pk_core_eia__entity_utilities")
+ ),
+ )
+ op.create_table(
+ "core_eia__yearly_fuel_receipts_costs_aggs",
+ sa.Column(
+ "fuel_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of fuel aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "geo_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of geographic aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "sector_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of sectoral aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "temporal_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of temporal aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "fuel_received_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "fuel_agg",
+ "geo_agg",
+ "sector_agg",
+ "temporal_agg",
+ "report_date",
+ name=op.f("pk_core_eia__yearly_fuel_receipts_costs_aggs"),
+ ),
+ )
+ op.create_table(
+ "core_epa__assn_epacamd_eia_subplant_ids",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_epa",
+ sa.Integer(),
+ nullable=True,
+ comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
+ ),
+ sa.Column(
+ "subplant_id",
+ sa.Integer(),
+ nullable=True,
+ comment="Sub-plant ID links EPA CEMS emissions units to EIA units.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "emissions_unit_id_epa",
+ sa.Text(),
+ nullable=True,
+ comment="Emissions (smokestack) unit monitored by EPA CEMS.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ )
+ op.create_table(
+ "core_ferc1__codes_power_purchase_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_ferc1__codes_power_purchase_types")
+ ),
+ )
+ op.create_table(
+ "core_ferc714__respondent_id",
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
+ sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
+ sa.Column("eia_code", sa.Integer(), nullable=True),
+ sa.PrimaryKeyConstraint(
+ "respondent_id_ferc714", name=op.f("pk_core_ferc714__respondent_id")
+ ),
+ )
+ op.create_table(
+ "core_ferc__codes_accounts",
+ sa.Column(
+ "ferc_account_id",
+ sa.Text(),
+ nullable=False,
+ comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories.",
+ ),
+ sa.Column("ferc_account_description", sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint(
+ "ferc_account_id", name=op.f("pk_core_ferc__codes_accounts")
+ ),
+ )
+ op.create_table(
+ "core_pudl__codes_data_maturities",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_pudl__codes_data_maturities")
+ ),
+ )
+ op.create_table(
+ "core_pudl__codes_datasources",
+ sa.Column(
+ "datasource",
+ sa.Enum(
+ "censusdp1tract",
+ "eia176",
+ "eia860",
+ "eia860m",
+ "eia861",
+ "eia923",
+ "eia_bulk_elec",
+ "eiawater",
+ "epacems",
+ "core_epa__assn_epacamd_eia",
+ "ferc1",
+ "ferc2",
+ "ferc6",
+ "ferc60",
+ "ferc714",
+ "ferceqr",
+ "mshamines",
+ "phmsagas",
+ "pudl",
+ ),
+ nullable=False,
+ comment="Code identifying a dataset available within PUDL.",
+ ),
+ sa.Column(
+ "partitions",
+ sa.Text(),
+ nullable=True,
+ comment="The data parititions used to generate this instance of the database.",
+ ),
+ sa.Column(
+ "doi",
+ sa.Text(),
+ nullable=True,
+ comment="Unique digitial object identifier of Zenodo archive.",
+ ),
+ sa.Column(
+ "pudl_version",
+ sa.Text(),
+ nullable=True,
+ comment="The version of PUDL used to generate this database.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "datasource", name=op.f("pk_core_pudl__codes_datasources")
+ ),
+ )
+ op.create_table(
+ "core_pudl__codes_subdivisions",
+ sa.Column(
+ "country_code",
+ sa.Enum("CAN", "USA"),
+ nullable=False,
+ comment="Three letter ISO-3166 country code (e.g. USA or CAN).",
+ ),
+ sa.Column(
+ "country_name",
+ sa.Text(),
+ nullable=True,
+ comment="Full country name (e.g. United States of America).",
+ ),
+ sa.Column(
+ "subdivision_code",
+ sa.Enum(
+ "MI",
+ "NV",
+ "DE",
+ "NY",
+ "GA",
+ "NL",
+ "ME",
+ "IL",
+ "WA",
+ "WY",
+ "NE",
+ "ON",
+ "MS",
+ "IN",
+ "AK",
+ "NS",
+ "VA",
+ "NH",
+ "HI",
+ "YT",
+ "NM",
+ "AL",
+ "PR",
+ "CO",
+ "NB",
+ "PA",
+ "AZ",
+ "SD",
+ "MP",
+ "GU",
+ "KY",
+ "MN",
+ "ND",
+ "OK",
+ "QC",
+ "TN",
+ "UT",
+ "TX",
+ "VT",
+ "WI",
+ "NU",
+ "LA",
+ "RI",
+ "CT",
+ "NC",
+ "WV",
+ "PE",
+ "CA",
+ "AR",
+ "MO",
+ "DC",
+ "IA",
+ "SC",
+ "MB",
+ "MD",
+ "NT",
+ "FL",
+ "MA",
+ "ID",
+ "BC",
+ "MT",
+ "SK",
+ "KS",
+ "AB",
+ "NJ",
+ "VI",
+ "AS",
+ "OH",
+ "OR",
+ ),
+ nullable=False,
+ comment="Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).",
+ ),
+ sa.Column(
+ "subdivision_name",
+ sa.Text(),
+ nullable=True,
+ comment="Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.",
+ ),
+ sa.Column(
+ "subdivision_type",
+ sa.Text(),
+ nullable=True,
+ comment="ISO-3166 political subdivision type. E.g. state, province, outlying_area.",
+ ),
+ sa.Column(
+ "timezone_approx",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.",
+ ),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column(
+ "division_name_us_census",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human readable name describing the US Census division.",
+ ),
+ sa.Column(
+ "division_code_us_census",
+ sa.Enum(
+ "SAT", "NEW", "ENC", "WNC", "MTN", "PCN", "WSC", "MAT", "PCC", "ESC"
+ ),
+ nullable=True,
+ comment="Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf",
+ ),
+ sa.Column(
+ "region_name_us_census",
+ sa.Text(),
+ nullable=True,
+ comment="Human-readable name of a US Census region.",
+ ),
+ sa.Column(
+ "is_epacems_state",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "country_code",
+ "subdivision_code",
+ name=op.f("pk_core_pudl__codes_subdivisions"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__entity_plants_pudl",
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_pudl",
+ sa.Text(),
+ nullable=True,
+ comment="Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_pudl", name=op.f("pk_core_pudl__entity_plants_pudl")
+ ),
+ )
+ op.create_table(
+ "core_pudl__entity_utilities_pudl",
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_pudl",
+ sa.Text(),
+ nullable=True,
+ comment="Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_pudl", name=op.f("pk_core_pudl__entity_utilities_pudl")
+ ),
+ )
+ op.create_table(
+ "out_eia861__compiled_geometry_balancing_authorities",
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "county_name_census",
+ sa.Text(),
+ nullable=True,
+ comment="County name as specified in Census DP1 Data.",
+ ),
+ sa.Column(
+ "population",
+ sa.Float(),
+ nullable=True,
+ comment="County population, sourced from Census DP1 data.",
+ ),
+ sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("county", sa.Text(), nullable=False, comment="County name."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_id_eia",
+ "report_date",
+ "county_id_fips",
+ "county",
+ name=op.f("pk_out_eia861__compiled_geometry_balancing_authorities"),
+ ),
+ )
+ op.create_table(
+ "out_eia861__compiled_geometry_utilities",
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "county_name_census",
+ sa.Text(),
+ nullable=True,
+ comment="County name as specified in Census DP1 Data.",
+ ),
+ sa.Column(
+ "population",
+ sa.Float(),
+ nullable=True,
+ comment="County population, sourced from Census DP1 data.",
+ ),
+ sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia",
+ "report_date",
+ "county_id_fips",
+ name=op.f("pk_out_eia861__compiled_geometry_utilities"),
+ ),
+ )
+ op.create_table(
+ "out_ferc714__hourly_predicted_state_demand",
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
+ sa.Column("demand_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "scaled_demand_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Estimated electricity demand scaled by the total sales within a state.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "state_id_fips",
+ "utc_datetime",
+ name=op.f("pk_out_ferc714__hourly_predicted_state_demand"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_heat_rate_by_unit",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ name=op.f("pk__out_eia__monthly_heat_rate_by_unit"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_emissions_control_equipment",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "emission_control_id_pudl",
+ sa.Float(),
+ nullable=False,
+ comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "emission_control_equipment_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Short code indicating the type of emission control equipment installed.",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "mercury_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Mercury control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "nox_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "particulate_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Particulate matter control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "so2_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "acid_gas_control",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
+ ),
+ sa.Column(
+ "emission_control_equipment_cost",
+ sa.Float(),
+ nullable=True,
+ comment="The total cost to install a piece of emission control equipment.",
+ ),
+ sa.Column(
+ "emission_control_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
+ ),
+ sa.Column(
+ "emission_control_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["emission_control_equipment_type_code"],
+ ["core_eia__codes_emission_control_equipment_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_year",
+ "plant_id_eia",
+ "emission_control_id_pudl",
+ name=op.f("pk_core_eia860__scd_emissions_control_equipment"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_utilities",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "plants_reported_owner",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_operator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_asset_manager",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_other_relationship",
+ sa.Boolean(),
+ nullable=True,
+ comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("attention_line", sa.Text(), nullable=True),
+ sa.Column("address_2", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="Four digit US Zip Code suffix.",
+ ),
+ sa.Column(
+ "contact_firstname",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_lastname",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_title",
+ sa.Text(),
+ nullable=True,
+ comment="Title of of utility contact 1.",
+ ),
+ sa.Column(
+ "phone_number",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 1.",
+ ),
+ sa.Column(
+ "phone_extension",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 1",
+ ),
+ sa.Column(
+ "contact_firstname_2",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_lastname_2",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_title_2",
+ sa.Text(),
+ nullable=True,
+ comment="Title of utility contact 2.",
+ ),
+ sa.Column(
+ "phone_number_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 2.",
+ ),
+ sa.Column(
+ "phone_extension_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 2",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", "report_date", name=op.f("pk_core_eia860__scd_utilities")
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_advanced_metering_infrastructure",
+ sa.Column("advanced_metering_infrastructure", sa.Integer(), nullable=True),
+ sa.Column("automated_meter_reading", sa.Integer(), nullable=True),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=False,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("daily_digital_access_customers", sa.Integer(), nullable=True),
+ sa.Column("direct_load_control_customers", sa.Integer(), nullable=True),
+ sa.Column("energy_served_ami_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("home_area_network", sa.Integer(), nullable=True),
+ sa.Column("non_amr_ami", sa.Integer(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_code_eia",
+ "customer_class",
+ "report_date",
+ "state",
+ "utility_id_eia",
+ name=op.f("pk_core_eia861__yearly_advanced_metering_infrastructure"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_response",
+ sa.Column("actual_peak_demand_savings_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=False,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("customer_incentives_cost", sa.Float(), nullable=True),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("energy_savings_mwh", sa.Float(), nullable=True),
+ sa.Column("other_costs", sa.Float(), nullable=True),
+ sa.Column("potential_peak_demand_savings_mw", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_code_eia",
+ "customer_class",
+ "report_date",
+ "state",
+ "utility_id_eia",
+ name=op.f("pk_core_eia861__yearly_demand_response"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_response_water_heater",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("water_heater", sa.Integer(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_code_eia",
+ "report_date",
+ "state",
+ "utility_id_eia",
+ name=op.f("pk_core_eia861__yearly_demand_response_water_heater"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_side_management_ee_dr",
+ sa.Column("annual_indirect_program_cost", sa.Float(), nullable=True),
+ sa.Column("annual_total_cost", sa.Float(), nullable=True),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "energy_efficiency_annual_actual_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("energy_efficiency_annual_cost", sa.Float(), nullable=True),
+ sa.Column("energy_efficiency_annual_effects_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "energy_efficiency_annual_incentive_payment", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "energy_efficiency_incremental_actual_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column(
+ "energy_efficiency_incremental_effects_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "load_management_annual_actual_peak_reduction_mw", sa.Float(), nullable=True
+ ),
+ sa.Column("load_management_annual_cost", sa.Float(), nullable=True),
+ sa.Column("load_management_annual_effects_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "load_management_annual_incentive_payment", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "load_management_annual_potential_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column(
+ "load_management_incremental_actual_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("load_management_incremental_effects_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "load_management_incremental_potential_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("price_responsiveness_customers", sa.Integer(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("time_responsiveness_customers", sa.Integer(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_side_management_misc",
+ sa.Column(
+ "energy_savings_estimates_independently_verified",
+ sa.Boolean(),
+ nullable=True,
+ ),
+ sa.Column("energy_savings_independently_verified", sa.Boolean(), nullable=True),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("major_program_changes", sa.Boolean(), nullable=True),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("price_responsive_programs", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("reported_as_another_company", sa.Text(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("time_responsive_programs", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_side_management_sales",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
+ sa.Column("sales_to_ultimate_consumers_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distributed_generation_fuel",
+ sa.Column(
+ "estimated_or_actual_fuel_data",
+ sa.Enum("estimated", "actual"),
+ nullable=True,
+ ),
+ sa.Column(
+ "fuel_class",
+ sa.Enum("gas", "oil", "other", "renewable", "water", "wind", "wood"),
+ nullable=True,
+ ),
+ sa.Column("fuel_pct", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distributed_generation_misc",
+ sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "distributed_generation_owned_capacity_mw", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "estimated_or_actual_capacity_data",
+ sa.Enum("estimated", "actual"),
+ nullable=True,
+ ),
+ sa.Column("generators_num_less_1_mw", sa.Float(), nullable=True),
+ sa.Column("generators_number", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("total_capacity_less_1_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distributed_generation_tech",
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "estimated_or_actual_tech_data",
+ sa.Enum("estimated", "actual"),
+ nullable=True,
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "tech_class",
+ sa.Enum(
+ "backup",
+ "chp_cogen",
+ "combustion_turbine",
+ "fuel_cell",
+ "hydro",
+ "internal_combustion",
+ "other",
+ "pv",
+ "steam",
+ "storage_pv",
+ "all_storage",
+ "total",
+ "virtual_pv",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distribution_systems",
+ sa.Column("circuits_with_voltage_optimization", sa.Integer(), nullable=True),
+ sa.Column("distribution_circuits", sa.Integer(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_dynamic_pricing",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("critical_peak_pricing", sa.Boolean(), nullable=True),
+ sa.Column("critical_peak_rebate", sa.Boolean(), nullable=True),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("real_time_pricing", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("time_of_use_pricing", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("variable_peak_pricing", sa.Boolean(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_energy_efficiency",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("customer_incentives_incremental_cost", sa.Float(), nullable=True),
+ sa.Column(
+ "customer_incentives_incremental_life_cycle_cost", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "customer_other_costs_incremental_life_cycle_cost",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("incremental_energy_savings_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "incremental_life_cycle_energy_savings_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "incremental_life_cycle_peak_reduction_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column("incremental_peak_reduction_mw", sa.Float(), nullable=True),
+ sa.Column("other_costs_incremental_cost", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("weighted_average_life_years", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_green_pricing",
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("green_pricing_revenue", sa.Float(), nullable=True),
+ sa.Column("rec_revenue", sa.Float(), nullable=True),
+ sa.Column("rec_sales_mwh", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_mergers",
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("merge_address", sa.Text(), nullable=True),
+ sa.Column("merge_city", sa.Text(), nullable=True),
+ sa.Column("merge_company", sa.Text(), nullable=True),
+ sa.Column("merge_date", sa.Date(), nullable=True),
+ sa.Column(
+ "merge_state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.",
+ ),
+ sa.Column("new_parent", sa.Text(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "zip_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="Four digit US Zip Code suffix.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_net_metering_customer_fuel_class",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("energy_displaced_mwh", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column("sold_to_utility_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "tech_class",
+ sa.Enum(
+ "backup",
+ "chp_cogen",
+ "combustion_turbine",
+ "fuel_cell",
+ "hydro",
+ "internal_combustion",
+ "other",
+ "pv",
+ "steam",
+ "storage_pv",
+ "all_storage",
+ "total",
+ "virtual_pv",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_net_metering_misc",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_non_net_metering_customer_fuel_class",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "tech_class",
+ sa.Enum(
+ "backup",
+ "chp_cogen",
+ "combustion_turbine",
+ "fuel_cell",
+ "hydro",
+ "internal_combustion",
+ "other",
+ "pv",
+ "steam",
+ "storage_pv",
+ "all_storage",
+ "total",
+ "virtual_pv",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_non_net_metering_misc",
+ sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("generators_number", sa.Float(), nullable=True),
+ sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("utility_owned_capacity_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_operational_data_misc",
+ sa.Column("consumed_by_facility_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "consumed_by_respondent_without_charge_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "data_observed",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the value observed (True) or imputed (False).",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("exchange_energy_delivered_mwh", sa.Float(), nullable=True),
+ sa.Column("exchange_energy_received_mwh", sa.Float(), nullable=True),
+ sa.Column("furnished_without_charge_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column("net_power_exchanged_mwh", sa.Float(), nullable=True),
+ sa.Column("net_wheeled_power_mwh", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("retail_sales_mwh", sa.Float(), nullable=True),
+ sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("summer_peak_demand_mw", sa.Float(), nullable=True),
+ sa.Column("total_disposition_mwh", sa.Float(), nullable=True),
+ sa.Column("total_energy_losses_mwh", sa.Float(), nullable=True),
+ sa.Column("total_sources_mwh", sa.Float(), nullable=True),
+ sa.Column("transmission_by_other_losses_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("wheeled_power_delivered_mwh", sa.Float(), nullable=True),
+ sa.Column("wheeled_power_received_mwh", sa.Float(), nullable=True),
+ sa.Column("wholesale_power_purchases_mwh", sa.Float(), nullable=True),
+ sa.Column("winter_peak_demand_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_operational_data_revenue",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("revenue", sa.Float(), nullable=True),
+ sa.Column(
+ "revenue_class",
+ sa.Enum(
+ "credits_or_adjustments",
+ "delivery_customers",
+ "other",
+ "retail_sales",
+ "sales_for_resale",
+ "total",
+ "transmission",
+ "unbundled",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_reliability",
+ sa.Column(
+ "caidi_w_major_event_days_minus_loss_of_service_minutes",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("caidi_w_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column("caidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("highest_distribution_voltage_kv", sa.Float(), nullable=True),
+ sa.Column("inactive_accounts_included", sa.Boolean(), nullable=True),
+ sa.Column("momentary_interruption_definition", sa.Text(), nullable=True),
+ sa.Column("outages_recorded_automatically", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "saidi_w_major_event_days_minus_loss_of_service_minutes",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("saidi_w_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column("saidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column("saifi_w_major_event_days_customers", sa.Float(), nullable=True),
+ sa.Column(
+ "saifi_w_major_event_days_minus_loss_of_service_customers",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("saifi_wo_major_event_days_customers", sa.Float(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "standard", sa.Enum("ieee_standard", "other_standard"), nullable=True
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["momentary_interruption_definition"],
+ ["core_eia__codes_momentary_interruptions.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_sales",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=False,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "business_model", sa.Enum("retail", "energy_services"), nullable=False
+ ),
+ sa.Column(
+ "data_observed",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the value observed (True) or imputed (False).",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column(
+ "service_type", sa.Enum("bundled", "energy", "delivery"), nullable=False
+ ),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "sales_revenue",
+ sa.Float(),
+ nullable=True,
+ comment="Revenue from electricity sold.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia",
+ "state",
+ "report_date",
+ "balancing_authority_code_eia",
+ "customer_class",
+ "business_model",
+ "service_type",
+ name=op.f("pk_core_eia861__yearly_sales"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_service_territory",
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "utility_id_eia",
+ "county_id_fips",
+ name=op.f("pk_core_eia861__yearly_service_territory"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_utility_data_misc",
+ sa.Column("alternative_fuel_vehicle_2_activity", sa.Boolean(), nullable=True),
+ sa.Column("alternative_fuel_vehicle_activity", sa.Boolean(), nullable=True),
+ sa.Column("bundled_activity", sa.Boolean(), nullable=True),
+ sa.Column("buying_distribution_activity", sa.Boolean(), nullable=True),
+ sa.Column("buying_transmission_activity", sa.Boolean(), nullable=True),
+ sa.Column("distribution_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("generation_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("operates_generating_plant", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("retail_marketing_activity", sa.Boolean(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("transmission_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("wholesale_marketing_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_utility_data_nerc",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "nerc_regions_of_operation",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_utility_data_rto",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "rtos_of_operation",
+ sa.Enum("caiso", "ercot", "isone", "miso", "nyiso", "other", "pjm", "spp"),
+ nullable=True,
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia923__entity_coalmine",
+ sa.Column(
+ "mine_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="Dynamically assigned PUDL mine identifier.",
+ ),
+ sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
+ sa.Column(
+ "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "mine_id_msha",
+ sa.Integer(),
+ nullable=True,
+ comment="MSHA issued mine identifier.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mine_type_code"],
+ ["core_eia__codes_coalmine_types.code"],
+ name=op.f(
+ "fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "mine_id_pudl", name=op.f("pk_core_eia923__entity_coalmine")
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_generation_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_code_aer",
+ sa.Text(),
+ nullable=True,
+ comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["fuel_type_code_aer"],
+ ["core_eia__codes_fuel_types_aer.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_core_eia923__monthly_generation_fuel"),
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_generation_fuel_nuclear",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "nuclear_unit_id",
+ sa.Text(),
+ nullable=False,
+ comment="For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_code_aer",
+ sa.Text(),
+ nullable=True,
+ comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["fuel_type_code_aer"],
+ ["core_eia__codes_fuel_types_aer.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "nuclear_unit_id",
+ "energy_source_code",
+ "prime_mover_code",
+ name=op.f("pk_core_eia923__monthly_generation_fuel_nuclear"),
+ ),
+ )
+ op.create_table(
+ "core_eia__entity_boilers",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "boiler_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of boiler manufacturer.",
+ ),
+ sa.Column(
+ "boiler_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for boiler manufacturer.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "boiler_id", name=op.f("pk_core_eia__entity_boilers")
+ ),
+ )
+ op.create_table(
+ "core_eia__entity_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "generator_id", name=op.f("pk_core_eia__entity_generators")
+ ),
+ )
+ op.create_table(
+ "core_ferc714__hourly_demand_pa",
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "America/New_York",
+ "America/Chicago",
+ "America/Denver",
+ "America/Los_Angeles",
+ "America/Anchorage",
+ "Pacific/Honolulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column("demand_mwh", sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["respondent_id_ferc714"],
+ ["core_ferc714__respondent_id.respondent_id_ferc714"],
+ name=op.f(
+ "fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "respondent_id_ferc714",
+ "utc_datetime",
+ name=op.f("pk_core_ferc714__hourly_demand_pa"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_plants_eia",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", name=op.f("pk_core_pudl__assn_plants_eia")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_eia",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", name=op.f("pk_core_pudl__assn_utilities_eia")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_ferc1",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1", name=op.f("pk_core_pudl__assn_utilities_ferc1")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_plants",
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_pudl",
+ "plant_id_pudl",
+ name=op.f("pk_core_pudl__assn_utilities_plants"),
+ ),
+ )
+ op.create_table(
+ "out_eia860__yearly_emissions_control_equipment",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "emission_control_id_pudl",
+ sa.Float(),
+ nullable=False,
+ comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "emission_control_equipment_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Short code indicating the type of emission control equipment installed.",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "mercury_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Mercury control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "nox_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "particulate_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Particulate matter control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "so2_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "acid_gas_control",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
+ ),
+ sa.Column(
+ "emission_control_equipment_cost",
+ sa.Float(),
+ nullable=True,
+ comment="The total cost to install a piece of emission control equipment.",
+ ),
+ sa.Column(
+ "emission_control_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
+ ),
+ sa.Column(
+ "emission_control_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["emission_control_equipment_type_code"],
+ ["core_eia__codes_emission_control_equipment_types.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_year",
+ "plant_id_eia",
+ "emission_control_id_pudl",
+ name=op.f("pk_out_eia860__yearly_emissions_control_equipment"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__fuel_receipts_costs",
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "contract_type_code",
+ sa.Enum("S", "C", "NC", "T"),
+ nullable=True,
+ comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
+ ),
+ sa.Column(
+ "contract_expiration_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date contract expires.Format: MMYY.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=True,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_group_code",
+ sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
+ nullable=True,
+ comment="Fuel groups used in the Electric Power Monthly",
+ ),
+ sa.Column(
+ "supplier_name",
+ sa.Text(),
+ nullable=True,
+ comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "bulk_agg_fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column(
+ "primary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the longest distance transported.",
+ ),
+ sa.Column(
+ "secondary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the second longest distance transported.",
+ ),
+ sa.Column(
+ "natural_gas_transport_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natural gas transportation service.",
+ ),
+ sa.Column(
+ "natural_gas_delivery_contract_type_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natrual gas delivery service:",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "mine_id_msha",
+ sa.Integer(),
+ nullable=True,
+ comment="MSHA issued mine identifier.",
+ ),
+ sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
+ sa.Column(
+ "mine_state",
+ sa.Text(),
+ nullable=True,
+ comment="State where the coal mine is located. Two letter abbreviation.",
+ ),
+ sa.Column(
+ "coalmine_county_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.",
+ ),
+ sa.Column(
+ "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
+ ),
+ sa.ForeignKeyConstraint(
+ ["contract_type_code"],
+ ["core_eia__codes_contract_types.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mine_type_code"],
+ ["core_eia__codes_coalmine_types.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["primary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["secondary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__generation_fuel_combined",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_code_aer",
+ sa.Text(),
+ nullable=True,
+ comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["fuel_type_code_aer"],
+ ["core_eia__codes_fuel_types_aer.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_out_eia923__generation_fuel_combined"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_fuel_receipts_costs",
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_combined",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_out_eia923__monthly_generation_fuel_combined"),
+ ),
+ )
+ op.create_table(
+ "out_ferc714__respondents_with_fips",
+ sa.Column("eia_code", sa.Integer(), nullable=True),
+ sa.Column(
+ "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
+ ),
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=True),
+ sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["respondent_id_ferc714"],
+ ["core_ferc714__respondent_id.respondent_id_ferc714"],
+ name=op.f(
+ "fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc714__summarized_demand",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
+ sa.Column("demand_annual_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "population",
+ sa.Float(),
+ nullable=True,
+ comment="County population, sourced from Census DP1 data.",
+ ),
+ sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
+ sa.Column(
+ "population_density_km2",
+ sa.Float(),
+ nullable=True,
+ comment="Average population per sq. km area of a service territory.",
+ ),
+ sa.Column(
+ "demand_annual_per_capita_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Per-capita annual demand, averaged using Census county-level population estimates.",
+ ),
+ sa.Column(
+ "demand_density_mwh_km2",
+ sa.Float(),
+ nullable=True,
+ comment="Annual demand per km2 of a given service territory.",
+ ),
+ sa.Column("eia_code", sa.Integer(), nullable=True),
+ sa.Column(
+ "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
+ ),
+ sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["respondent_id_ferc714"],
+ ["core_ferc714__respondent_id.respondent_id_ferc714"],
+ name=op.f(
+ "fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "respondent_id_ferc714",
+ "report_date",
+ name=op.f("pk_out_ferc714__summarized_demand"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_capacity_factor_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_capacity_factor_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_derived_generator_attributes",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_derived_generator_attributes"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_fuel_cost_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_fuel_cost_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_heat_rate_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_heat_rate_by_generator"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_plants",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "ash_impoundment",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
+ ),
+ sa.Column(
+ "ash_impoundment_lined",
+ sa.Boolean(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, is the impoundment lined?",
+ ),
+ sa.Column(
+ "ash_impoundment_status",
+ sa.Text(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "datum",
+ sa.Text(),
+ nullable=True,
+ comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
+ ),
+ sa.Column(
+ "energy_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility has energy storage capabilities.",
+ ),
+ sa.Column(
+ "ferc_cogen_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_cogen_status",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
+ ),
+ sa.Column(
+ "ferc_small_power_producer_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_small_power_producer",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "grid_voltage_1_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_2_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_3_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "iso_rto_code",
+ sa.Text(),
+ nullable=True,
+ comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
+ ),
+ sa.Column(
+ "liquefied_natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_local_distribution_company",
+ sa.Text(),
+ nullable=True,
+ comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
+ ),
+ sa.Column(
+ "natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have on-site storage of natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_1",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_2",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_3",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "net_metering",
+ sa.Boolean(),
+ nullable=True,
+ comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
+ ),
+ sa.Column(
+ "pipeline_notes",
+ sa.Text(),
+ nullable=True,
+ comment="Additional owner or operator of natural gas pipeline.",
+ ),
+ sa.Column(
+ "primary_purpose_id_naics",
+ sa.Integer(),
+ nullable=True,
+ comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
+ ),
+ sa.Column(
+ "regulatory_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the plant is regulated or non-regulated.",
+ ),
+ sa.Column(
+ "reporting_frequency_code",
+ sa.Enum("A", "AM", "M"),
+ nullable=True,
+ comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
+ ),
+ sa.Column(
+ "sector_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "sector_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "service_area",
+ sa.Text(),
+ nullable=True,
+ comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_id",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_state",
+ sa.Text(),
+ nullable=True,
+ comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "water_source",
+ sa.Text(),
+ nullable=True,
+ comment="Name of water source associated with the plant.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["balancing_authority_code_eia"],
+ ["core_eia__codes_balancing_authorities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["reporting_frequency_code"],
+ ["core_eia__codes_reporting_frequencies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["sector_id_eia"],
+ ["core_eia__codes_sector_consolidated.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "report_date", name=op.f("pk_core_eia860__scd_plants")
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_boiler_fuel",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_core_eia923__monthly_boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_fuel_receipts_costs",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "contract_type_code",
+ sa.Enum("S", "C", "NC", "T"),
+ nullable=True,
+ comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
+ ),
+ sa.Column(
+ "contract_expiration_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date contract expires.Format: MMYY.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=True,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_group_code",
+ sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
+ nullable=True,
+ comment="Fuel groups used in the Electric Power Monthly",
+ ),
+ sa.Column(
+ "mine_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL mine identifier.",
+ ),
+ sa.Column(
+ "supplier_name",
+ sa.Text(),
+ nullable=True,
+ comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "primary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the longest distance transported.",
+ ),
+ sa.Column(
+ "secondary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the second longest distance transported.",
+ ),
+ sa.Column(
+ "natural_gas_transport_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natural gas transportation service.",
+ ),
+ sa.Column(
+ "natural_gas_delivery_contract_type_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natrual gas delivery service:",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["contract_type_code"],
+ ["core_eia__codes_contract_types.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mine_id_pudl"],
+ ["core_eia923__entity_coalmine.mine_id_pudl"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["primary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["secondary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_generation",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_core_eia923__monthly_generation"),
+ ),
+ )
+ op.create_table(
+ "core_epa__assn_epacamd_eia",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_epa",
+ sa.Integer(),
+ nullable=True,
+ comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
+ ),
+ sa.Column(
+ "emissions_unit_id_epa",
+ sa.Text(),
+ nullable=True,
+ comment="Emissions (smokestack) unit monitored by EPA CEMS.",
+ ),
+ sa.Column(
+ "generator_id_epa",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID used by the EPA.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=True, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_balance_sheet_assets",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "asset_type",
+ name=op.f("pk_core_ferc1__yearly_balance_sheet_assets"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_balance_sheet_liabilities",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "liability_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "liability_type",
+ name=op.f("pk_core_ferc1__yearly_balance_sheet_liabilities"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_cash_flows",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "amount_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "amount",
+ sa.Float(),
+ nullable=True,
+ comment="Reported amount of dollars. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_cash_flows_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "amount_type",
+ name=op.f("pk_core_ferc1__yearly_cash_flows"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_depreciation_amortization_summary",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "ferc_account_label",
+ name=op.f("pk_core_ferc1__yearly_depreciation_amortization_summary"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electric_energy_dispositions",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_disposition_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_disposition_type",
+ name=op.f("pk_core_ferc1__yearly_electric_energy_dispositions"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electric_energy_sources",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_source_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_source_type",
+ name=op.f("pk_core_ferc1__yearly_electric_energy_sources"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electric_operating_expenses",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "expense_type", sa.Text(), nullable=False, comment="The type of expense."
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "expense_type",
+ name=op.f("pk_core_ferc1__yearly_electric_operating_expenses"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electric_operating_revenues",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "revenue_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of revenues.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "revenue_type",
+ name=op.f("pk_core_ferc1__yearly_electric_operating_revenues"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electric_plant_depreciation_changes",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "depreciation_type",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_core_ferc1__yearly_electric_plant_depreciation_changes"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electric_plant_depreciation_functional",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=True,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_core_ferc1__yearly_electric_plant_depreciation_functional"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_electricity_sales_by_rate_schedule",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "rate_schedule_type",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization of rate schedule type.",
+ ),
+ sa.Column(
+ "billing_status",
+ sa.Text(),
+ nullable=True,
+ comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
+ ),
+ sa.Column(
+ "rate_schedule_description",
+ sa.Text(),
+ nullable=True,
+ comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
+ ),
+ sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_income_statement",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "income_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of income reported in income_statement_ferc1 table.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "income_type",
+ name=op.f("pk_core_ferc1__yearly_income_statement"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_other_regulatory_liabilities",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "increase_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The increase during the reporting period of other regulatory liabilities.",
+ ),
+ sa.Column(
+ "account_detail",
+ sa.Text(),
+ nullable=True,
+ comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
+ ),
+ sa.Column(
+ "decrease_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The decrease during the reporting period of other regulatory liabilities.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_plant_in_service",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "additions",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of acquisition of items classified within the account.",
+ ),
+ sa.Column(
+ "retirements",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of disposal of items classified within the account.",
+ ),
+ sa.Column(
+ "adjustments",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of adjustments to the account.",
+ ),
+ sa.Column(
+ "transfers",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of transfers into (out of) the account.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "ferc_account_label",
+ name=op.f("pk_core_ferc1__yearly_plant_in_service"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_purchased_power_and_exchanges",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "seller_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the seller, or the other party in an exchange transaction.",
+ ),
+ sa.Column(
+ "purchase_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
+ ),
+ sa.Column(
+ "tariff",
+ sa.Text(),
+ nullable=True,
+ comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
+ ),
+ sa.Column(
+ "billing_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
+ ),
+ sa.Column(
+ "non_coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
+ ),
+ sa.Column(
+ "coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
+ ),
+ sa.Column(
+ "purchased_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
+ ),
+ sa.Column(
+ "purchased_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for energy storage.",
+ ),
+ sa.Column(
+ "purchased_other_than_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for other than energy storage.",
+ ),
+ sa.Column(
+ "received_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "delivered_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
+ ),
+ sa.Column(
+ "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
+ ),
+ sa.Column(
+ "other_charges",
+ sa.Float(),
+ nullable=True,
+ comment="Other charges, including out-of-period adjustments (USD).",
+ ),
+ sa.Column(
+ "total_settlement",
+ sa.Float(),
+ nullable=True,
+ comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["purchase_type_code"],
+ ["core_ferc1__codes_power_purchase_types.code"],
+ name=op.f(
+ "fk_core_ferc1__yearly_purchased_power_and_exchanges_purchase_type_code_core_ferc1__codes_power_purchase_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_purchased_power_and_exchanges_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_retained_earnings",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "earnings_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of earnings.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "earnings_type",
+ name=op.f("pk_core_ferc1__yearly_retained_earnings"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_transmission_lines",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "start_point",
+ sa.Text(),
+ nullable=True,
+ comment="The starting point of a transmission line.",
+ ),
+ sa.Column(
+ "end_point",
+ sa.Text(),
+ nullable=True,
+ comment="The end point of a transmission line.",
+ ),
+ sa.Column(
+ "operating_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
+ ),
+ sa.Column(
+ "designed_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
+ ),
+ sa.Column(
+ "supporting_structure_type",
+ sa.Text(),
+ nullable=True,
+ comment="Supporting structure of the transmission line.",
+ ),
+ sa.Column(
+ "transmission_line_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
+ ),
+ sa.Column(
+ "transmission_line_and_structures_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
+ ),
+ sa.Column(
+ "num_transmission_circuits",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of circuits in a transmission line.",
+ ),
+ sa.Column(
+ "conductor_size_and_material",
+ sa.Text(),
+ nullable=True,
+ comment="Size of transmission conductor and material of the transmission line.",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of Land and land rights for the transmission line.",
+ ),
+ sa.Column(
+ "capex_other",
+ sa.Float(),
+ nullable=True,
+ comment="Construction and other costs for the transmission line.",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total costs for the transmission line.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Operating expenses for the transmission line.",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance expenses for the transmission line.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Rent expenses for the transmission line.",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Overall expenses for the transmission line.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_transmission_lines_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "utility_type_other",
+ sa.Text(),
+ nullable=True,
+ comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. This field is reported only in the DBF reporting years (1994-2020).",
+ ),
+ sa.Column(
+ "utility_plant_asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_utility_plant_and_depreciation_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "utility_plant_asset_type",
+ name=op.f("pk_core_ferc1__yearly_utility_plant_and_depreciation_summary"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_plants_ferc1",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "plant_name_ferc1",
+ name=op.f("pk_core_pudl__assn_plants_ferc1"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_ferc1_dbf",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_ferc1_dbf",
+ sa.Integer(),
+ nullable=False,
+ comment="FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1_dbf", name=op.f("pk_core_pudl__assn_utilities_ferc1_dbf")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_ferc1_xbrl",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_ferc1_xbrl",
+ sa.Text(),
+ nullable=False,
+ comment="FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1_xbrl",
+ name=op.f("pk_core_pudl__assn_utilities_ferc1_xbrl"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__boiler_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_out_eia923__boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__generation",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_out_eia923__generation"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_boiler_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_out_eia923__monthly_boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_out_eia923__monthly_generation"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia923__monthly_generation_fuel_by_generator"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_by_generator_energy_source",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f(
+ "pk_out_eia923__monthly_generation_fuel_by_generator_energy_source"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia__monthly_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia__monthly_generators"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_utilities",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "plants_reported_owner",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_operator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_asset_manager",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_other_relationship",
+ sa.Boolean(),
+ nullable=True,
+ comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("attention_line", sa.Text(), nullable=True),
+ sa.Column("address_2", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="Four digit US Zip Code suffix.",
+ ),
+ sa.Column(
+ "contact_firstname",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_lastname",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_title",
+ sa.Text(),
+ nullable=True,
+ comment="Title of of utility contact 1.",
+ ),
+ sa.Column(
+ "phone_number",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 1.",
+ ),
+ sa.Column(
+ "phone_extension",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 1",
+ ),
+ sa.Column(
+ "contact_firstname_2",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_lastname_2",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_title_2",
+ sa.Text(),
+ nullable=True,
+ comment="Title of utility contact 2.",
+ ),
+ sa.Column(
+ "phone_number_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 2.",
+ ),
+ sa.Column(
+ "phone_extension_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 2",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", "report_date", name=op.f("pk_out_eia__yearly_utilities")
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_balance_sheet_assets",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "asset_type",
+ name=op.f("pk_out_ferc1__yearly_balance_sheet_assets"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_balance_sheet_liabilities",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "liability_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "liability_type",
+ name=op.f("pk_out_ferc1__yearly_balance_sheet_liabilities"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_cash_flows",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "amount_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "amount",
+ sa.Float(),
+ nullable=True,
+ comment="Reported amount of dollars. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_cash_flows_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_cash_flows_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "amount_type",
+ name=op.f("pk_out_ferc1__yearly_cash_flows"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_depreciation_amortization_summary",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "ferc_account_label",
+ name=op.f("pk_out_ferc1__yearly_depreciation_amortization_summary"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electric_energy_dispositions",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_disposition_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_disposition_type",
+ name=op.f("pk_out_ferc1__yearly_electric_energy_dispositions"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electric_energy_sources",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_source_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_source_type",
+ name=op.f("pk_out_ferc1__yearly_electric_energy_sources"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electric_operating_expenses",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "expense_type", sa.Text(), nullable=False, comment="The type of expense."
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "expense_type",
+ name=op.f("pk_out_ferc1__yearly_electric_operating_expenses"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electric_operating_revenues",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "revenue_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of revenues.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "revenue_type",
+ name=op.f("pk_out_ferc1__yearly_electric_operating_revenues"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electric_plant_depreciation_changes",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "depreciation_type",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_out_ferc1__yearly_electric_plant_depreciation_changes"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electric_plant_depreciation_functional",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=True,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_out_ferc1__yearly_electric_plant_depreciation_functional"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_electricity_sales_by_rate_schedule",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "rate_schedule_type",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization of rate schedule type.",
+ ),
+ sa.Column(
+ "billing_status",
+ sa.Text(),
+ nullable=True,
+ comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
+ ),
+ sa.Column(
+ "rate_schedule_description",
+ sa.Text(),
+ nullable=True,
+ comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
+ ),
+ sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_income_statement",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "income_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of income reported in income_statement_ferc1 table.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_income_statement_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "income_type",
+ name=op.f("pk_out_ferc1__yearly_income_statement"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_other_regulatory_liabilities",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "increase_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The increase during the reporting period of other regulatory liabilities.",
+ ),
+ sa.Column(
+ "account_detail",
+ sa.Text(),
+ nullable=True,
+ comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
+ ),
+ sa.Column(
+ "decrease_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The decrease during the reporting period of other regulatory liabilities.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_plant_in_service",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "additions",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of acquisition of items classified within the account.",
+ ),
+ sa.Column(
+ "adjustments",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of adjustments to the account.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "retirements",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of disposal of items classified within the account.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "transfers",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of transfers into (out of) the account.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "ferc_account_label",
+ name=op.f("pk_out_ferc1__yearly_plant_in_service"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_purchased_power_and_exchanges",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "seller_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the seller, or the other party in an exchange transaction.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "billing_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
+ ),
+ sa.Column(
+ "coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
+ ),
+ sa.Column(
+ "delivered_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
+ ),
+ sa.Column(
+ "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
+ ),
+ sa.Column(
+ "non_coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
+ ),
+ sa.Column(
+ "other_charges",
+ sa.Float(),
+ nullable=True,
+ comment="Other charges, including out-of-period adjustments (USD).",
+ ),
+ sa.Column(
+ "purchase_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
+ ),
+ sa.Column(
+ "purchased_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
+ ),
+ sa.Column(
+ "purchased_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for energy storage.",
+ ),
+ sa.Column(
+ "purchased_other_than_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for other than energy storage.",
+ ),
+ sa.Column(
+ "received_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "tariff",
+ sa.Text(),
+ nullable=True,
+ comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
+ ),
+ sa.Column(
+ "total_settlement",
+ sa.Float(),
+ nullable=True,
+ comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["purchase_type_code"],
+ ["core_ferc1__codes_power_purchase_types.code"],
+ name=op.f(
+ "fk_out_ferc1__yearly_purchased_power_and_exchanges_purchase_type_code_core_ferc1__codes_power_purchase_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_purchased_power_and_exchanges_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_purchased_power_and_exchanges_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_retained_earnings",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "earnings_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of earnings.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "earnings_type",
+ name=op.f("pk_out_ferc1__yearly_retained_earnings"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_transmission_lines",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "start_point",
+ sa.Text(),
+ nullable=True,
+ comment="The starting point of a transmission line.",
+ ),
+ sa.Column(
+ "end_point",
+ sa.Text(),
+ nullable=True,
+ comment="The end point of a transmission line.",
+ ),
+ sa.Column(
+ "operating_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
+ ),
+ sa.Column(
+ "designed_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
+ ),
+ sa.Column(
+ "supporting_structure_type",
+ sa.Text(),
+ nullable=True,
+ comment="Supporting structure of the transmission line.",
+ ),
+ sa.Column(
+ "transmission_line_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
+ ),
+ sa.Column(
+ "transmission_line_and_structures_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
+ ),
+ sa.Column(
+ "num_transmission_circuits",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of circuits in a transmission line.",
+ ),
+ sa.Column(
+ "conductor_size_and_material",
+ sa.Text(),
+ nullable=True,
+ comment="Size of transmission conductor and material of the transmission line.",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_other",
+ sa.Float(),
+ nullable=True,
+ comment="Other costs associated with the plant (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_transmission_lines_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_transmission_lines_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_utility_plant_and_depreciation_summary",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "utility_type_other",
+ sa.Text(),
+ nullable=True,
+ comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. This field is reported only in the DBF reporting years (1994-2020).",
+ ),
+ sa.Column(
+ "utility_plant_asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_utility_plant_and_depreciation_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_utility_plant_and_depreciation_summary_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "utility_plant_asset_type",
+ name=op.f("pk_out_ferc1__yearly_utility_plant_and_depreciation_summary"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__plants_utilities",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "utility_id_eia",
+ name=op.f("pk__out_eia__plants_utilities"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_heat_rate_by_unit",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ name=op.f("pk__out_eia__yearly_heat_rate_by_unit"),
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_hydroelectric_plants",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_hydroelectric_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_hydroelectric_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_hydroelectric_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk__out_ferc1__yearly_hydroelectric_plants")
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_plants_utilities",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "plant_name_ferc1",
+ name=op.f("pk__out_ferc1__yearly_plants_utilities"),
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_pumped_storage_plants",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk__out_ferc1__yearly_pumped_storage_plants")
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_small_plants",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_small_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_small_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_small_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk__out_ferc1__yearly_small_plants")
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_steam_plants",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_annual_addition",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_addition_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_per_kw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per kw.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wo_retirement_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD) without retirements.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_fuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD) per megawatt-hour (Mwh).",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_nonfuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Investments in non-fuel production expenses per Mwh.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plants",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of electrical plant.",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_steam_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_steam_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk__out_ferc1__yearly_steam_plants")
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_boilers",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "boiler_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the boiler began or is planned to begin commercial operation.",
+ ),
+ sa.Column(
+ "boiler_status",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying boiler operational status.",
+ ),
+ sa.Column(
+ "boiler_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the boiler.",
+ ),
+ sa.Column(
+ "boiler_type",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
+ ),
+ sa.Column(
+ "firing_type_1",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_3",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_rate_using_coal_tons_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_oil_bbls_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_gas_mcf_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_other_fuels",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "waste_heat_input_mmbtu_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
+ ),
+ sa.Column(
+ "wet_dry_bottom",
+ sa.Text(),
+ nullable=True,
+ comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
+ ),
+ sa.Column(
+ "fly_ash_reinjection",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is capable of re-injecting fly ash.",
+ ),
+ sa.Column(
+ "hrsg",
+ sa.Boolean(),
+ nullable=True,
+ comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
+ ),
+ sa.Column(
+ "max_steam_flow_1000_lbs_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Maximum continuous steam flow at 100 percent load.",
+ ),
+ sa.Column(
+ "turndown_ratio",
+ sa.Float(),
+ nullable=True,
+ comment="The turndown ratio for the boiler.",
+ ),
+ sa.Column(
+ "efficiency_100pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "efficiency_50pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "air_flow_100pct_load_cubic_feet_per_minute",
+ sa.Float(),
+ nullable=True,
+ comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
+ ),
+ sa.Column(
+ "new_source_review",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is subject to New Source Review requirements.",
+ ),
+ sa.Column(
+ "new_source_review_date",
+ sa.Date(),
+ nullable=True,
+ comment="Month of issued New Source Review permit.",
+ ),
+ sa.Column(
+ "new_source_review_permit",
+ sa.Text(),
+ nullable=True,
+ comment="New Source Review permit number.",
+ ),
+ sa.Column(
+ "regulation_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
+ ),
+ sa.Column(
+ "regulation_so2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
+ ),
+ sa.Column(
+ "regulation_nox",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
+ ),
+ sa.Column(
+ "standard_particulate_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "standard_so2_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "standard_nox_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "unit_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "unit_so2",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "unit_nox",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "compliance_year_particulate",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
+ ),
+ sa.Column(
+ "compliance_year_nox",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
+ ),
+ sa.Column(
+ "compliance_year_so2",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "compliance_year_mercury",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_4",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_5",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_6",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of nitrogen oxide control manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code indicating the nitrogen oxide control burner manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control status code.",
+ ),
+ sa.Column(
+ "regulation_mercury",
+ sa.Text(),
+ nullable=True,
+ comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "standard_so2_percent_scrubbed",
+ sa.Float(),
+ nullable=True,
+ comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_status"],
+ ["core_eia__codes_boiler_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_type"],
+ ["core_eia__codes_boiler_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_1"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_2"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_3"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_4"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_5"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_6"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_status_code"],
+ ["core_eia__codes_nox_control_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_mercury"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_nox"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_particulate"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_so2"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_nox"],
+ ["core_eia__codes_nox_units.code"],
+ name=op.f("fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_particulate"],
+ ["core_eia__codes_particulate_units.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_so2"],
+ ["core_eia__codes_so2_units.code"],
+ name=op.f("fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["wet_dry_bottom"],
+ ["core_eia__codes_wet_dry_bottom.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "report_date",
+ name=op.f("pk_core_eia860__scd_boilers"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_core_eia860__scd_generators"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_steam_plants_fuel",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_units",
+ sa.Enum(
+ "mmbtu",
+ "gramsU",
+ "kg",
+ "mwhth",
+ "kgal",
+ "bbl",
+ "klbs",
+ "mcf",
+ "gal",
+ "mwdth",
+ "btu",
+ "ton",
+ ),
+ nullable=True,
+ comment="Reported unit of measure for fuel.",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_burned",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_delivered",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_steam_plants_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_hydroelectric_plants",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.Column(
+ "plant_type",
+ sa.Enum(
+ "hydro",
+ "storage",
+ "run_of_river_with_storage",
+ "na_category",
+ "run_of_river",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_hydroelectric_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_plants_pumped_storage",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_plants_small",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_plants_small_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_plants_steam",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "plant_type",
+ sa.Enum(
+ "internal_combustion",
+ "combustion_turbine",
+ "photovoltaic",
+ "solar_thermal",
+ "na_category",
+ "nuclear",
+ "steam",
+ "geothermal",
+ "combined_cycle",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_plants",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of electrical plant.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_fuel_receipts_costs",
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_combined",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_out_eia923__yearly_generation_fuel_combined"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_plants",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "ash_impoundment",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
+ ),
+ sa.Column(
+ "ash_impoundment_lined",
+ sa.Boolean(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, is the impoundment lined?",
+ ),
+ sa.Column(
+ "ash_impoundment_status",
+ sa.Text(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "datum",
+ sa.Text(),
+ nullable=True,
+ comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
+ ),
+ sa.Column(
+ "energy_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility has energy storage capabilities.",
+ ),
+ sa.Column(
+ "ferc_cogen_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_cogen_status",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
+ ),
+ sa.Column(
+ "ferc_small_power_producer_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_small_power_producer",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "grid_voltage_1_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_2_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_3_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "iso_rto_code",
+ sa.Text(),
+ nullable=True,
+ comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
+ ),
+ sa.Column(
+ "liquefied_natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_local_distribution_company",
+ sa.Text(),
+ nullable=True,
+ comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
+ ),
+ sa.Column(
+ "natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have on-site storage of natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_1",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_2",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_3",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "net_metering",
+ sa.Boolean(),
+ nullable=True,
+ comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
+ ),
+ sa.Column(
+ "pipeline_notes",
+ sa.Text(),
+ nullable=True,
+ comment="Additional owner or operator of natural gas pipeline.",
+ ),
+ sa.Column(
+ "primary_purpose_id_naics",
+ sa.Integer(),
+ nullable=True,
+ comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
+ ),
+ sa.Column(
+ "regulatory_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the plant is regulated or non-regulated.",
+ ),
+ sa.Column(
+ "reporting_frequency_code",
+ sa.Enum("A", "AM", "M"),
+ nullable=True,
+ comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
+ ),
+ sa.Column(
+ "sector_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "sector_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "service_area",
+ sa.Text(),
+ nullable=True,
+ comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_id",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_state",
+ sa.Text(),
+ nullable=True,
+ comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "water_source",
+ sa.Text(),
+ nullable=True,
+ comment="Name of water source associated with the plant.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia_consistent_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Percentage consistency of balancing authority code across entity records.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["balancing_authority_code_eia"],
+ ["core_eia__codes_balancing_authorities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f("fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["reporting_frequency_code"],
+ ["core_eia__codes_reporting_frequencies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["sector_id_eia"],
+ ["core_eia__codes_sector_consolidated.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "report_date", name=op.f("pk_out_eia__yearly_plants")
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_all_plants",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_annual_addition",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_addition_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_per_kw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per kw.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wo_retirement_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD) without retirements.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_nonfuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Investments in non-fuel production expenses per Mwh.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "ferc_license_id",
+ sa.Text(),
+ nullable=True,
+ comment="The FERC license ID of a project.",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk_out_ferc1__yearly_all_plants")
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_steam_plants_fuel",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_total_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of consumed fuel.",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_burned",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_delivered",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_units",
+ sa.Enum(
+ "mmbtu",
+ "gramsU",
+ "kg",
+ "mwhth",
+ "kgal",
+ "bbl",
+ "klbs",
+ "mcf",
+ "gal",
+ "mwdth",
+ "btu",
+ "ton",
+ ),
+ nullable=True,
+ comment="Reported unit of measure for fuel.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint("record_id", name=op.f("pk_out_ferc1__yearly_fuel")),
+ )
+ op.create_table(
+ "out_ferc1__yearly_steam_plants_fuel_by_plant",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "coal_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Coal cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "coal_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Coal heat content as a percentage of overall fuel heat content (mmBTU).",
+ ),
+ sa.Column(
+ "fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total fuel cost for plant (in $USD).",
+ ),
+ sa.Column(
+ "fuel_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total heat content for plant (in MMBtu).",
+ ),
+ sa.Column(
+ "gas_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Natural gas cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "gas_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Natural gas heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.Column(
+ "nuclear_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Nuclear cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "nuclear_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Nuclear heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.Column(
+ "oil_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Oil cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "oil_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Oil heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.Column(
+ "primary_fuel_by_cost",
+ sa.Text(),
+ nullable=True,
+ comment="Primary fuel for plant as a percentage of cost.",
+ ),
+ sa.Column(
+ "primary_fuel_by_mmbtu",
+ sa.Text(),
+ nullable=True,
+ comment="Primary fuel for plant as a percentage of heat content.",
+ ),
+ sa.Column(
+ "waste_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Waste-heat cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "waste_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_year",
+ "utility_id_ferc1",
+ "plant_name_ferc1",
+ name=op.f("pk_out_ferc1__yearly_steam_plants_fuel_by_plant"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_capacity_factor_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_capacity_factor_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_derived_generator_attributes",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_derived_generator_attributes"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_fuel_cost_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_fuel_cost_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_generators",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk__out_eia__yearly_generators"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_heat_rate_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_heat_rate_by_generator"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__assn_boiler_cooling",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "cooling_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="The cooling system identification number reported to EIA.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "boiler_id",
+ "cooling_id_eia",
+ name=op.f("pk_core_eia860__assn_boiler_cooling"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__assn_boiler_generator",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA-assigned unit identification code.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "boiler_generator_assn_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.",
+ ),
+ sa.Column(
+ "steam_plant_type_code",
+ sa.Integer(),
+ nullable=True,
+ comment="Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_generator_assn_type_code"],
+ ["core_eia__codes_boiler_generator_assn_types.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["steam_plant_type_code"],
+ ["core_eia__codes_steam_plant_types.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "generator_id",
+ "boiler_id",
+ name=op.f("pk_core_eia860__assn_boiler_generator"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__assn_boiler_stack_flue",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "stack_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.",
+ ),
+ sa.Column(
+ "flue_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.",
+ ),
+ sa.Column(
+ "stack_flue_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.",
+ ),
+ sa.Column(
+ "stack_flue_id_pudl",
+ sa.Text(),
+ nullable=False,
+ comment="A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "boiler_id",
+ "stack_flue_id_pudl",
+ name=op.f("pk_core_eia860__assn_boiler_stack_flue"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_ownership",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "owner_utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "owner_utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the EIA owner utility.",
+ ),
+ sa.Column(
+ "owner_state",
+ sa.Enum(
+ "MI",
+ "NV",
+ "DE",
+ "NY",
+ "GA",
+ "NL",
+ "ME",
+ "IL",
+ "WA",
+ "WY",
+ "NE",
+ "ON",
+ "MS",
+ "IN",
+ "AK",
+ "NS",
+ "VA",
+ "NH",
+ "HI",
+ "YT",
+ "NM",
+ "AL",
+ "PR",
+ "CO",
+ "NB",
+ "PA",
+ "AZ",
+ "SD",
+ "MP",
+ "GU",
+ "KY",
+ "MN",
+ "ND",
+ "OK",
+ "QC",
+ "TN",
+ "UT",
+ "TX",
+ "VT",
+ "WI",
+ "NU",
+ "LA",
+ "RI",
+ "CT",
+ "NC",
+ "WV",
+ "PE",
+ "CA",
+ "AR",
+ "MO",
+ "DC",
+ "IA",
+ "SC",
+ "MB",
+ "MD",
+ "NT",
+ "FL",
+ "MA",
+ "ID",
+ "BC",
+ "MT",
+ "SK",
+ "KS",
+ "AB",
+ "NJ",
+ "VI",
+ "AS",
+ "OH",
+ "OR",
+ ),
+ nullable=True,
+ comment="Two letter ISO-3166 political subdivision code.",
+ ),
+ sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
+ sa.Column(
+ "owner_country",
+ sa.Enum("CAN", "USA"),
+ nullable=True,
+ comment="Three letter ISO-3166 country code.",
+ ),
+ sa.Column(
+ "owner_street_address",
+ sa.Text(),
+ nullable=True,
+ comment="Steet address of owner.",
+ ),
+ sa.Column(
+ "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["owner_utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "owner_utility_id_eia",
+ name=op.f("pk_core_eia860__scd_ownership"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__yearly_boiler_emissions_control_equipment_assn",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "emission_control_id_type",
+ sa.Text(),
+ nullable=False,
+ comment="The type of emissions control id: so2, nox, particulate, or mercury.",
+ ),
+ sa.Column(
+ "emission_control_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "boiler_id",
+ "emission_control_id_type",
+ "emission_control_id_eia",
+ name=op.f("pk_core_eia860__yearly_boiler_emissions_control_equipment_assn"),
+ ),
+ )
+ op.create_table(
+ "mega_generators_eia",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out__yearly_plants_all_ferc1_plant_parts_eia",
+ sa.Column(
+ "record_id_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier for EIA plant parts analysis records.",
+ ),
+ sa.Column(
+ "match_type",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.",
+ ),
+ sa.Column(
+ "plant_name_ppe",
+ sa.Text(),
+ nullable=True,
+ comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
+ ),
+ sa.Column(
+ "plant_part",
+ sa.Enum(
+ "plant_technology",
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_prime_mover",
+ "plant_gen",
+ "plant",
+ "plant_match_ferc1",
+ "plant_ferc_acct",
+ "plant_operating_year",
+ ),
+ nullable=True,
+ comment="The part of the plant a record corresponds to.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "true_gran",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
+ ),
+ sa.Column(
+ "appro_part_label",
+ sa.Enum(
+ "plant_technology",
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_prime_mover",
+ "plant_gen",
+ "plant",
+ "plant_match_ferc1",
+ "plant_ferc_acct",
+ "plant_operating_year",
+ ),
+ nullable=True,
+ comment="Plant part of the associated true granularity record.",
+ ),
+ sa.Column(
+ "appro_record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA record ID of the associated true granularity record.",
+ ),
+ sa.Column(
+ "record_count",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "ownership_dupe",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether a plant part record has a duplicate record with different ownership status.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "total_fuel_cost_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "net_generation_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capacity_mw_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "total_mmbtu_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl_eia",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "installation_year_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "plant_part_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_annual_addition",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_addition_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_per_kw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per kw.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wo_retirement_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD) without retirements.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "construction_year_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_nonfuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Investments in non-fuel production expenses per Mwh.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "ferc_license_id",
+ sa.Text(),
+ nullable=True,
+ comment="The FERC license ID of a project.",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.Column(
+ "total_fuel_cost_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl_ferc1",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id_ferc1",
+ name=op.f("pk_out__yearly_plants_all_ferc1_plant_parts_eia"),
+ ),
+ )
+ op.create_table(
+ "out_eia860__yearly_ownership",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "owner_utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "owner_utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the EIA owner utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "owner_state",
+ sa.Enum(
+ "MI",
+ "NV",
+ "DE",
+ "NY",
+ "GA",
+ "NL",
+ "ME",
+ "IL",
+ "WA",
+ "WY",
+ "NE",
+ "ON",
+ "MS",
+ "IN",
+ "AK",
+ "NS",
+ "VA",
+ "NH",
+ "HI",
+ "YT",
+ "NM",
+ "AL",
+ "PR",
+ "CO",
+ "NB",
+ "PA",
+ "AZ",
+ "SD",
+ "MP",
+ "GU",
+ "KY",
+ "MN",
+ "ND",
+ "OK",
+ "QC",
+ "TN",
+ "UT",
+ "TX",
+ "VT",
+ "WI",
+ "NU",
+ "LA",
+ "RI",
+ "CT",
+ "NC",
+ "WV",
+ "PE",
+ "CA",
+ "AR",
+ "MO",
+ "DC",
+ "IA",
+ "SC",
+ "MB",
+ "MD",
+ "NT",
+ "FL",
+ "MA",
+ "ID",
+ "BC",
+ "MT",
+ "SK",
+ "KS",
+ "AB",
+ "NJ",
+ "VI",
+ "AS",
+ "OH",
+ "OR",
+ ),
+ nullable=True,
+ comment="Two letter ISO-3166 political subdivision code.",
+ ),
+ sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
+ sa.Column(
+ "owner_country",
+ sa.Enum("CAN", "USA"),
+ nullable=True,
+ comment="Three letter ISO-3166 country code.",
+ ),
+ sa.Column(
+ "owner_street_address",
+ sa.Text(),
+ nullable=True,
+ comment="Steet address of owner.",
+ ),
+ sa.Column(
+ "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["owner_utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "owner_utility_id_eia",
+ name=op.f("pk_out_eia860__yearly_ownership"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_boiler_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_out_eia923__yearly_boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_out_eia923__yearly_generation"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia923__yearly_generation_fuel_by_generator"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f(
+ "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=False,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ "utility_id_eia",
+ "ownership_record_type",
+ name=op.f(
+ "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_boilers",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "air_flow_100pct_load_cubic_feet_per_minute",
+ sa.Float(),
+ nullable=True,
+ comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
+ ),
+ sa.Column(
+ "boiler_fuel_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of boiler manufacturer.",
+ ),
+ sa.Column(
+ "boiler_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for boiler manufacturer.",
+ ),
+ sa.Column(
+ "boiler_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the boiler began or is planned to begin commercial operation.",
+ ),
+ sa.Column(
+ "boiler_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the boiler.",
+ ),
+ sa.Column(
+ "boiler_status",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying boiler operational status.",
+ ),
+ sa.Column(
+ "boiler_type",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "compliance_year_mercury",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
+ ),
+ sa.Column(
+ "compliance_year_nox",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
+ ),
+ sa.Column(
+ "compliance_year_particulate",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
+ ),
+ sa.Column(
+ "compliance_year_so2",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "efficiency_100pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "efficiency_50pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "firing_rate_using_coal_tons_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_gas_mcf_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_oil_bbls_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_other_fuels",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
+ ),
+ sa.Column(
+ "firing_type_1",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_3",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "fly_ash_reinjection",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is capable of re-injecting fly ash.",
+ ),
+ sa.Column(
+ "hrsg",
+ sa.Boolean(),
+ nullable=True,
+ comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "max_steam_flow_1000_lbs_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Maximum continuous steam flow at 100 percent load.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_4",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_5",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_6",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "new_source_review",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is subject to New Source Review requirements.",
+ ),
+ sa.Column(
+ "new_source_review_date",
+ sa.Date(),
+ nullable=True,
+ comment="Month of issued New Source Review permit.",
+ ),
+ sa.Column(
+ "new_source_review_permit",
+ sa.Text(),
+ nullable=True,
+ comment="New Source Review permit number.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of nitrogen oxide control manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code indicating the nitrogen oxide control burner manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control status code.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "regulation_mercury",
+ sa.Text(),
+ nullable=True,
+ comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
+ ),
+ sa.Column(
+ "regulation_nox",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
+ ),
+ sa.Column(
+ "regulation_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
+ ),
+ sa.Column(
+ "regulation_so2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "standard_nox_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "standard_particulate_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "standard_so2_percent_scrubbed",
+ sa.Float(),
+ nullable=True,
+ comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "standard_so2_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "turndown_ratio",
+ sa.Float(),
+ nullable=True,
+ comment="The turndown ratio for the boiler.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "unit_nox",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "unit_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "unit_so2",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "waste_heat_input_mmbtu_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
+ ),
+ sa.Column(
+ "wet_dry_bottom",
+ sa.Text(),
+ nullable=True,
+ comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_status"],
+ ["core_eia__codes_boiler_status.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_type"],
+ ["core_eia__codes_boiler_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_1"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_2"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_3"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_4"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_5"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_6"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_status_code"],
+ ["core_eia__codes_nox_control_status.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_mercury"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_nox"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_particulate"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_so2"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_nox"],
+ ["core_eia__codes_nox_units.code"],
+ name=op.f("fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_particulate"],
+ ["core_eia__codes_particulate_units.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_so2"],
+ ["core_eia__codes_so2_units.code"],
+ name=op.f("fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["wet_dry_bottom"],
+ ["core_eia__codes_wet_dry_bottom.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "report_date",
+ name=op.f("pk_out_eia__yearly_boilers"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia__yearly_generators"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_generators_by_ownership",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_plant_parts",
+ sa.Column(
+ "record_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier for EIA plant parts analysis records.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_part",
+ sa.Enum(
+ "plant_technology",
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_prime_mover",
+ "plant_gen",
+ "plant",
+ "plant_match_ferc1",
+ "plant_ferc_acct",
+ "plant_operating_year",
+ ),
+ nullable=True,
+ comment="The part of the plant a record corresponds to.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "true_gran",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
+ ),
+ sa.Column(
+ "appro_part_label",
+ sa.Enum(
+ "plant_technology",
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_prime_mover",
+ "plant_gen",
+ "plant",
+ "plant_match_ferc1",
+ "plant_ferc_acct",
+ "plant_operating_year",
+ ),
+ nullable=True,
+ comment="Plant part of the associated true granularity record.",
+ ),
+ sa.Column(
+ "appro_record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA record ID of the associated true granularity record.",
+ ),
+ sa.Column(
+ "ferc1_generator_agg_id",
+ sa.Integer(),
+ nullable=True,
+ comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column(
+ "ownership_dupe",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether a plant part record has a duplicate record with different ownership status.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_name_ppe",
+ sa.Text(),
+ nullable=True,
+ comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
+ ),
+ sa.Column(
+ "plant_part_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
+ ),
+ sa.Column(
+ "record_count",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_report_year",
+ sa.Text(),
+ nullable=True,
+ comment="PUDL plant ID and report year of the record.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id_eia", name=op.f("pk_out_eia__yearly_plant_parts")
+ ),
+ )
+ op.create_table(
+ "plant_parts_eia",
+ sa.Column(
+ "record_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier for EIA plant parts analysis records.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_part",
+ sa.Enum(
+ "plant_technology",
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_prime_mover",
+ "plant_gen",
+ "plant",
+ "plant_match_ferc1",
+ "plant_ferc_acct",
+ "plant_operating_year",
+ ),
+ nullable=True,
+ comment="The part of the plant a record corresponds to.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Enum(
+ "TDF",
+ "SGP",
+ "SLW",
+ "PUR",
+ "SG",
+ "OBL",
+ "OTH",
+ "MSB",
+ "SUB",
+ "WND",
+ "MSW",
+ "RC",
+ "OBS",
+ "WDS",
+ "WAT",
+ "PG",
+ "OBG",
+ "WDL",
+ "DFO",
+ "SUN",
+ "LIG",
+ "SGC",
+ "RFO",
+ "MSN",
+ "ANT",
+ "LFG",
+ "KER",
+ "WC",
+ "PC",
+ "OG",
+ "BFG",
+ "BIT",
+ "BLQ",
+ "WH",
+ "SC",
+ "NG",
+ "JF",
+ "GEO",
+ "MWH",
+ "AB",
+ "NUC",
+ "WO",
+ ),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Enum(
+ "Solar Photovoltaic",
+ "Conventional Steam Coal",
+ "Solar Thermal with Energy Storage",
+ "Batteries",
+ "Landfill Gas",
+ "Petroleum Liquids",
+ "Other Waste Biomass",
+ "Natural Gas Fired Combustion Turbine",
+ "Coal Integrated Gasification Combined Cycle",
+ "Hydroelectric Pumped Storage",
+ "Natural Gas with Compressed Air Storage",
+ "Offshore Wind Turbine",
+ "Other Natural Gas",
+ "Natural Gas Internal Combustion Engine",
+ "Nuclear",
+ "Wood/Wood Waste Biomass",
+ "Natural Gas Steam Turbine",
+ "Geothermal",
+ "Flywheels",
+ "Hydrokinetic",
+ "Municipal Solid Waste",
+ "Conventional Hydroelectric",
+ "Natural Gas Fired Combined Cycle",
+ "Petroleum Coke",
+ "Solar Thermal without Energy Storage",
+ "All Other",
+ "Onshore Wind Turbine",
+ "Other Gases",
+ ),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "true_gran",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
+ ),
+ sa.Column(
+ "appro_part_label",
+ sa.Enum(
+ "plant_technology",
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_prime_mover",
+ "plant_gen",
+ "plant",
+ "plant_match_ferc1",
+ "plant_ferc_acct",
+ "plant_operating_year",
+ ),
+ nullable=True,
+ comment="Plant part of the associated true granularity record.",
+ ),
+ sa.Column(
+ "appro_record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA record ID of the associated true granularity record.",
+ ),
+ sa.Column(
+ "ferc1_generator_agg_id",
+ sa.Integer(),
+ nullable=True,
+ comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column(
+ "ownership_dupe",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether a plant part record has a duplicate record with different ownership status.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_name_ppe",
+ sa.Text(),
+ nullable=True,
+ comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
+ ),
+ sa.Column(
+ "plant_part_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
+ ),
+ sa.Column(
+ "record_count",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_report_year",
+ sa.Text(),
+ nullable=True,
+ comment="PUDL plant ID and report year of the record.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f("fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f("fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f("fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint("record_id_eia", name=op.f("pk_plant_parts_eia")),
)
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.drop_table('plant_parts_eia')
- op.drop_table('out_eia__yearly_plant_parts')
- op.drop_table('out_eia__yearly_generators_by_ownership')
- op.drop_table('out_eia__yearly_generators')
- op.drop_table('out_eia__yearly_boilers')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
- op.drop_table('out_eia923__yearly_generation')
- op.drop_table('out_eia923__yearly_boiler_fuel')
- op.drop_table('out_eia860__yearly_ownership')
- op.drop_table('out__yearly_plants_all_ferc1_plant_parts_eia')
- op.drop_table('mega_generators_eia')
- op.drop_table('core_eia860__yearly_boiler_emissions_control_equipment_assn')
- op.drop_table('core_eia860__scd_ownership')
- op.drop_table('core_eia860__assn_boiler_stack_flue')
- op.drop_table('core_eia860__assn_boiler_generator')
- op.drop_table('core_eia860__assn_boiler_cooling')
- op.drop_table('_out_eia__yearly_heat_rate_by_generator')
- op.drop_table('_out_eia__yearly_generators')
- op.drop_table('_out_eia__yearly_fuel_cost_by_generator')
- op.drop_table('_out_eia__yearly_derived_generator_attributes')
- op.drop_table('_out_eia__yearly_capacity_factor_by_generator')
- op.drop_table('out_ferc1__yearly_fuel_by_plant')
- op.drop_table('out_ferc1__yearly_fuel')
- op.drop_table('out_ferc1__yearly_all_plants')
- op.drop_table('out_eia__yearly_plants')
- op.drop_table('out_eia923__yearly_generation_fuel_combined')
- op.drop_table('out_eia923__yearly_fuel_receipts_costs')
- op.drop_table('core_ferc1__yearly_plants_steam')
- op.drop_table('core_ferc1__yearly_plants_small')
- op.drop_table('core_ferc1__yearly_plants_pumped_storage')
- op.drop_table('core_ferc1__yearly_plants_hydro')
- op.drop_table('core_ferc1__yearly_fuel')
- op.drop_table('core_eia860__scd_generators')
- op.drop_table('core_eia860__scd_boilers')
- op.drop_table('_out_ferc1__yearly_steam_plants')
- op.drop_table('_out_ferc1__yearly_small_plants')
- op.drop_table('_out_ferc1__yearly_pumped_storage_plants')
- op.drop_table('_out_ferc1__yearly_plants_utilities')
- op.drop_table('_out_ferc1__yearly_hydro_plants')
- op.drop_table('_out_eia__yearly_heat_rate_by_unit')
- op.drop_table('_out_eia__plants_utilities')
- op.drop_table('out_ferc1__yearly_utility_plant_summary')
- op.drop_table('out_ferc1__yearly_transmission_statistics')
- op.drop_table('out_ferc1__yearly_retained_earnings')
- op.drop_table('out_ferc1__yearly_purchased_power')
- op.drop_table('out_ferc1__yearly_plant_in_service')
- op.drop_table('out_ferc1__yearly_other_regulatory_liabilities')
- op.drop_table('out_ferc1__yearly_income_statement')
- op.drop_table('out_ferc1__yearly_electricity_sales_by_rate_schedule')
- op.drop_table('out_ferc1__yearly_electric_plant_depreciation_functional')
- op.drop_table('out_ferc1__yearly_electric_plant_depreciation_changes')
- op.drop_table('out_ferc1__yearly_electric_operating_revenues')
- op.drop_table('out_ferc1__yearly_electric_operating_expenses')
- op.drop_table('out_ferc1__yearly_electric_energy_sources')
- op.drop_table('out_ferc1__yearly_electric_energy_dispositions')
- op.drop_table('out_ferc1__yearly_depreciation_amortization_summary')
- op.drop_table('out_ferc1__yearly_cash_flow')
- op.drop_table('out_ferc1__yearly_balance_sheet_liabilities')
- op.drop_table('out_ferc1__yearly_balance_sheet_assets')
- op.drop_table('out_eia__yearly_utilities')
- op.drop_table('out_eia__monthly_generators')
- op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
- op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
- op.drop_table('out_eia923__monthly_generation')
- op.drop_table('out_eia923__monthly_boiler_fuel')
- op.drop_table('out_eia923__generation')
- op.drop_table('out_eia923__boiler_fuel')
- op.drop_table('core_pudl__assn_utilities_ferc1_xbrl')
- op.drop_table('core_pudl__assn_utilities_ferc1_dbf')
- op.drop_table('core_pudl__assn_plants_ferc1')
- op.drop_table('core_ferc1__yearly_utility_plant_summary')
- op.drop_table('core_ferc1__yearly_transmission_statistics')
- op.drop_table('core_ferc1__yearly_retained_earnings')
- op.drop_table('core_ferc1__yearly_purchased_power')
- op.drop_table('core_ferc1__yearly_plant_in_service')
- op.drop_table('core_ferc1__yearly_other_regulatory_liabilities')
- op.drop_table('core_ferc1__yearly_income_statement')
- op.drop_table('core_ferc1__yearly_electricity_sales_by_rate_schedule')
- op.drop_table('core_ferc1__yearly_electric_plant_depreciation_functional')
- op.drop_table('core_ferc1__yearly_electric_plant_depreciation_changes')
- op.drop_table('core_ferc1__yearly_electric_operating_revenues')
- op.drop_table('core_ferc1__yearly_electric_operating_expenses')
- op.drop_table('core_ferc1__yearly_electric_energy_sources')
- op.drop_table('core_ferc1__yearly_electric_energy_dispositions')
- op.drop_table('core_ferc1__yearly_depreciation_amortization_summary')
- op.drop_table('core_ferc1__yearly_cash_flow')
- op.drop_table('core_ferc1__yearly_balance_sheet_liabilities')
- op.drop_table('core_ferc1__yearly_balance_sheet_assets')
- op.drop_table('core_epa__assn_epacamd_eia')
- op.drop_table('core_eia923__monthly_generation')
- op.drop_table('core_eia923__monthly_fuel_receipts_costs')
- op.drop_table('core_eia923__monthly_boiler_fuel')
- op.drop_table('core_eia860__scd_plants')
- op.drop_table('_out_eia__monthly_heat_rate_by_generator')
- op.drop_table('_out_eia__monthly_fuel_cost_by_generator')
- op.drop_table('_out_eia__monthly_derived_generator_attributes')
- op.drop_table('_out_eia__monthly_capacity_factor_by_generator')
- op.drop_table('out_ferc714__summarized_demand')
- op.drop_table('out_ferc714__respondents_with_fips')
- op.drop_table('out_eia923__monthly_generation_fuel_combined')
- op.drop_table('out_eia923__monthly_fuel_receipts_costs')
- op.drop_table('out_eia923__generation_fuel_combined')
- op.drop_table('out_eia923__fuel_receipts_costs')
- op.drop_table('out_eia860__yearly_emissions_control_equipment')
- op.drop_table('core_pudl__assn_utilities_plants')
- op.drop_table('core_pudl__assn_utilities_ferc1')
- op.drop_table('core_pudl__assn_utilities_eia')
- op.drop_table('core_pudl__assn_plants_eia')
- op.drop_table('core_ferc714__hourly_demand_pa')
- op.drop_table('core_eia__entity_generators')
- op.drop_table('core_eia__entity_boilers')
- op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
- op.drop_table('core_eia923__monthly_generation_fuel')
- op.drop_table('core_eia923__entity_coalmine')
- op.drop_table('core_eia861__yearly_utility_data_rto')
- op.drop_table('core_eia861__yearly_utility_data_nerc')
- op.drop_table('core_eia861__yearly_utility_data_misc')
- op.drop_table('core_eia861__yearly_service_territory')
- op.drop_table('core_eia861__yearly_sales')
- op.drop_table('core_eia861__yearly_reliability')
- op.drop_table('core_eia861__yearly_operational_data_revenue')
- op.drop_table('core_eia861__yearly_operational_data_misc')
- op.drop_table('core_eia861__yearly_non_net_metering_misc')
- op.drop_table('core_eia861__yearly_non_net_metering_customer_fuel_class')
- op.drop_table('core_eia861__yearly_net_metering_misc')
- op.drop_table('core_eia861__yearly_net_metering_customer_fuel_class')
- op.drop_table('core_eia861__yearly_mergers')
- op.drop_table('core_eia861__yearly_green_pricing')
- op.drop_table('core_eia861__yearly_energy_efficiency')
- op.drop_table('core_eia861__yearly_dynamic_pricing')
- op.drop_table('core_eia861__yearly_distribution_systems')
- op.drop_table('core_eia861__yearly_distributed_generation_tech')
- op.drop_table('core_eia861__yearly_distributed_generation_misc')
- op.drop_table('core_eia861__yearly_distributed_generation_fuel')
- op.drop_table('core_eia861__yearly_demand_side_management_sales')
- op.drop_table('core_eia861__yearly_demand_side_management_misc')
- op.drop_table('core_eia861__yearly_demand_side_management_ee_dr')
- op.drop_table('core_eia861__yearly_demand_response_water_heater')
- op.drop_table('core_eia861__yearly_demand_response')
- op.drop_table('core_eia861__yearly_advanced_metering_infrastructure')
- op.drop_table('core_eia860__scd_utilities')
- op.drop_table('core_eia860__scd_emissions_control_equipment')
- op.drop_table('_out_eia__monthly_heat_rate_by_unit')
- op.drop_table('out_ferc714__hourly_predicted_state_demand')
- op.drop_table('out_eia861__compiled_geometry_utilities')
- op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
- op.drop_table('core_pudl__entity_utilities_pudl')
- op.drop_table('core_pudl__entity_plants_pudl')
- op.drop_table('core_pudl__codes_subdivisions')
- op.drop_table('core_pudl__codes_datasources')
- op.drop_table('core_pudl__codes_data_maturities')
- op.drop_table('core_ferc__codes_accounts')
- op.drop_table('core_ferc714__respondent_id')
- op.drop_table('core_ferc1__codes_power_purchase_types')
- op.drop_table('core_epa__assn_epacamd_eia_subplant_ids')
- op.drop_table('core_eia__yearly_fuel_receipts_costs_aggs')
- op.drop_table('core_eia__entity_utilities')
- op.drop_table('core_eia__entity_plants')
- op.drop_table('core_eia__codes_wet_dry_bottom')
- op.drop_table('core_eia__codes_steam_plant_types')
- op.drop_table('core_eia__codes_so2_units')
- op.drop_table('core_eia__codes_so2_compliance_strategies')
- op.drop_table('core_eia__codes_sector_consolidated')
- op.drop_table('core_eia__codes_reporting_frequencies')
- op.drop_table('core_eia__codes_regulations')
- op.drop_table('core_eia__codes_prime_movers')
- op.drop_table('core_eia__codes_particulate_units')
- op.drop_table('core_eia__codes_particulate_compliance_strategies')
- op.drop_table('core_eia__codes_operational_status')
- op.drop_table('core_eia__codes_nox_units')
- op.drop_table('core_eia__codes_nox_control_status')
- op.drop_table('core_eia__codes_nox_compliance_strategies')
- op.drop_table('core_eia__codes_momentary_interruptions')
- op.drop_table('core_eia__codes_mercury_compliance_strategies')
- op.drop_table('core_eia__codes_fuel_types_aer')
- op.drop_table('core_eia__codes_fuel_transportation_modes')
- op.drop_table('core_eia__codes_firing_types')
- op.drop_table('core_eia__codes_environmental_equipment_manufacturers')
- op.drop_table('core_eia__codes_energy_sources')
- op.drop_table('core_eia__codes_emission_control_equipment_types')
- op.drop_table('core_eia__codes_contract_types')
- op.drop_table('core_eia__codes_coalmine_types')
- op.drop_table('core_eia__codes_boiler_types')
- op.drop_table('core_eia__codes_boiler_status')
- op.drop_table('core_eia__codes_boiler_generator_assn_types')
- op.drop_table('core_eia__codes_balancing_authorities')
- op.drop_table('core_eia__codes_averaging_periods')
- op.drop_table('core_eia861__yearly_balancing_authority')
- op.drop_table('core_eia861__assn_utility')
- op.drop_table('core_eia861__assn_balancing_authority')
+ op.drop_table("plant_parts_eia")
+ op.drop_table("out_eia__yearly_plant_parts")
+ op.drop_table("out_eia__yearly_generators_by_ownership")
+ op.drop_table("out_eia__yearly_generators")
+ op.drop_table("out_eia__yearly_boilers")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source_owner")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator")
+ op.drop_table("out_eia923__yearly_generation")
+ op.drop_table("out_eia923__yearly_boiler_fuel")
+ op.drop_table("out_eia860__yearly_ownership")
+ op.drop_table("out__yearly_plants_all_ferc1_plant_parts_eia")
+ op.drop_table("mega_generators_eia")
+ op.drop_table("core_eia860__yearly_boiler_emissions_control_equipment_assn")
+ op.drop_table("core_eia860__scd_ownership")
+ op.drop_table("core_eia860__assn_boiler_stack_flue")
+ op.drop_table("core_eia860__assn_boiler_generator")
+ op.drop_table("core_eia860__assn_boiler_cooling")
+ op.drop_table("_out_eia__yearly_heat_rate_by_generator")
+ op.drop_table("_out_eia__yearly_generators")
+ op.drop_table("_out_eia__yearly_fuel_cost_by_generator")
+ op.drop_table("_out_eia__yearly_derived_generator_attributes")
+ op.drop_table("_out_eia__yearly_capacity_factor_by_generator")
+ op.drop_table("out_ferc1__yearly_steam_plants_fuel_by_plant")
+ op.drop_table("out_ferc1__yearly_steam_plants_fuel")
+ op.drop_table("out_ferc1__yearly_all_plants")
+ op.drop_table("out_eia__yearly_plants")
+ op.drop_table("out_eia923__yearly_generation_fuel_combined")
+ op.drop_table("out_eia923__yearly_fuel_receipts_costs")
+ op.drop_table("core_ferc1__yearly_plants_steam")
+ op.drop_table("core_ferc1__yearly_plants_small")
+ op.drop_table("core_ferc1__yearly_plants_pumped_storage")
+ op.drop_table("core_ferc1__yearly_hydroelectric_plants")
+ op.drop_table("core_ferc1__yearly_steam_plants_fuel")
+ op.drop_table("core_eia860__scd_generators")
+ op.drop_table("core_eia860__scd_boilers")
+ op.drop_table("_out_ferc1__yearly_steam_plants")
+ op.drop_table("_out_ferc1__yearly_small_plants")
+ op.drop_table("_out_ferc1__yearly_pumped_storage_plants")
+ op.drop_table("_out_ferc1__yearly_plants_utilities")
+ op.drop_table("_out_ferc1__yearly_hydroelectric_plants")
+ op.drop_table("_out_eia__yearly_heat_rate_by_unit")
+ op.drop_table("_out_eia__plants_utilities")
+ op.drop_table("out_ferc1__yearly_utility_plant_and_depreciation_summary")
+ op.drop_table("out_ferc1__yearly_transmission_lines")
+ op.drop_table("out_ferc1__yearly_retained_earnings")
+ op.drop_table("out_ferc1__yearly_purchased_power_and_exchanges")
+ op.drop_table("out_ferc1__yearly_plant_in_service")
+ op.drop_table("out_ferc1__yearly_other_regulatory_liabilities")
+ op.drop_table("out_ferc1__yearly_income_statement")
+ op.drop_table("out_ferc1__yearly_electricity_sales_by_rate_schedule")
+ op.drop_table("out_ferc1__yearly_electric_plant_depreciation_functional")
+ op.drop_table("out_ferc1__yearly_electric_plant_depreciation_changes")
+ op.drop_table("out_ferc1__yearly_electric_operating_revenues")
+ op.drop_table("out_ferc1__yearly_electric_operating_expenses")
+ op.drop_table("out_ferc1__yearly_electric_energy_sources")
+ op.drop_table("out_ferc1__yearly_electric_energy_dispositions")
+ op.drop_table("out_ferc1__yearly_depreciation_amortization_summary")
+ op.drop_table("out_ferc1__yearly_cash_flows")
+ op.drop_table("out_ferc1__yearly_balance_sheet_liabilities")
+ op.drop_table("out_ferc1__yearly_balance_sheet_assets")
+ op.drop_table("out_eia__yearly_utilities")
+ op.drop_table("out_eia__monthly_generators")
+ op.drop_table("out_eia923__monthly_generation_fuel_by_generator_energy_source")
+ op.drop_table("out_eia923__monthly_generation_fuel_by_generator")
+ op.drop_table("out_eia923__monthly_generation")
+ op.drop_table("out_eia923__monthly_boiler_fuel")
+ op.drop_table("out_eia923__generation")
+ op.drop_table("out_eia923__boiler_fuel")
+ op.drop_table("core_pudl__assn_utilities_ferc1_xbrl")
+ op.drop_table("core_pudl__assn_utilities_ferc1_dbf")
+ op.drop_table("core_pudl__assn_plants_ferc1")
+ op.drop_table("core_ferc1__yearly_utility_plant_and_depreciation_summary")
+ op.drop_table("core_ferc1__yearly_transmission_lines")
+ op.drop_table("core_ferc1__yearly_retained_earnings")
+ op.drop_table("core_ferc1__yearly_purchased_power_and_exchanges")
+ op.drop_table("core_ferc1__yearly_plant_in_service")
+ op.drop_table("core_ferc1__yearly_other_regulatory_liabilities")
+ op.drop_table("core_ferc1__yearly_income_statement")
+ op.drop_table("core_ferc1__yearly_electricity_sales_by_rate_schedule")
+ op.drop_table("core_ferc1__yearly_electric_plant_depreciation_functional")
+ op.drop_table("core_ferc1__yearly_electric_plant_depreciation_changes")
+ op.drop_table("core_ferc1__yearly_electric_operating_revenues")
+ op.drop_table("core_ferc1__yearly_electric_operating_expenses")
+ op.drop_table("core_ferc1__yearly_electric_energy_sources")
+ op.drop_table("core_ferc1__yearly_electric_energy_dispositions")
+ op.drop_table("core_ferc1__yearly_depreciation_amortization_summary")
+ op.drop_table("core_ferc1__yearly_cash_flows")
+ op.drop_table("core_ferc1__yearly_balance_sheet_liabilities")
+ op.drop_table("core_ferc1__yearly_balance_sheet_assets")
+ op.drop_table("core_epa__assn_epacamd_eia")
+ op.drop_table("core_eia923__monthly_generation")
+ op.drop_table("core_eia923__monthly_fuel_receipts_costs")
+ op.drop_table("core_eia923__monthly_boiler_fuel")
+ op.drop_table("core_eia860__scd_plants")
+ op.drop_table("_out_eia__monthly_heat_rate_by_generator")
+ op.drop_table("_out_eia__monthly_fuel_cost_by_generator")
+ op.drop_table("_out_eia__monthly_derived_generator_attributes")
+ op.drop_table("_out_eia__monthly_capacity_factor_by_generator")
+ op.drop_table("out_ferc714__summarized_demand")
+ op.drop_table("out_ferc714__respondents_with_fips")
+ op.drop_table("out_eia923__monthly_generation_fuel_combined")
+ op.drop_table("out_eia923__monthly_fuel_receipts_costs")
+ op.drop_table("out_eia923__generation_fuel_combined")
+ op.drop_table("out_eia923__fuel_receipts_costs")
+ op.drop_table("out_eia860__yearly_emissions_control_equipment")
+ op.drop_table("core_pudl__assn_utilities_plants")
+ op.drop_table("core_pudl__assn_utilities_ferc1")
+ op.drop_table("core_pudl__assn_utilities_eia")
+ op.drop_table("core_pudl__assn_plants_eia")
+ op.drop_table("core_ferc714__hourly_demand_pa")
+ op.drop_table("core_eia__entity_generators")
+ op.drop_table("core_eia__entity_boilers")
+ op.drop_table("core_eia923__monthly_generation_fuel_nuclear")
+ op.drop_table("core_eia923__monthly_generation_fuel")
+ op.drop_table("core_eia923__entity_coalmine")
+ op.drop_table("core_eia861__yearly_utility_data_rto")
+ op.drop_table("core_eia861__yearly_utility_data_nerc")
+ op.drop_table("core_eia861__yearly_utility_data_misc")
+ op.drop_table("core_eia861__yearly_service_territory")
+ op.drop_table("core_eia861__yearly_sales")
+ op.drop_table("core_eia861__yearly_reliability")
+ op.drop_table("core_eia861__yearly_operational_data_revenue")
+ op.drop_table("core_eia861__yearly_operational_data_misc")
+ op.drop_table("core_eia861__yearly_non_net_metering_misc")
+ op.drop_table("core_eia861__yearly_non_net_metering_customer_fuel_class")
+ op.drop_table("core_eia861__yearly_net_metering_misc")
+ op.drop_table("core_eia861__yearly_net_metering_customer_fuel_class")
+ op.drop_table("core_eia861__yearly_mergers")
+ op.drop_table("core_eia861__yearly_green_pricing")
+ op.drop_table("core_eia861__yearly_energy_efficiency")
+ op.drop_table("core_eia861__yearly_dynamic_pricing")
+ op.drop_table("core_eia861__yearly_distribution_systems")
+ op.drop_table("core_eia861__yearly_distributed_generation_tech")
+ op.drop_table("core_eia861__yearly_distributed_generation_misc")
+ op.drop_table("core_eia861__yearly_distributed_generation_fuel")
+ op.drop_table("core_eia861__yearly_demand_side_management_sales")
+ op.drop_table("core_eia861__yearly_demand_side_management_misc")
+ op.drop_table("core_eia861__yearly_demand_side_management_ee_dr")
+ op.drop_table("core_eia861__yearly_demand_response_water_heater")
+ op.drop_table("core_eia861__yearly_demand_response")
+ op.drop_table("core_eia861__yearly_advanced_metering_infrastructure")
+ op.drop_table("core_eia860__scd_utilities")
+ op.drop_table("core_eia860__scd_emissions_control_equipment")
+ op.drop_table("_out_eia__monthly_heat_rate_by_unit")
+ op.drop_table("out_ferc714__hourly_predicted_state_demand")
+ op.drop_table("out_eia861__compiled_geometry_utilities")
+ op.drop_table("out_eia861__compiled_geometry_balancing_authorities")
+ op.drop_table("core_pudl__entity_utilities_pudl")
+ op.drop_table("core_pudl__entity_plants_pudl")
+ op.drop_table("core_pudl__codes_subdivisions")
+ op.drop_table("core_pudl__codes_datasources")
+ op.drop_table("core_pudl__codes_data_maturities")
+ op.drop_table("core_ferc__codes_accounts")
+ op.drop_table("core_ferc714__respondent_id")
+ op.drop_table("core_ferc1__codes_power_purchase_types")
+ op.drop_table("core_epa__assn_epacamd_eia_subplant_ids")
+ op.drop_table("core_eia__yearly_fuel_receipts_costs_aggs")
+ op.drop_table("core_eia__entity_utilities")
+ op.drop_table("core_eia__entity_plants")
+ op.drop_table("core_eia__codes_wet_dry_bottom")
+ op.drop_table("core_eia__codes_steam_plant_types")
+ op.drop_table("core_eia__codes_so2_units")
+ op.drop_table("core_eia__codes_so2_compliance_strategies")
+ op.drop_table("core_eia__codes_sector_consolidated")
+ op.drop_table("core_eia__codes_reporting_frequencies")
+ op.drop_table("core_eia__codes_regulations")
+ op.drop_table("core_eia__codes_prime_movers")
+ op.drop_table("core_eia__codes_particulate_units")
+ op.drop_table("core_eia__codes_particulate_compliance_strategies")
+ op.drop_table("core_eia__codes_operational_status")
+ op.drop_table("core_eia__codes_nox_units")
+ op.drop_table("core_eia__codes_nox_control_status")
+ op.drop_table("core_eia__codes_nox_compliance_strategies")
+ op.drop_table("core_eia__codes_momentary_interruptions")
+ op.drop_table("core_eia__codes_mercury_compliance_strategies")
+ op.drop_table("core_eia__codes_fuel_types_aer")
+ op.drop_table("core_eia__codes_fuel_transportation_modes")
+ op.drop_table("core_eia__codes_firing_types")
+ op.drop_table("core_eia__codes_environmental_equipment_manufacturers")
+ op.drop_table("core_eia__codes_energy_sources")
+ op.drop_table("core_eia__codes_emission_control_equipment_types")
+ op.drop_table("core_eia__codes_contract_types")
+ op.drop_table("core_eia__codes_coalmine_types")
+ op.drop_table("core_eia__codes_boiler_types")
+ op.drop_table("core_eia__codes_boiler_status")
+ op.drop_table("core_eia__codes_boiler_generator_assn_types")
+ op.drop_table("core_eia__codes_balancing_authorities")
+ op.drop_table("core_eia__codes_averaging_periods")
+ op.drop_table("core_eia861__yearly_balancing_authority")
+ op.drop_table("core_eia861__assn_utility")
+ op.drop_table("core_eia861__assn_balancing_authority")
# ### end Alembic commands ###
diff --git a/src/pudl/analysis/classify_plants_ferc1.py b/src/pudl/analysis/classify_plants_ferc1.py
index 0f2729f176..1ab88e32db 100644
--- a/src/pudl/analysis/classify_plants_ferc1.py
+++ b/src/pudl/analysis/classify_plants_ferc1.py
@@ -625,7 +625,7 @@ def fuel_by_plant_ferc1(
Args:
fuel_df: Pandas DataFrame resembling the post-transform
- result for the core_ferc1__yearly_fuel table.
+ result for the core_ferc1__yearly_steam_plants_fuel table.
thresh: A value between 0.5 and 1.0 indicating the minimum fraction of
overall heat content that must have been provided by a fuel in a plant-year
for it to be considered the "primary" fuel for the plant in that year.
@@ -661,7 +661,8 @@ def fuel_by_plant_ferc1(
# Calculate per-fuel derived values and add them to the DataFrame
df = (
# Really there should *not* be any duplicates here but... there's a
- # bug somewhere that introduces them into the core_ferc1__yearly_fuel table.
+ # bug somewhere that introduces them into the
+ # core_ferc1__yearly_steam_plants_fuel table.
fuel_df[keep_cols]
.drop_duplicates()
# Calculate totals for each record based on per-unit values:
diff --git a/src/pudl/analysis/ferc1_eia_record_linkage.py b/src/pudl/analysis/ferc1_eia_record_linkage.py
index b29913046c..e88d7d2631 100644
--- a/src/pudl/analysis/ferc1_eia_record_linkage.py
+++ b/src/pudl/analysis/ferc1_eia_record_linkage.py
@@ -57,20 +57,20 @@
)
def out__yearly_plants_all_ferc1_plant_parts_eia(
out_ferc1__yearly_all_plants: pd.DataFrame,
- out_ferc1__yearly_fuel_by_plant: pd.DataFrame,
+ out_ferc1__yearly_steam_plants_fuel_by_plant: pd.DataFrame,
out_eia__yearly_plant_parts: pd.DataFrame,
) -> pd.DataFrame:
"""Coordinate the connection between FERC1 plants and EIA plant-parts.
Args:
out_ferc1__yearly_all_plants: Table of all of the FERC1-reporting plants.
- out_ferc1__yearly_fuel_by_plant: Table of the fuel reported aggregated to the FERC1
+ out_ferc1__yearly_steam_plants_fuel_by_plant: Table of the fuel reported aggregated to the FERC1
plant-level.
out_eia__yearly_plant_parts: The EIA plant parts list.
"""
inputs = InputManager(
out_ferc1__yearly_all_plants,
- out_ferc1__yearly_fuel_by_plant,
+ out_ferc1__yearly_steam_plants_fuel_by_plant,
out_eia__yearly_plant_parts,
)
# compile/cache inputs upfront. Hopefully we can catch any errors in inputs early.
diff --git a/src/pudl/extract/ferc1.py b/src/pudl/extract/ferc1.py
index 6c7f2d4c12..5bcfddd0a8 100644
--- a/src/pudl/extract/ferc1.py
+++ b/src/pudl/extract/ferc1.py
@@ -100,7 +100,7 @@
logger = pudl.logging_helpers.get_logger(__name__)
TABLE_NAME_MAP_FERC1: dict[str, dict[str, str]] = {
- "core_ferc1__yearly_fuel": {
+ "core_ferc1__yearly_steam_plants_fuel": {
"dbf": "f1_fuel",
"xbrl": "steam_electric_generating_plant_statistics_large_plants_fuel_statistics_402",
},
@@ -112,7 +112,7 @@
"dbf": "f1_gnrt_plant",
"xbrl": "generating_plant_statistics_410",
},
- "core_ferc1__yearly_plants_hydro": {
+ "core_ferc1__yearly_hydroelectric_plants": {
"dbf": "f1_hydro",
"xbrl": "hydroelectric_generating_plant_statistics_large_plants_406",
},
@@ -124,7 +124,7 @@
"dbf": "f1_plant_in_srvce",
"xbrl": "electric_plant_in_service_204",
},
- "core_ferc1__yearly_purchased_power": {
+ "core_ferc1__yearly_purchased_power_and_exchanges": {
"dbf": "f1_purchased_pwr",
"xbrl": "purchased_power_326",
},
@@ -136,11 +136,11 @@
"dbf": "f1_elctrc_erg_acct",
"xbrl": "electric_energy_account_401a",
},
- "core_ferc1__yearly_utility_plant_summary": {
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary": {
"dbf": "f1_utltyplnt_smmry",
"xbrl": "summary_of_utility_plant_and_accumulated_provisions_for_depreciation_amortization_and_depletion_200",
},
- "core_ferc1__yearly_transmission_statistics": {
+ "core_ferc1__yearly_transmission_lines": {
"dbf": "f1_xmssn_line",
"xbrl": "transmission_line_statistics_422",
},
@@ -184,7 +184,7 @@
"dbf": "f1_elctrc_oper_rev",
"xbrl": "electric_operating_revenues_300",
},
- "core_ferc1__yearly_cash_flow": {
+ "core_ferc1__yearly_cash_flows": {
"dbf": "f1_cash_flow",
"xbrl": "statement_of_cash_flows_120",
},
diff --git a/src/pudl/glue/ferc1_eia.py b/src/pudl/glue/ferc1_eia.py
index c370bf1297..646d5d5c5e 100644
--- a/src/pudl/glue/ferc1_eia.py
+++ b/src/pudl/glue/ferc1_eia.py
@@ -255,11 +255,11 @@ def get_plants_ferc1_raw_job() -> JobDefinition:
This job expects ferc1.sqlite and ferc_xbrl.sqlite databases to be populated.
"""
plant_tables = [
- "core_ferc1__yearly_plants_hydro",
+ "core_ferc1__yearly_hydroelectric_plants",
"core_ferc1__yearly_plants_small",
"core_ferc1__yearly_plants_pumped_storage",
"core_ferc1__yearly_plants_steam",
- "core_ferc1__yearly_fuel", # bc it has plants/is associated w/ the steam table
+ "core_ferc1__yearly_steam_plants_fuel", # bc it has plants/is associated w/ the steam table
]
@asset(ins={table_name: AssetIn() for table_name in plant_tables})
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 09839a8ec3..d6a2100548 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -2826,7 +2826,7 @@
"utility_owned_capacity_mw": {"type": "number", "unit": "MW"},
"utility_plant_asset_type": {
"type": "string",
- "description": "Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ "description": "Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
},
"utility_pobox": {"type": "string"},
"utility_type": {
@@ -2835,7 +2835,7 @@
},
"utility_type_other": {
"type": "string",
- "description": "Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary table. This field is reported only in the DBF reporting years (1994-2020).",
+ "description": "Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. This field is reported only in the DBF reporting years (1994-2020).",
},
"variable_peak_pricing": {"type": "boolean"},
"virtual_capacity_mw": {"type": "number", "unit": "MW"},
@@ -2957,7 +2957,7 @@
FIELD_METADATA_BY_RESOURCE: dict[str, dict[str, Any]] = {
"sector_consolidated_eia": {"code": {"type": "integer"}},
- "core_ferc1__yearly_plants_hydro": {
+ "core_ferc1__yearly_hydroelectric_plants": {
"plant_type": {
"type": "string",
"constraints": {
@@ -3011,7 +3011,7 @@
},
"technology_description": {"constraints": {"enum": set(TECH_DESCRIPTIONS)}},
},
- "core_ferc1__yearly_transmission_statistics": {
+ "core_ferc1__yearly_transmission_lines": {
"capex_land": {
"description": "Cost of Land and land rights for the transmission line."
},
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index 8593fd01cb..db5674ef82 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -52,7 +52,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_cash_flow": {
+ "core_ferc1__yearly_cash_flows": {
"description": "The structured portion of the FERC1 cash flow table - Schedule 120.",
"schema": {
"fields": [
@@ -317,7 +317,7 @@
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_fuel": {
+ "core_ferc1__yearly_steam_plants_fuel": {
"description": "Annual fuel cost and quantity for steam plants with a capacity of 25+ MW, internal combustion and gas-turbine plants of 10+ MW, and all nuclear plants. As reported on page 402 of FERC Form 1 and extracted from the f1_fuel table in FERC's FoxPro Database.",
"schema": {
"fields": [
@@ -432,7 +432,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_plants_hydro": {
+ "core_ferc1__yearly_hydroelectric_plants": {
"description": (
"Hydroelectric generating plant statistics for large plants. Large plants "
"have an installed nameplate capacity of more than 10 MW. As reported on "
@@ -648,7 +648,7 @@
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_purchased_power": {
+ "core_ferc1__yearly_purchased_power_and_exchanges": {
"description": (
"Purchased Power (Account 555) including power exchanges (transactions "
"involving a balancing of debits and credits for energy, capacity, etc.) "
@@ -682,7 +682,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_transmission_statistics": {
+ "core_ferc1__yearly_transmission_lines": {
"description": (
"Transmission Line Statistics. Schedule 422 of FERC Form 1. Information "
"describing transmission lines, the cost of lines, annual operating and "
@@ -746,7 +746,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_utility_plant_summary": {
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary": {
"description": (
"Summary of utility plant and accumulated provisions for depreciation, "
"amortization and depletion of utilty plant assets reported annually at "
@@ -906,7 +906,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_cash_flow": {
+ "out_ferc1__yearly_cash_flows": {
"description": "Denormalized table that contains FERC cash flow information.",
"schema": {
"fields": [
@@ -1207,7 +1207,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_transmission_statistics": {
+ "out_ferc1__yearly_transmission_lines": {
"description": "Denormalized table that contains FERC transmission statistics information.",
"schema": {
"fields": [
@@ -1238,7 +1238,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_utility_plant_summary": {
+ "out_ferc1__yearly_utility_plant_and_depreciation_summary": {
"description": "Denormalized table that contains FERC utility plant summary information.",
"schema": {
"fields": [
@@ -1367,7 +1367,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "_out_ferc1__yearly_hydro_plants": {
+ "_out_ferc1__yearly_hydroelectric_plants": {
"description": "Denormalized table that contains small plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1481,7 +1481,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_fuel": {
+ "ou_ferc1__yearly_steam_plants_fuel": {
"description": "Denormalized table that contains fuel information from FERC Form 1.",
"schema": {
"fields": [
@@ -1510,7 +1510,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_purchased_power": {
+ "out_ferc1__yearly_purchased_power_and_exchanges": {
"description": "Denormalized table of FERC Form 1 Purchased Power data.",
"schema": {
"fields": [
@@ -1655,7 +1655,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_fuel_by_plant": {
+ "out_ferc1__yearly_steam_plants_fuel_by_plant": {
"description": "A table summarizing FERC fuel data by plant, using FERC Form 1 data.",
"schema": {
"fields": [
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 7a32ffa3c1..0a9d4eba03 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -224,13 +224,13 @@ def _out_ferc1__yearly_small_plants(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def _out_ferc1__yearly_hydro_plants(
- core_ferc1__yearly_plants_hydro: pd.DataFrame,
+def _out_ferc1__yearly_hydroelectric_plants(
+ core_ferc1__yearly_hydroelectric_plants: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 hydro plants."""
plants_hydro_df = (
- core_ferc1__yearly_plants_hydro.merge(
+ core_ferc1__yearly_hydroelectric_plants.merge(
_out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -286,8 +286,8 @@ def _out_ferc1__yearly_pumped_storage_plants(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_fuel(
- core_ferc1__yearly_fuel: pd.DataFrame,
+def ou_ferc1__yearly_steam_plants_fuel(
+ core_ferc1__yearly_steam_plants_fuel: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to FERC Form 1 fuel information.
@@ -308,7 +308,7 @@ def out_ferc1__yearly_fuel(
information.
"""
fuel_df = (
- core_ferc1__yearly_fuel.assign(
+ core_ferc1__yearly_steam_plants_fuel.assign(
fuel_consumed_mmbtu=lambda x: x["fuel_consumed_units"]
* x["fuel_mmbtu_per_unit"],
fuel_consumed_total_cost=lambda x: x["fuel_consumed_units"]
@@ -334,12 +334,12 @@ def out_ferc1__yearly_fuel(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_purchased_power(
- core_ferc1__yearly_purchased_power: pd.DataFrame,
+def out_ferc1__yearly_purchased_power_and_exchanges(
+ core_ferc1__yearly_purchased_power_and_exchanges: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- purchased_power_df = core_ferc1__yearly_purchased_power.merge(
+ purchased_power_df = core_ferc1__yearly_purchased_power_and_exchanges.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -425,12 +425,12 @@ def out_ferc1__yearly_balance_sheet_liabilities(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_cash_flow(
- core_ferc1__yearly_cash_flow: pd.DataFrame,
+def out_ferc1__yearly_cash_flows(
+ core_ferc1__yearly_cash_flows: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 cash flow data."""
- out_ferc1__yearly_cash_flow = core_ferc1__yearly_cash_flow.merge(
+ out_ferc1__yearly_cash_flows = core_ferc1__yearly_cash_flows.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -443,7 +443,7 @@ def out_ferc1__yearly_cash_flow(
"amount_type",
],
)
- return out_ferc1__yearly_cash_flow
+ return out_ferc1__yearly_cash_flows
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
@@ -710,35 +710,33 @@ def out_ferc1__yearly_retained_earnings(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_transmission_statistics(
- core_ferc1__yearly_transmission_statistics: pd.DataFrame,
+def out_ferc1__yearly_transmission_lines(
+ core_ferc1__yearly_transmission_lines: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_transmission_statistics = (
- core_ferc1__yearly_transmission_statistics.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- ],
- )
+ out_ferc1__yearly_transmission_lines = core_ferc1__yearly_transmission_lines.merge(
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ ],
)
- return out_ferc1__yearly_transmission_statistics
+ return out_ferc1__yearly_transmission_lines
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_utility_plant_summary(
- core_ferc1__yearly_utility_plant_summary: pd.DataFrame,
+def out_ferc1__yearly_utility_plant_and_depreciation_summary(
+ core_ferc1__yearly_utility_plant_and_depreciation_summary: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_utility_plant_summary = (
- core_ferc1__yearly_utility_plant_summary.merge(
+ out_ferc1__yearly_utility_plant_and_depreciation_summary = (
+ core_ferc1__yearly_utility_plant_and_depreciation_summary.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -753,14 +751,14 @@ def out_ferc1__yearly_utility_plant_summary(
],
)
)
- return out_ferc1__yearly_utility_plant_summary
+ return out_ferc1__yearly_utility_plant_and_depreciation_summary
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_all_plants(
_out_ferc1__yearly_steam_plants: pd.DataFrame,
_out_ferc1__yearly_small_plants: pd.DataFrame,
- _out_ferc1__yearly_hydro_plants: pd.DataFrame,
+ _out_ferc1__yearly_hydroelectric_plants: pd.DataFrame,
_out_ferc1__yearly_pumped_storage_plants: pd.DataFrame,
) -> pd.DataFrame:
"""Combine the steam, small generators, hydro, and pumped storage tables.
@@ -779,7 +777,7 @@ def out_ferc1__yearly_all_plants(
# Prep hydro tables (Add this to the meta data later)
logger.debug("prepping hydro tables")
- hydro_df = _out_ferc1__yearly_hydro_plants.rename(
+ hydro_df = _out_ferc1__yearly_hydroelectric_plants.rename(
columns={"project_num": "ferc_license_id"}
)
pump_df = _out_ferc1__yearly_pumped_storage_plants.rename(
@@ -819,9 +817,9 @@ def out_ferc1__yearly_all_plants(
},
compute_kind="Python",
)
-def out_ferc1__yearly_fuel_by_plant(
+def out_ferc1__yearly_steam_plants_fuel_by_plant(
context,
- core_ferc1__yearly_fuel: pd.DataFrame,
+ core_ferc1__yearly_steam_plants_fuel: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Summarize FERC fuel data by plant for output.
@@ -834,7 +832,7 @@ def out_ferc1__yearly_fuel_by_plant(
Args:
context: Dagster context object
- core_ferc1__yearly_fuel: Normalized FERC fuel table.
+ core_ferc1__yearly_steam_plants_fuel: Normalized FERC fuel table.
_out_ferc1__yearly_plants_utilities: Denormalized table of FERC1 plant & utility IDs.
Returns:
@@ -853,9 +851,9 @@ def drop_other_fuel_types(df):
# The existing function expects `fuel_type_code_pudl` to be an object, rather than
# a category. This is a legacy of pre-dagster code, and we convert here to prevent
# further retooling in the code-base.
- core_ferc1__yearly_fuel["fuel_type_code_pudl"] = core_ferc1__yearly_fuel[
+ core_ferc1__yearly_steam_plants_fuel[
"fuel_type_code_pudl"
- ].astype(str)
+ ] = core_ferc1__yearly_steam_plants_fuel["fuel_type_code_pudl"].astype(str)
fuel_categories = list(
pudl.transform.ferc1.FuelFerc1TableTransformer()
@@ -864,7 +862,7 @@ def drop_other_fuel_types(df):
)
fbp_df = (
- core_ferc1__yearly_fuel.pipe(drop_other_fuel_types)
+ core_ferc1__yearly_steam_plants_fuel.pipe(drop_other_fuel_types)
.pipe(
pudl.analysis.classify_plants_ferc1.fuel_by_plant_ferc1,
fuel_categories=fuel_categories,
@@ -1167,7 +1165,7 @@ def create_exploded_table_assets() -> list[AssetsDefinition]:
"table_names_to_explode": [
"core_ferc1__yearly_balance_sheet_assets",
"core_ferc1__yearly_balance_sheet_assets",
- "core_ferc1__yearly_utility_plant_summary",
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
"core_ferc1__yearly_plant_in_service",
"core_ferc1__yearly_electric_plant_depreciation_functional",
],
@@ -2031,21 +2029,21 @@ def forest(self: Self) -> nx.DiGraph:
# only stepchildren node removal from above. a generalization here would be good
almost_pure_stepparents = [
NodeId(
- "core_ferc1__yearly_utility_plant_summary",
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
"depreciation_amortization_and_depletion_utility_plant_leased_to_others",
"total",
pd.NA,
pd.NA,
),
NodeId(
- "core_ferc1__yearly_utility_plant_summary",
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
"depreciation_and_amortization_utility_plant_held_for_future_use",
"total",
pd.NA,
pd.NA,
),
NodeId(
- "core_ferc1__yearly_utility_plant_summary",
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
"utility_plant_in_service_classified_and_unclassified",
"total",
pd.NA,
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 08f03a9137..541f562bf3 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -135,7 +135,7 @@ def _register_output_methods(self: Self):
# denorm_ferc1
"out_ferc1__yearly_balance_sheet_assets": "denorm_balance_sheet_assets_ferc1",
"out_ferc1__yearly_balance_sheet_liabilities": "denorm_balance_sheet_liabilities_ferc1",
- "out_ferc1__yearly_cash_flow": "denorm_cash_flow_ferc1",
+ "out_ferc1__yearly_cash_flows": "denorm_cash_flow_ferc1",
"out_ferc1__yearly_depreciation_amortization_summary": "denorm_depreciation_amortization_summary_ferc1",
"out_ferc1__yearly_electric_energy_dispositions": "denorm_electric_energy_dispositions_ferc1",
"out_ferc1__yearly_electric_energy_sources": "denorm_electric_energy_sources_ferc1",
@@ -147,16 +147,16 @@ def _register_output_methods(self: Self):
"out_ferc1__yearly_income_statement": "denorm_income_statement_ferc1",
"out_ferc1__yearly_other_regulatory_liabilities": "denorm_other_regulatory_liabilities_ferc1",
"out_ferc1__yearly_retained_earnings": "denorm_retained_earnings_ferc1",
- "out_ferc1__yearly_transmission_statistics": "denorm_transmission_statistics_ferc1",
- "out_ferc1__yearly_utility_plant_summary": "denorm_utility_plant_summary_ferc1",
+ "out_ferc1__yearly_transmission_lines": "denorm_transmission_statistics_ferc1",
+ "out_ferc1__yearly_utility_plant_and_depreciation_summary": "denorm_utility_plant_summary_ferc1",
"_out_ferc1__yearly_plants_utilities": "pu_ferc1",
"_out_ferc1__yearly_steam_plants": "plants_steam_ferc1",
- "out_ferc1__yearly_fuel": "fuel_ferc1",
- "out_ferc1__yearly_fuel_by_plant": "fbp_ferc1",
+ "ou_ferc1__yearly_steam_plants_fuel": "fuel_ferc1",
+ "out_ferc1__yearly_steam_plants_fuel_by_plant": "fbp_ferc1",
"_out_ferc1__yearly_small_plants": "plants_small_ferc1",
- "_out_ferc1__yearly_hydro_plants": "plants_hydro_ferc1",
+ "_out_ferc1__yearly_hydroelectric_plants": "plants_hydro_ferc1",
"_out_ferc1__yearly_pumped_storage_plants": "plants_pumped_storage_ferc1",
- "out_ferc1__yearly_purchased_power": "purchased_power_ferc1",
+ "out_ferc1__yearly_purchased_power_and_exchanges": "purchased_power_ferc1",
"out_ferc1__yearly_plant_in_service": "plant_in_service_ferc1",
"out_ferc1__yearly_all_plants": "plants_all_ferc1",
# denorm_eia (data comes from multiple EIA forms)
diff --git a/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv b/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
index 3c95b6f6d8..826e51061e 100644
--- a/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
+++ b/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
@@ -1,13 +1,13 @@
table_name_parent,xbrl_factoid_parent,table_name,xbrl_factoid,weight,utility_type,plant_function,plant_status
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,abandonment_of_leases,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,1.0,total,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,amortization_of_other_utility_plant_utility_plant_in_service,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,amortization_of_plant_acquisition_adjustment,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_amortization_and_depletion_utility_plant_leased_to_others,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_and_amortization_utility_plant_held_for_future_use,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_utility_plant_in_service,,,,
-core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,construction_work_in_progress,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,abandonment_of_leases,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,amortization_of_other_utility_plant_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,amortization_of_plant_acquisition_adjustment,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_amortization_and_depletion_utility_plant_leased_to_others,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_and_amortization_utility_plant_held_for_future_use,,,,
+core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,construction_work_in_progress,1.0,total,,
core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,derivative_instrument_assets_hedges_long_term,,,,
core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,derivative_instrument_assets_long_term,,,,
core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_derivative_instrument_assets_hedges_long_term,-1.0,,,
@@ -22,14 +22,14 @@ core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,nuclear_fuel_materials_
core_ferc1__yearly_balance_sheet_assets,other_property_and_investments,core_ferc1__yearly_balance_sheet_assets,special_funds_all,1.0,,,
core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,,,,
core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_acquisition_adjustment,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_and_construction_work_in_progress,1.0,total,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_held_for_future_use,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary,utility_plant_leased_to_others,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_acquisition_adjustment,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_and_construction_work_in_progress,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_held_for_future_use,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,,,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_leased_to_others,,,,
core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,,,,
core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_utility_plant_summary,utility_plant_net,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_net,1.0,total,,
core_ferc1__yearly_balance_sheet_liabilities,deferred_credits,core_ferc1__yearly_balance_sheet_liabilities,accumulated_deferred_income_taxes,1.0,,,
core_ferc1__yearly_balance_sheet_liabilities,retained_earnings,core_ferc1__yearly_retained_earnings,retained_earnings,1.0,,,
core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,long_term_portion_of_derivative_instrument_liabilities,,,,
@@ -47,7 +47,7 @@ core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraul
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,miscellaneous_hydraulic_power_generation_expenses,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,rents_hydraulic_power_generation,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,water_for_power,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_hydro,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_hydroelectric_plants,opex_operations,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_pumped_storage,opex_operations,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_steam,opex_operations,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,allowances,,,,
@@ -64,7 +64,7 @@ core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_p
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_expenses_steam_power_generation,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_from_other_sources,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_transferred_credit,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_hydro,opex_operations,,,,
+core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_hydroelectric_plants,opex_operations,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_pumped_storage,opex_operations,,,,
core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_steam,opex_operations,,,,
core_ferc1__yearly_electric_operating_expenses,transmission_operation_expense,core_ferc1__yearly_electric_operating_expenses,load_dispatching_transmission_expense,1.0,,,
@@ -137,12 +137,12 @@ core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_ear
core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,equity_in_earnings_of_subsidiary_companies,1.0,,,
core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings_previous_year,1.0,,,
core_ferc1__yearly_balance_sheet_liabilities,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,1.0,,,
-core_ferc1__yearly_utility_plant_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
-core_ferc1__yearly_utility_plant_summary,depreciation_utility_plant_in_service,core_ferc1__yearly_electric_plant_depreciation_functional,accumulated_depreciation,1.0,electric,total,in_service
-core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified,,,,
-core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_property_under_capital_leases,1.0,,,
-core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_property_under_capital_leases,,,,
-core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_experimental_plant_unclassified,core_ferc1__yearly_plant_in_service,experimental_electric_plant_unclassified,1.0,electric,,
-core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_purchased,1.0,electric,,
-core_ferc1__yearly_utility_plant_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_sold,-1.0,electric,,
-core_ferc1__yearly_utility_plant_summary,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
\ No newline at end of file
+core_ferc1__yearly_utility_plant_and_depreciation_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_utility_plant_in_service,core_ferc1__yearly_electric_plant_depreciation_functional,accumulated_depreciation,1.0,electric,total,in_service
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified,,,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_property_under_capital_leases,1.0,,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_property_under_capital_leases,,,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_experimental_plant_unclassified,core_ferc1__yearly_plant_in_service,experimental_electric_plant_unclassified,1.0,electric,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_purchased,1.0,electric,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_sold,-1.0,electric,,
+core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
\ No newline at end of file
diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py
index 4c15679c62..7f44cc152a 100644
--- a/src/pudl/transform/ferc1.py
+++ b/src/pudl/transform/ferc1.py
@@ -132,19 +132,21 @@ class TableIdFerc1(enum.Enum):
Package. But this works for now.
"""
- FUEL_FERC1 = "core_ferc1__yearly_fuel"
+ FUEL_FERC1 = "core_ferc1__yearly_steam_plants_fuel"
PLANTS_STEAM_FERC1 = "core_ferc1__yearly_plants_steam"
- PLANTS_HYDRO_FERC1 = "core_ferc1__yearly_plants_hydro"
+ PLANTS_HYDRO_FERC1 = "core_ferc1__yearly_hydroelectric_plants"
PLANTS_SMALL_FERC1 = "core_ferc1__yearly_plants_small"
PLANTS_PUMPED_STORAGE_FERC1 = "core_ferc1__yearly_plants_pumped_storage"
PLANT_IN_SERVICE_FERC1 = "core_ferc1__yearly_plant_in_service"
- PURCHASED_POWER_FERC1 = "core_ferc1__yearly_purchased_power"
- TRANSMISSION_STATISTICS_FERC1 = "core_ferc1__yearly_transmission_statistics"
+ PURCHASED_POWER_FERC1 = "core_ferc1__yearly_purchased_power_and_exchanges"
+ TRANSMISSION_STATISTICS_FERC1 = "core_ferc1__yearly_transmission_lines"
ELECTRIC_ENERGY_SOURCES_FERC1 = "core_ferc1__yearly_electric_energy_sources"
ELECTRIC_ENERGY_DISPOSITIONS_FERC1 = (
"core_ferc1__yearly_electric_energy_dispositions"
)
- UTILITY_PLANT_SUMMARY_FERC1 = "core_ferc1__yearly_utility_plant_summary"
+ UTILITY_PLANT_SUMMARY_FERC1 = (
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary"
+ )
ELECTRIC_OPERATING_EXPENSES_FERC1 = "core_ferc1__yearly_electric_operating_expenses"
BALANCE_SHEET_LIABILITIES = "core_ferc1__yearly_balance_sheet_liabilities"
DEPRECIATION_AMORTIZATION_SUMMARY_FERC1 = (
@@ -160,7 +162,7 @@ class TableIdFerc1(enum.Enum):
ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1 = (
"core_ferc1__yearly_electric_plant_depreciation_functional"
)
- CASH_FLOW_FERC1 = "core_ferc1__yearly_cash_flow"
+ CASH_FLOW_FERC1 = "core_ferc1__yearly_cash_flows"
ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1 = (
"core_ferc1__yearly_electricity_sales_by_rate_schedule"
)
@@ -2858,9 +2860,9 @@ def reconcile_table_calculations(
class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`core_ferc1__yearly_fuel` table.
+ """A table transformer specific to the :ref:`core_ferc1__yearly_steam_plants_fuel` table.
- The :ref:`core_ferc1__yearly_fuel` table reports data about fuel consumed by large thermal power
+ The :ref:`core_ferc1__yearly_steam_plants_fuel` table reports data about fuel consumed by large thermal power
plants in the :ref:`core_ferc1__yearly_plants_steam` table. Each record in the steam table is
typically associated with several records in the fuel table, with each fuel record
reporting data for a particular type of fuel consumed by that plant over the course
@@ -2917,7 +2919,7 @@ class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
- """Table specific transforms for core_ferc1__yearly_fuel.
+ """Table specific transforms for core_ferc1__yearly_steam_plants_fuel.
Args:
df: Pre-processed, concatenated XBRL and DBF data.
@@ -2955,7 +2957,7 @@ def process_dbf(self, raw_dbf: pd.DataFrame) -> pd.DataFrame:
def process_xbrl(
self, raw_xbrl_instant: pd.DataFrame, raw_xbrl_duration: pd.DataFrame
) -> pd.DataFrame:
- """Special pre-concat treatment of the :ref:`core_ferc1__yearly_fuel` table.
+ """Special pre-concat treatment of the :ref:`core_ferc1__yearly_steam_plants_fuel` table.
We have to do most of the transformation before the DBF and XBRL data have been
concatenated because the fuel type column is part of the primary key and it is
@@ -3165,7 +3167,7 @@ def drop_total_rows(self, df: pd.DataFrame) -> pd.DataFrame:
* have no identifiable fuel units
* DO report a value for MMBTU / MWh (heat rate)
- In the case of the core_ferc1__yearly_fuel table, we drop any row where all the data columns
+ In the case of the core_ferc1__yearly_steam_plants_fuel table, we drop any row where all the data columns
are null AND there's a non-null value in the ``fuel_mmbtu_per_mwh`` column, as
it typically indicates a "total" row for a plant. We also require a null value
for the fuel_units and an "other" value for the fuel type.
@@ -3215,11 +3217,11 @@ def transform_main(
"""Perform table transformations for the :ref:`core_ferc1__yearly_plants_steam` table.
Note that this method has a non-standard call signature, since the
- :ref:`core_ferc1__yearly_plants_steam` table depends on the :ref:`core_ferc1__yearly_fuel` table.
+ :ref:`core_ferc1__yearly_plants_steam` table depends on the :ref:`core_ferc1__yearly_steam_plants_fuel` table.
Args:
df: The pre-processed steam plants table.
- transformed_fuel: The fully transformed :ref:`core_ferc1__yearly_fuel` table. This is
+ transformed_fuel: The fully transformed :ref:`core_ferc1__yearly_steam_plants_fuel` table. This is
required because fuel consumption information is used to help link
steam plant records together across years using
:func:`plants_steam_assign_plant_ids`
@@ -3274,7 +3276,7 @@ def transform(
class PlantsHydroFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`core_ferc1__yearly_plants_hydro` table."""
+ """A table transformer specific to the :ref:`core_ferc1__yearly_hydroelectric_plants` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_HYDRO_FERC1
@@ -3327,7 +3329,7 @@ class PlantsPumpedStorageFerc1TableTransformer(Ferc1AbstractTableTransformer):
class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_purchased_power` table.
+ """Transformer class for :ref:`core_ferc1__yearly_purchased_power_and_exchanges`.
This table has data about inter-utility power purchases into the PUDL DB. This
includes how much electricty was purchased, how much it cost, and who it was
@@ -4439,7 +4441,7 @@ def spot_fix_rows(self, df: pd.DataFrame) -> pd.DataFrame:
class TransmissionStatisticsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer for the :ref:`core_ferc1__yearly_transmission_statistics` table."""
+ """A table transformer for the :ref:`core_ferc1__yearly_transmission_lines` table."""
table_id: TableIdFerc1 = TableIdFerc1.TRANSMISSION_STATISTICS_FERC1
has_unique_record_ids: bool = False
@@ -4497,7 +4499,7 @@ class ElectricEnergyDispositionsFerc1TableTransformer(Ferc1AbstractTableTransfor
class UtilityPlantSummaryFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_utility_plant_summary` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary` table."""
table_id: TableIdFerc1 = TableIdFerc1.UTILITY_PLANT_SUMMARY_FERC1
has_unique_record_ids: bool = False
@@ -5709,7 +5711,7 @@ def targeted_drop_duplicates(self, df):
class CashFlowFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transform class for :ref:`core_ferc1__yearly_cash_flow` table."""
+ """Transform class for :ref:`core_ferc1__yearly_cash_flows` table."""
table_id: TableIdFerc1 = TableIdFerc1.CASH_FLOW_FERC1
has_unique_record_ids: bool = False
@@ -5880,17 +5882,17 @@ class OtherRegulatoryLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransfor
FERC1_TFR_CLASSES: Mapping[str, type[Ferc1AbstractTableTransformer]] = {
- "core_ferc1__yearly_fuel": FuelFerc1TableTransformer,
+ "core_ferc1__yearly_steam_plants_fuel": FuelFerc1TableTransformer,
"core_ferc1__yearly_plants_steam": PlantsSteamFerc1TableTransformer,
"core_ferc1__yearly_plants_small": PlantsSmallFerc1TableTransformer,
- "core_ferc1__yearly_plants_hydro": PlantsHydroFerc1TableTransformer,
+ "core_ferc1__yearly_hydroelectric_plants": PlantsHydroFerc1TableTransformer,
"core_ferc1__yearly_plant_in_service": PlantInServiceFerc1TableTransformer,
"core_ferc1__yearly_plants_pumped_storage": PlantsPumpedStorageFerc1TableTransformer,
- "core_ferc1__yearly_transmission_statistics": TransmissionStatisticsFerc1TableTransformer,
- "core_ferc1__yearly_purchased_power": PurchasedPowerFerc1TableTransformer,
+ "core_ferc1__yearly_transmission_lines": TransmissionStatisticsFerc1TableTransformer,
+ "core_ferc1__yearly_purchased_power_and_exchanges": PurchasedPowerFerc1TableTransformer,
"core_ferc1__yearly_electric_energy_sources": ElectricEnergySourcesFerc1TableTransformer,
"core_ferc1__yearly_electric_energy_dispositions": ElectricEnergyDispositionsFerc1TableTransformer,
- "core_ferc1__yearly_utility_plant_summary": UtilityPlantSummaryFerc1TableTransformer,
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary": UtilityPlantSummaryFerc1TableTransformer,
"core_ferc1__yearly_electric_operating_expenses": ElectricOperatingExpensesFerc1TableTransformer,
"core_ferc1__yearly_balance_sheet_liabilities": BalanceSheetLiabilitiesFerc1TableTransformer,
"core_ferc1__yearly_depreciation_amortization_summary": DepreciationAmortizationSummaryFerc1TableTransformer,
@@ -5900,7 +5902,7 @@ class OtherRegulatoryLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransfor
"core_ferc1__yearly_electric_plant_depreciation_functional": ElectricPlantDepreciationFunctionalFerc1TableTransformer,
"core_ferc1__yearly_retained_earnings": RetainedEarningsFerc1TableTransformer,
"core_ferc1__yearly_electric_operating_revenues": ElectricOperatingRevenuesFerc1TableTransformer,
- "core_ferc1__yearly_cash_flow": CashFlowFerc1TableTransformer,
+ "core_ferc1__yearly_cash_flows": CashFlowFerc1TableTransformer,
"core_ferc1__yearly_electricity_sales_by_rate_schedule": ElectricitySalesByRateScheduleFerc1TableTransformer,
"core_ferc1__yearly_other_regulatory_liabilities": OtherRegulatoryLiabilitiesFerc1TableTransformer,
}
@@ -6020,7 +6022,7 @@ def core_ferc1__yearly_plants_steam(
raw_ferc1_dbf__f1_steam: pd.DataFrame,
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration: pd.DataFrame,
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant: pd.DataFrame,
- core_ferc1__yearly_fuel: pd.DataFrame,
+ core_ferc1__yearly_steam_plants_fuel: pd.DataFrame,
) -> pd.DataFrame:
"""Create the clean core_ferc1__yearly_plants_steam table.
@@ -6029,7 +6031,7 @@ def core_ferc1__yearly_plants_steam(
raw_ferc1_dbf__f1_steam: Raw f1_steam table.
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration: raw XBRL duration table.
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant: raw XBRL instant table.
- core_ferc1__yearly_fuel: Transformed core_ferc1__yearly_fuel table.
+ core_ferc1__yearly_steam_plants_fuel: Transformed core_ferc1__yearly_steam_plants_fuel table.
Returns:
Clean core_ferc1__yearly_plants_steam table.
@@ -6040,7 +6042,7 @@ def core_ferc1__yearly_plants_steam(
raw_dbf=raw_ferc1_dbf__f1_steam,
raw_xbrl_instant=raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant,
raw_xbrl_duration=raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration,
- transformed_fuel=core_ferc1__yearly_fuel,
+ transformed_fuel=core_ferc1__yearly_steam_plants_fuel,
)
return convert_cols_dtypes(df, data_source="ferc1")
@@ -6341,7 +6343,7 @@ def make_calculation_dimensions_explicit(
We have extended this calculation system to allow independent calculations to be
specified for different values within a given dimension. For example, the
- :ref:`core_ferc1__yearly_utility_plant_summary` table contains records with a variety of
+ :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary` table contains records with a variety of
different ``utility_type`` values (gas, electric, etc.). For many combinations of
fact and ``utility_type``, no more detailed information about the soruce of the data
is available, but for some, and only in the case of electric utilities, much more
@@ -6610,7 +6612,7 @@ def infer_intra_factoid_totals(
# not actually in the explosion work
for table_name in [
"core_ferc1__yearly_plant_in_service",
- "core_ferc1__yearly_utility_plant_summary",
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
"core_ferc1__yearly_electric_operating_expenses",
"core_ferc1__yearly_balance_sheet_liabilities",
"core_ferc1__yearly_depreciation_amortization_summary",
diff --git a/src/pudl/transform/params/ferc1.py b/src/pudl/transform/params/ferc1.py
index 309152ab34..dec9363c95 100644
--- a/src/pudl/transform/params/ferc1.py
+++ b/src/pudl/transform/params/ferc1.py
@@ -2159,7 +2159,7 @@
# Fully assembled set of FERC 1 transformation parameters
##############################################################################
TRANSFORM_PARAMS = {
- "core_ferc1__yearly_fuel": {
+ "core_ferc1__yearly_steam_plants_fuel": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2403,7 +2403,7 @@
},
],
},
- "core_ferc1__yearly_plants_hydro": {
+ "core_ferc1__yearly_hydroelectric_plants": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2886,7 +2886,7 @@
},
],
},
- "core_ferc1__yearly_purchased_power": {
+ "core_ferc1__yearly_purchased_power_and_exchanges": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2965,7 +2965,7 @@
}
],
},
- "core_ferc1__yearly_transmission_statistics": {
+ "core_ferc1__yearly_transmission_lines": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3189,7 +3189,7 @@
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_elctrc_erg_acct"]},
},
- "core_ferc1__yearly_utility_plant_summary": {
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4179,7 +4179,7 @@
"subtotal_column": "plant_status",
},
},
- "core_ferc1__yearly_cash_flow": {
+ "core_ferc1__yearly_cash_flows": {
"rename_columns_ferc1": {
"instant_xbrl": {
"columns": {
diff --git a/test/validate/ferc1_test.py b/test/validate/ferc1_test.py
index fe36fe24b4..77651a85d9 100644
--- a/test/validate/ferc1_test.py
+++ b/test/validate/ferc1_test.py
@@ -19,11 +19,11 @@
# attributes in the FERC classes.
non_unique_record_id_tables = [
"core_ferc1__yearly_plant_in_service",
- "core_ferc1__yearly_purchased_power",
+ "core_ferc1__yearly_purchased_power_and_exchanges",
"core_ferc1__yearly_electric_energy_sources",
"core_ferc1__yearly_electric_energy_dispositions",
- "core_ferc1__yearly_utility_plant_summary",
- "core_ferc1__yearly_transmission_statistics",
+ "core_ferc1__yearly_utility_plant_and_depreciation_summary",
+ "core_ferc1__yearly_transmission_lines",
"core_ferc1__yearly_balance_sheet_liabilities",
"core_ferc1__yearly_balance_sheet_assets",
"core_ferc1__yearly_income_statement",
@@ -31,7 +31,7 @@
"core_ferc1__yearly_electric_plant_depreciation_changes",
"core_ferc1__yearly_electric_plant_depreciation_functional",
"core_ferc1__yearly_electric_operating_expenses",
- "core_ferc1__yearly_cash_flow",
+ "core_ferc1__yearly_cash_flows",
"core_ferc1__yearly_retained_earnings",
"core_ferc1__yearly_electric_operating_revenues",
"core_ferc1__yearly_other_regulatory_liabilities",
diff --git a/test/validate/fuel_ferc1_test.py b/test/validate/fuel_ferc1_test.py
index 4135eff948..0342694750 100644
--- a/test/validate/fuel_ferc1_test.py
+++ b/test/validate/fuel_ferc1_test.py
@@ -16,7 +16,9 @@
def test_fuel_ferc1_trivial(pudl_out_ferc1):
"""Test output routines for tables from FERC Form 1."""
logger.info("Compiling FERC Form 1 fuel table...")
- fuel_tab = pd.read_sql("out_ferc1__yearly_fuel", pudl_out_ferc1.pudl_engine)
+ fuel_tab = pd.read_sql(
+ "ou_ferc1__yearly_steam_plants_fuel", pudl_out_ferc1.pudl_engine
+ )
assert len(fuel_tab) > 0, "FERC Form 1 fuel table is empty."
logger.info(f"{len(fuel_tab)} fuel records found")
@@ -55,7 +57,10 @@ def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
pytest.skip("Data validation only works with a live PUDL DB.")
for case in cases:
pv.vs_bounds(
- pd.read_sql("out_ferc1__yearly_fuel", pudl_out_ferc1.pudl_engine), **case
+ pd.read_sql(
+ "ou_ferc1__yearly_steam_plants_fuel", pudl_out_ferc1.pudl_engine
+ ),
+ **case,
)
@@ -65,5 +70,8 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
pytest.skip("Data validation only works with a live PUDL DB.")
for args in pv.fuel_ferc1_self:
pv.vs_self(
- pd.read_sql("out_ferc1__yearly_fuel", pudl_out_ferc1.pudl_engine), **args
+ pd.read_sql(
+ "ou_ferc1__yearly_steam_plants_fuel", pudl_out_ferc1.pudl_engine
+ ),
+ **args,
)
From e8db0adb53f5ebbb37ca023c58b3ed51e987d202 Mon Sep 17 00:00:00 2001
From: Christina Gosnell
Date: Wed, 1 Nov 2023 12:02:38 -0400
Subject: [PATCH 41/70] initial rename of the FERC1 core and out tables
---
devtools/debug-ferc1-etl.ipynb | 14 +-
docs/release_notes.rst | 60 +-
...1_wipe_out_schema_and_core_asset_rename.py | 26847 ----------------
src/pudl/analysis/classify_plants_ferc1.py | 14 +-
src/pudl/analysis/ferc1_eia_record_linkage.py | 8 +-
src/pudl/extract/ferc1.py | 46 +-
src/pudl/glue/ferc1_eia.py | 10 +-
src/pudl/metadata/fields.py | 18 +-
src/pudl/metadata/resources/ferc1.py | 94 +-
src/pudl/output/ferc1.py | 395 +-
src/pudl/output/pudltabl.py | 48 +-
.../xbrl_calculation_component_fixes.csv | 294 +-
src/pudl/transform/ferc1.py | 228 +-
src/pudl/transform/params/__init__.py | 2 +-
src/pudl/transform/params/ferc1.py | 54 +-
src/pudl/validate.py | 10 +-
test/integration/etl_test.py | 6 +-
test/unit/transform/ferc1_test.py | 2 +-
test/validate/ferc1_test.py | 36 +-
test/validate/fuel_ferc1_test.py | 10 +-
test/validate/plants_steam_ferc1_test.py | 25 +-
21 files changed, 697 insertions(+), 27524 deletions(-)
delete mode 100644 migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py
diff --git a/devtools/debug-ferc1-etl.ipynb b/devtools/debug-ferc1-etl.ipynb
index 13f8b8e431..1b179ea812 100644
--- a/devtools/debug-ferc1-etl.ipynb
+++ b/devtools/debug-ferc1-etl.ipynb
@@ -99,7 +99,7 @@
},
"outputs": [],
"source": [
- "ferc1_xbrl_raw_dfs[\"core_ferc1__yearly_steam_plants_fuel\"][\"duration\"].report_year"
+ "ferc1_xbrl_raw_dfs[\"core_ferc1__yearly_steam_plants_fuel_sched402\"][\"duration\"].report_year"
]
},
{
@@ -206,7 +206,7 @@
"metadata": {},
"outputs": [],
"source": [
- "table_name = \"core_ferc1__yearly_other_regulatory_liabilities\"\n",
+ "table_name = \"core_ferc1__yearly_other_regulatory_liabilities_sched278\"\n",
"TRANSFORMER = transformers[table_name] # add a table here"
]
},
@@ -326,8 +326,8 @@
"source": [
"transformed_tables = {}\n",
"for table_name, transformer in transformers.items():\n",
- " if table_name == \"core_ferc1__yearly_plants_steam\":\n",
- " # core_ferc1__yearly_plants_steam is a special case. It depends on the transformed core_ferc1__yearly_steam_plants_fuel table.\n",
+ " if table_name == \"core_ferc1__yearly_steam_plants_sched402\":\n",
+ " # core_ferc1__yearly_steam_plants_sched402 is a special case. It depends on the transformed core_ferc1__yearly_steam_plants_fuel_sched402 table.\n",
" continue\n",
" transformed_tables[transformer.table_id.value] = transformer.transform(\n",
" raw_dbf=ferc1_dbf_raw_dfs[transformer.table_id.value],\n",
@@ -345,13 +345,13 @@
},
"outputs": [],
"source": [
- "# Handle special case for \"core_ferc1__yearly_plants_steam\"\n",
- "transformer = transformers[\"core_ferc1__yearly_plants_steam\"]\n",
+ "# Handle special case for \"core_ferc1__yearly_steam_plants_sched402\"\n",
+ "transformer = transformers[\"core_ferc1__yearly_steam_plants_sched402\"]\n",
"transformed_tables[transformer.table_id.value] = transformer.transform(\n",
" raw_dbf=ferc1_dbf_raw_dfs[transformer.table_id.value],\n",
" raw_xbrl_instant=ferc1_xbrl_raw_dfs[transformer.table_id.value][\"instant\"],\n",
" raw_xbrl_duration=ferc1_xbrl_raw_dfs[transformer.table_id.value][\"duration\"],\n",
- " transformed_fuel=transformed_tables[\"core_ferc1__yearly_steam_plants_fuel\"],\n",
+ " transformed_fuel=transformed_tables[\"core_ferc1__yearly_steam_plants_fuel_sched402\"],\n",
")"
]
}
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index f07ecb6a60..90e79ab1bf 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -84,31 +84,33 @@ Data Coverage
To see which DBF and XBRL tables the following PUDL tables are derived from, refer to
:py:const:`pudl.extract.ferc1.TABLE_NAME_MAP`
- * :ref:`core_ferc1__yearly_electric_energy_sources`, see issue :issue:`1819` & PR
+ * :ref:`core_ferc1__yearly_energy_sources_sched401`, see issue :issue:`1819` & PR
:pr:`2094`.
- * :ref:`core_ferc1__yearly_electric_energy_dispositions`, see issue :issue:`1819` &
+ * :ref:`core_ferc1__yearly_energy_dispositions_sched401`, see issue :issue:`1819` &
PR :pr:`2100`.
- * :ref:`core_ferc1__yearly_transmission_lines`, see issue :issue:`1822` & PR
+ * :ref:`core_ferc1__yearly_transmission_lines_sched422`, see issue :issue:`1822` & PR
:pr:`2103`
- * :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary`, see issue
+ * :ref:`core_ferc1__yearly_utility_plant_summary_sched200`, see issue
:issue:`1806` & PR :pr:`2105`.
- * :ref:`core_ferc1__yearly_balance_sheet_assets`, see issue :issue:`1805` & PRs
- :pr:`2112,2127`.
- * :ref:`core_ferc1__yearly_balance_sheet_liabilities`, see issue :issue:`1810` & PR
- :pr:`2134`.
- * :ref:`core_ferc1__yearly_depreciation_amortization_summary`, see issue :issue:`1816`
+ * :ref:`core_ferc1__yearly_balance_sheet_assets_sched110`, see issue :issue:`1805` &
+ PRs :pr:`2112,2127`.
+ * :ref:`core_ferc1__yearly_balance_sheet_liabilities_sched110`, see issue
+ :issue:`1810` & PR :pr:`2134`.
+ * :ref:`core_ferc1__yearly_depreciation_summary_sched336`, see issue :issue:`1816`
& PR :pr:`2143`.
- * :ref:`core_ferc1__yearly_income_statement`, see issue :issue:`1813` & PR :pr:`2147`.
- * :ref:`core_ferc1__yearly_electric_plant_depreciation_changes` see issue
+ * :ref:`core_ferc1__yearly_income_statements_sched114`, see issue :issue:`1813` & PR
+ :pr:`2147`.
+ * :ref:`core_ferc1__yearly_depreciation_changes_sched219` see issue
:issue:`1808` & :pr:`2119`.
- * :ref:`core_ferc1__yearly_electric_plant_depreciation_functional` see issue
+ * :ref:`core_ferc1__yearly_depreciation_by_function_sched219` see issue
:issue:`1808` & PR :pr:`2183`.
- * :ref:`core_ferc1__yearly_electric_operating_expenses`, see issue :issue:`1817` & PR
+ * :ref:`core_ferc1__yearly_operating_expenses_sched320`, see issue :issue:`1817` & PR
:pr:`2162`.
- * :ref:`core_ferc1__yearly_retained_earnings`, see issue :issue:`1811` & PR
+ * :ref:`core_ferc1__yearly_retained_earnings_sched118`, see issue :issue:`1811` & PR
:pr:`2155`.
- * :ref:`core_ferc1__yearly_cash_flows`, see issue :issue:`1821` & PR :pr:`2184`
- * :ref:`core_ferc1__yearly_electricity_sales_by_rate_schedule`, see issue
+ * :ref:`core_ferc1__yearly_cash_flows_sched120`, see issue :issue:`1821` & PR
+ :pr:`2184`.
+ * :ref:`core_ferc1__yearly_sales_by_rate_schedules_sched304`, see issue
:issue:`1823` & PR :pr:`2205`.
* Harvested owner utilities from the EIA 860 ownership table which are now included in
@@ -228,26 +230,26 @@ Data Cleaning
with boilers in the :ref:`core_eia__entity_boilers` table. See issue :issue:`2349` &
PR :pr:`2362`.
* Fixed column naming issues in the
- :ref:`core_ferc1__yearly_electric_operating_revenues` table.
+ :ref:`core_ferc1__yearly_operating_revenues_sched300` table.
* Made minor calculation fixes in the metadata for
- :ref:`core_ferc1__yearly_income_statement`,
- :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary`,
- :ref:`core_ferc1__yearly_electric_operating_revenues`,
- :ref:`core_ferc1__yearly_balance_sheet_assets`,
- :ref:`core_ferc1__yearly_balance_sheet_liabilities`, and
- :ref:`core_ferc1__yearly_electric_operating_expenses`,
- :ref:`core_ferc1__yearly_electric_plant_depreciation_changes` and
- :ref:`core_ferc1__yearly_electric_plant_depreciation_functional`. See :issue:`2016`,
+ :ref:`core_ferc1__yearly_income_statements_sched114`,
+ :ref:`core_ferc1__yearly_utility_plant_summary_sched200`,
+ :ref:`core_ferc1__yearly_operating_revenues_sched300`,
+ :ref:`core_ferc1__yearly_balance_sheet_assets_sched110`,
+ :ref:`core_ferc1__yearly_balance_sheet_liabilities_sched110`, and
+ :ref:`core_ferc1__yearly_operating_expenses_sched320`,
+ :ref:`core_ferc1__yearly_depreciation_changes_sched219` and
+ :ref:`core_ferc1__yearly_depreciation_by_function_sched219`. See :issue:`2016`,
:pr:`2563`, :pr:`2662` and :pr:`2687`.
-* Changed the :ref:`core_ferc1__yearly_retained_earnings` table transform to restore
- factoids for previous year balances, and added calculation metadata. See
+* Changed the :ref:`core_ferc1__yearly_retained_earnings_sched118` table transform to
+ restore factoids for previous year balances, and added calculation metadata. See
:issue:`1811`, :issue:`2016`, and :pr:`2645`.
* Added "correction" records to many FERC Form 1 tables where the reported totals do not
match the outcomes of calculations specified in XBRL metadata (even after cleaning up
the often incorrect calculation specifications!). See :issue:`2957` and :pr:`2620`.
* Flip the sign of some erroneous negative values in the
- :ref:`core_ferc1__yearly_plant_in_service` and
- :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary` tables. See
+ :ref:`core_ferc1__yearly_plant_in_service_sched204` and
+ :ref:`core_ferc1__yearly_utility_plant_summary_sched200` tables. See
:issue:`2599`, and :pr:`2647`.
Analysis
diff --git a/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py b/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py
deleted file mode 100644
index 578930427b..0000000000
--- a/migrations/versions/3b8641576a41_wipe_out_schema_and_core_asset_rename.py
+++ /dev/null
@@ -1,26847 +0,0 @@
-"""Wipe out schema and core asset rename
-
-Revision ID: 3b8641576a41
-Revises:
-Create Date: 2023-10-31 12:00:13.943396
-
-"""
-import sqlalchemy as sa
-from alembic import op
-from sqlalchemy.dialects import sqlite
-
-# revision identifiers, used by Alembic.
-revision = "3b8641576a41"
-down_revision = None
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table(
- "core_eia861__assn_balancing_authority",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=False,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "balancing_authority_id_eia",
- "utility_id_eia",
- "state",
- name=op.f("pk_core_eia861__assn_balancing_authority"),
- ),
- )
- op.create_table(
- "core_eia861__assn_utility",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "utility_id_eia",
- "state",
- name=op.f("pk_core_eia861__assn_utility"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_balancing_authority",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=False,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "balancing_authority_id_eia",
- name=op.f("pk_core_eia861__yearly_balancing_authority"),
- ),
- )
- op.create_table(
- "core_eia__codes_averaging_periods",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_averaging_periods")
- ),
- )
- op.create_table(
- "core_eia__codes_balancing_authorities",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_balancing_authorities")
- ),
- )
- op.create_table(
- "core_eia__codes_boiler_generator_assn_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_boiler_generator_assn_types")
- ),
- )
- op.create_table(
- "core_eia__codes_boiler_status",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_status")),
- )
- op.create_table(
- "core_eia__codes_boiler_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_types")),
- )
- op.create_table(
- "core_eia__codes_coalmine_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_coalmine_types")),
- )
- op.create_table(
- "core_eia__codes_contract_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_contract_types")),
- )
- op.create_table(
- "core_eia__codes_emission_control_equipment_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_emission_control_equipment_types")
- ),
- )
- op.create_table(
- "core_eia__codes_energy_sources",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "fuel_units",
- sa.Enum("barrels", "mcf", "mwh", "short_tons"),
- nullable=True,
- comment="Reported unit of measure for fuel.",
- ),
- sa.Column(
- "min_fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Minimum heat content per physical unit of fuel in MMBtu.",
- ),
- sa.Column(
- "max_fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Maximum heat content per physical unit of fuel in MMBtu.",
- ),
- sa.Column(
- "fuel_group_eia",
- sa.Enum("fossil", "other", "renewable"),
- nullable=True,
- comment="High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.",
- ),
- sa.Column(
- "fuel_derived_from",
- sa.Enum("biomass", "coal", "gas", "other", "petroleum"),
- nullable=True,
- comment="Original fuel from which this refined fuel was derived.",
- ),
- sa.Column(
- "fuel_phase",
- sa.Enum("gas", "liquid", "solid"),
- nullable=True,
- comment="Physical phase of matter of the fuel.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_energy_sources")),
- )
- op.create_table(
- "core_eia__codes_environmental_equipment_manufacturers",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code",
- name=op.f("pk_core_eia__codes_environmental_equipment_manufacturers"),
- ),
- )
- op.create_table(
- "core_eia__codes_firing_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_firing_types")),
- )
- op.create_table(
- "core_eia__codes_fuel_transportation_modes",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_fuel_transportation_modes")
- ),
- )
- op.create_table(
- "core_eia__codes_fuel_types_aer",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_fuel_types_aer")),
- )
- op.create_table(
- "core_eia__codes_mercury_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_mercury_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_momentary_interruptions",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_momentary_interruptions")
- ),
- )
- op.create_table(
- "core_eia__codes_nox_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_nox_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_nox_control_status",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_nox_control_status")
- ),
- )
- op.create_table(
- "core_eia__codes_nox_units",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_nox_units")),
- )
- op.create_table(
- "core_eia__codes_operational_status",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_operational_status")
- ),
- )
- op.create_table(
- "core_eia__codes_particulate_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_particulate_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_particulate_units",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_particulate_units")
- ),
- )
- op.create_table(
- "core_eia__codes_prime_movers",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_prime_movers")),
- )
- op.create_table(
- "core_eia__codes_regulations",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_regulations")),
- )
- op.create_table(
- "core_eia__codes_reporting_frequencies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_reporting_frequencies")
- ),
- )
- op.create_table(
- "core_eia__codes_sector_consolidated",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_sector_consolidated")
- ),
- )
- op.create_table(
- "core_eia__codes_so2_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_so2_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_so2_units",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_so2_units")),
- )
- op.create_table(
- "core_eia__codes_steam_plant_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_steam_plant_types")
- ),
- )
- op.create_table(
- "core_eia__codes_wet_dry_bottom",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_wet_dry_bottom")),
- )
- op.create_table(
- "core_eia__entity_plants",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", name=op.f("pk_core_eia__entity_plants")
- ),
- )
- op.create_table(
- "core_eia__entity_utilities",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", name=op.f("pk_core_eia__entity_utilities")
- ),
- )
- op.create_table(
- "core_eia__yearly_fuel_receipts_costs_aggs",
- sa.Column(
- "fuel_agg",
- sa.Text(),
- nullable=False,
- comment="Category of fuel aggregation in EIA bulk electricity data.",
- ),
- sa.Column(
- "geo_agg",
- sa.Text(),
- nullable=False,
- comment="Category of geographic aggregation in EIA bulk electricity data.",
- ),
- sa.Column(
- "sector_agg",
- sa.Text(),
- nullable=False,
- comment="Category of sectoral aggregation in EIA bulk electricity data.",
- ),
- sa.Column(
- "temporal_agg",
- sa.Text(),
- nullable=False,
- comment="Category of temporal aggregation in EIA bulk electricity data.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "fuel_received_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.PrimaryKeyConstraint(
- "fuel_agg",
- "geo_agg",
- "sector_agg",
- "temporal_agg",
- "report_date",
- name=op.f("pk_core_eia__yearly_fuel_receipts_costs_aggs"),
- ),
- )
- op.create_table(
- "core_epa__assn_epacamd_eia_subplant_ids",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_epa",
- sa.Integer(),
- nullable=True,
- comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
- ),
- sa.Column(
- "subplant_id",
- sa.Integer(),
- nullable=True,
- comment="Sub-plant ID links EPA CEMS emissions units to EIA units.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "emissions_unit_id_epa",
- sa.Text(),
- nullable=True,
- comment="Emissions (smokestack) unit monitored by EPA CEMS.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- )
- op.create_table(
- "core_ferc1__codes_power_purchase_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_ferc1__codes_power_purchase_types")
- ),
- )
- op.create_table(
- "core_ferc714__respondent_id",
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
- sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
- sa.Column("eia_code", sa.Integer(), nullable=True),
- sa.PrimaryKeyConstraint(
- "respondent_id_ferc714", name=op.f("pk_core_ferc714__respondent_id")
- ),
- )
- op.create_table(
- "core_ferc__codes_accounts",
- sa.Column(
- "ferc_account_id",
- sa.Text(),
- nullable=False,
- comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories.",
- ),
- sa.Column("ferc_account_description", sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint(
- "ferc_account_id", name=op.f("pk_core_ferc__codes_accounts")
- ),
- )
- op.create_table(
- "core_pudl__codes_data_maturities",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_pudl__codes_data_maturities")
- ),
- )
- op.create_table(
- "core_pudl__codes_datasources",
- sa.Column(
- "datasource",
- sa.Enum(
- "censusdp1tract",
- "eia176",
- "eia860",
- "eia860m",
- "eia861",
- "eia923",
- "eia_bulk_elec",
- "eiawater",
- "epacems",
- "core_epa__assn_epacamd_eia",
- "ferc1",
- "ferc2",
- "ferc6",
- "ferc60",
- "ferc714",
- "ferceqr",
- "mshamines",
- "phmsagas",
- "pudl",
- ),
- nullable=False,
- comment="Code identifying a dataset available within PUDL.",
- ),
- sa.Column(
- "partitions",
- sa.Text(),
- nullable=True,
- comment="The data parititions used to generate this instance of the database.",
- ),
- sa.Column(
- "doi",
- sa.Text(),
- nullable=True,
- comment="Unique digitial object identifier of Zenodo archive.",
- ),
- sa.Column(
- "pudl_version",
- sa.Text(),
- nullable=True,
- comment="The version of PUDL used to generate this database.",
- ),
- sa.PrimaryKeyConstraint(
- "datasource", name=op.f("pk_core_pudl__codes_datasources")
- ),
- )
- op.create_table(
- "core_pudl__codes_subdivisions",
- sa.Column(
- "country_code",
- sa.Enum("CAN", "USA"),
- nullable=False,
- comment="Three letter ISO-3166 country code (e.g. USA or CAN).",
- ),
- sa.Column(
- "country_name",
- sa.Text(),
- nullable=True,
- comment="Full country name (e.g. United States of America).",
- ),
- sa.Column(
- "subdivision_code",
- sa.Enum(
- "MI",
- "NV",
- "DE",
- "NY",
- "GA",
- "NL",
- "ME",
- "IL",
- "WA",
- "WY",
- "NE",
- "ON",
- "MS",
- "IN",
- "AK",
- "NS",
- "VA",
- "NH",
- "HI",
- "YT",
- "NM",
- "AL",
- "PR",
- "CO",
- "NB",
- "PA",
- "AZ",
- "SD",
- "MP",
- "GU",
- "KY",
- "MN",
- "ND",
- "OK",
- "QC",
- "TN",
- "UT",
- "TX",
- "VT",
- "WI",
- "NU",
- "LA",
- "RI",
- "CT",
- "NC",
- "WV",
- "PE",
- "CA",
- "AR",
- "MO",
- "DC",
- "IA",
- "SC",
- "MB",
- "MD",
- "NT",
- "FL",
- "MA",
- "ID",
- "BC",
- "MT",
- "SK",
- "KS",
- "AB",
- "NJ",
- "VI",
- "AS",
- "OH",
- "OR",
- ),
- nullable=False,
- comment="Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).",
- ),
- sa.Column(
- "subdivision_name",
- sa.Text(),
- nullable=True,
- comment="Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.",
- ),
- sa.Column(
- "subdivision_type",
- sa.Text(),
- nullable=True,
- comment="ISO-3166 political subdivision type. E.g. state, province, outlying_area.",
- ),
- sa.Column(
- "timezone_approx",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.",
- ),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.Column(
- "division_name_us_census",
- sa.Text(),
- nullable=True,
- comment="Longer human readable name describing the US Census division.",
- ),
- sa.Column(
- "division_code_us_census",
- sa.Enum(
- "SAT", "NEW", "ENC", "WNC", "MTN", "PCN", "WSC", "MAT", "PCC", "ESC"
- ),
- nullable=True,
- comment="Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf",
- ),
- sa.Column(
- "region_name_us_census",
- sa.Text(),
- nullable=True,
- comment="Human-readable name of a US Census region.",
- ),
- sa.Column(
- "is_epacems_state",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System.",
- ),
- sa.PrimaryKeyConstraint(
- "country_code",
- "subdivision_code",
- name=op.f("pk_core_pudl__codes_subdivisions"),
- ),
- )
- op.create_table(
- "core_pudl__entity_plants_pudl",
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_pudl",
- sa.Text(),
- nullable=True,
- comment="Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.",
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_pudl", name=op.f("pk_core_pudl__entity_plants_pudl")
- ),
- )
- op.create_table(
- "core_pudl__entity_utilities_pudl",
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_pudl",
- sa.Text(),
- nullable=True,
- comment="Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.",
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_pudl", name=op.f("pk_core_pudl__entity_utilities_pudl")
- ),
- )
- op.create_table(
- "out_eia861__compiled_geometry_balancing_authorities",
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=False,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "county_name_census",
- sa.Text(),
- nullable=True,
- comment="County name as specified in Census DP1 Data.",
- ),
- sa.Column(
- "population",
- sa.Float(),
- nullable=True,
- comment="County population, sourced from Census DP1 data.",
- ),
- sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=False,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("county", sa.Text(), nullable=False, comment="County name."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_id_eia",
- "report_date",
- "county_id_fips",
- "county",
- name=op.f("pk_out_eia861__compiled_geometry_balancing_authorities"),
- ),
- )
- op.create_table(
- "out_eia861__compiled_geometry_utilities",
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=False,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "county_name_census",
- sa.Text(),
- nullable=True,
- comment="County name as specified in Census DP1 Data.",
- ),
- sa.Column(
- "population",
- sa.Float(),
- nullable=True,
- comment="County population, sourced from Census DP1 data.",
- ),
- sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia",
- "report_date",
- "county_id_fips",
- name=op.f("pk_out_eia861__compiled_geometry_utilities"),
- ),
- )
- op.create_table(
- "out_ferc714__hourly_predicted_state_demand",
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=False,
- comment="Two digit state FIPS code.",
- ),
- sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
- sa.Column("demand_mwh", sa.Float(), nullable=True),
- sa.Column(
- "scaled_demand_mwh",
- sa.Float(),
- nullable=True,
- comment="Estimated electricity demand scaled by the total sales within a state.",
- ),
- sa.PrimaryKeyConstraint(
- "state_id_fips",
- "utc_datetime",
- name=op.f("pk_out_ferc714__hourly_predicted_state_demand"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_heat_rate_by_unit",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- name=op.f("pk__out_eia__monthly_heat_rate_by_unit"),
- ),
- )
- op.create_table(
- "core_eia860__scd_emissions_control_equipment",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "emission_control_id_pudl",
- sa.Float(),
- nullable=False,
- comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "emission_control_equipment_type_code",
- sa.Text(),
- nullable=True,
- comment="Short code indicating the type of emission control equipment installed.",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "mercury_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Mercury control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "nox_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "particulate_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Particulate matter control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "so2_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "acid_gas_control",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
- ),
- sa.Column(
- "emission_control_equipment_cost",
- sa.Float(),
- nullable=True,
- comment="The total cost to install a piece of emission control equipment.",
- ),
- sa.Column(
- "emission_control_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
- ),
- sa.Column(
- "emission_control_retirement_date",
- sa.Date(),
- nullable=True,
- comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["emission_control_equipment_type_code"],
- ["core_eia__codes_emission_control_equipment_types.code"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_year",
- "plant_id_eia",
- "emission_control_id_pudl",
- name=op.f("pk_core_eia860__scd_emissions_control_equipment"),
- ),
- )
- op.create_table(
- "core_eia860__scd_utilities",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "plants_reported_owner",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_operator",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_asset_manager",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_other_relationship",
- sa.Boolean(),
- nullable=True,
- comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("attention_line", sa.Text(), nullable=True),
- sa.Column("address_2", sa.Text(), nullable=True),
- sa.Column(
- "zip_code_4",
- sa.Text(),
- nullable=True,
- comment="Four digit US Zip Code suffix.",
- ),
- sa.Column(
- "contact_firstname",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 1.",
- ),
- sa.Column(
- "contact_lastname",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 1.",
- ),
- sa.Column(
- "contact_title",
- sa.Text(),
- nullable=True,
- comment="Title of of utility contact 1.",
- ),
- sa.Column(
- "phone_number",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 1.",
- ),
- sa.Column(
- "phone_extension",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 1",
- ),
- sa.Column(
- "contact_firstname_2",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 2.",
- ),
- sa.Column(
- "contact_lastname_2",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 2.",
- ),
- sa.Column(
- "contact_title_2",
- sa.Text(),
- nullable=True,
- comment="Title of utility contact 2.",
- ),
- sa.Column(
- "phone_number_2",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 2.",
- ),
- sa.Column(
- "phone_extension_2",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 2",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", "report_date", name=op.f("pk_core_eia860__scd_utilities")
- ),
- )
- op.create_table(
- "core_eia861__yearly_advanced_metering_infrastructure",
- sa.Column("advanced_metering_infrastructure", sa.Integer(), nullable=True),
- sa.Column("automated_meter_reading", sa.Integer(), nullable=True),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=False,
- comment="High level categorization of customer type.",
- ),
- sa.Column("daily_digital_access_customers", sa.Integer(), nullable=True),
- sa.Column("direct_load_control_customers", sa.Integer(), nullable=True),
- sa.Column("energy_served_ami_mwh", sa.Float(), nullable=True),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("home_area_network", sa.Integer(), nullable=True),
- sa.Column("non_amr_ami", sa.Integer(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_code_eia",
- "customer_class",
- "report_date",
- "state",
- "utility_id_eia",
- name=op.f("pk_core_eia861__yearly_advanced_metering_infrastructure"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_response",
- sa.Column("actual_peak_demand_savings_mw", sa.Float(), nullable=True),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=False,
- comment="High level categorization of customer type.",
- ),
- sa.Column("customer_incentives_cost", sa.Float(), nullable=True),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("energy_savings_mwh", sa.Float(), nullable=True),
- sa.Column("other_costs", sa.Float(), nullable=True),
- sa.Column("potential_peak_demand_savings_mw", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_code_eia",
- "customer_class",
- "report_date",
- "state",
- "utility_id_eia",
- name=op.f("pk_core_eia861__yearly_demand_response"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_response_water_heater",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("water_heater", sa.Integer(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_code_eia",
- "report_date",
- "state",
- "utility_id_eia",
- name=op.f("pk_core_eia861__yearly_demand_response_water_heater"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_side_management_ee_dr",
- sa.Column("annual_indirect_program_cost", sa.Float(), nullable=True),
- sa.Column("annual_total_cost", sa.Float(), nullable=True),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "energy_efficiency_annual_actual_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("energy_efficiency_annual_cost", sa.Float(), nullable=True),
- sa.Column("energy_efficiency_annual_effects_mwh", sa.Float(), nullable=True),
- sa.Column(
- "energy_efficiency_annual_incentive_payment", sa.Float(), nullable=True
- ),
- sa.Column(
- "energy_efficiency_incremental_actual_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column(
- "energy_efficiency_incremental_effects_mwh", sa.Float(), nullable=True
- ),
- sa.Column(
- "load_management_annual_actual_peak_reduction_mw", sa.Float(), nullable=True
- ),
- sa.Column("load_management_annual_cost", sa.Float(), nullable=True),
- sa.Column("load_management_annual_effects_mwh", sa.Float(), nullable=True),
- sa.Column(
- "load_management_annual_incentive_payment", sa.Float(), nullable=True
- ),
- sa.Column(
- "load_management_annual_potential_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column(
- "load_management_incremental_actual_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("load_management_incremental_effects_mwh", sa.Float(), nullable=True),
- sa.Column(
- "load_management_incremental_potential_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("price_responsiveness_customers", sa.Integer(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("time_responsiveness_customers", sa.Integer(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_side_management_misc",
- sa.Column(
- "energy_savings_estimates_independently_verified",
- sa.Boolean(),
- nullable=True,
- ),
- sa.Column("energy_savings_independently_verified", sa.Boolean(), nullable=True),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("major_program_changes", sa.Boolean(), nullable=True),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("price_responsive_programs", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("reported_as_another_company", sa.Text(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("time_responsive_programs", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_side_management_sales",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
- sa.Column("sales_to_ultimate_consumers_mwh", sa.Float(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distributed_generation_fuel",
- sa.Column(
- "estimated_or_actual_fuel_data",
- sa.Enum("estimated", "actual"),
- nullable=True,
- ),
- sa.Column(
- "fuel_class",
- sa.Enum("gas", "oil", "other", "renewable", "water", "wind", "wood"),
- nullable=True,
- ),
- sa.Column("fuel_pct", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distributed_generation_misc",
- sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
- sa.Column(
- "distributed_generation_owned_capacity_mw", sa.Float(), nullable=True
- ),
- sa.Column(
- "estimated_or_actual_capacity_data",
- sa.Enum("estimated", "actual"),
- nullable=True,
- ),
- sa.Column("generators_num_less_1_mw", sa.Float(), nullable=True),
- sa.Column("generators_number", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("total_capacity_less_1_mw", sa.Float(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distributed_generation_tech",
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "estimated_or_actual_tech_data",
- sa.Enum("estimated", "actual"),
- nullable=True,
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "tech_class",
- sa.Enum(
- "backup",
- "chp_cogen",
- "combustion_turbine",
- "fuel_cell",
- "hydro",
- "internal_combustion",
- "other",
- "pv",
- "steam",
- "storage_pv",
- "all_storage",
- "total",
- "virtual_pv",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distribution_systems",
- sa.Column("circuits_with_voltage_optimization", sa.Integer(), nullable=True),
- sa.Column("distribution_circuits", sa.Integer(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_dynamic_pricing",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("critical_peak_pricing", sa.Boolean(), nullable=True),
- sa.Column("critical_peak_rebate", sa.Boolean(), nullable=True),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("real_time_pricing", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("time_of_use_pricing", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("variable_peak_pricing", sa.Boolean(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_energy_efficiency",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column("customer_incentives_incremental_cost", sa.Float(), nullable=True),
- sa.Column(
- "customer_incentives_incremental_life_cycle_cost", sa.Float(), nullable=True
- ),
- sa.Column(
- "customer_other_costs_incremental_life_cycle_cost",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("incremental_energy_savings_mwh", sa.Float(), nullable=True),
- sa.Column(
- "incremental_life_cycle_energy_savings_mwh", sa.Float(), nullable=True
- ),
- sa.Column(
- "incremental_life_cycle_peak_reduction_mwh", sa.Float(), nullable=True
- ),
- sa.Column("incremental_peak_reduction_mw", sa.Float(), nullable=True),
- sa.Column("other_costs_incremental_cost", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("weighted_average_life_years", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_green_pricing",
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("green_pricing_revenue", sa.Float(), nullable=True),
- sa.Column("rec_revenue", sa.Float(), nullable=True),
- sa.Column("rec_sales_mwh", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_mergers",
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("merge_address", sa.Text(), nullable=True),
- sa.Column("merge_city", sa.Text(), nullable=True),
- sa.Column("merge_company", sa.Text(), nullable=True),
- sa.Column("merge_date", sa.Date(), nullable=True),
- sa.Column(
- "merge_state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.",
- ),
- sa.Column("new_parent", sa.Text(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "zip_code_4",
- sa.Text(),
- nullable=True,
- comment="Four digit US Zip Code suffix.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_net_metering_customer_fuel_class",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("energy_displaced_mwh", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column("sold_to_utility_mwh", sa.Float(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "tech_class",
- sa.Enum(
- "backup",
- "chp_cogen",
- "combustion_turbine",
- "fuel_cell",
- "hydro",
- "internal_combustion",
- "other",
- "pv",
- "steam",
- "storage_pv",
- "all_storage",
- "total",
- "virtual_pv",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_net_metering_misc",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_non_net_metering_customer_fuel_class",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "tech_class",
- sa.Enum(
- "backup",
- "chp_cogen",
- "combustion_turbine",
- "fuel_cell",
- "hydro",
- "internal_combustion",
- "other",
- "pv",
- "steam",
- "storage_pv",
- "all_storage",
- "total",
- "virtual_pv",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_non_net_metering_misc",
- sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("generators_number", sa.Float(), nullable=True),
- sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("utility_owned_capacity_mw", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_operational_data_misc",
- sa.Column("consumed_by_facility_mwh", sa.Float(), nullable=True),
- sa.Column(
- "consumed_by_respondent_without_charge_mwh", sa.Float(), nullable=True
- ),
- sa.Column(
- "data_observed",
- sa.Boolean(),
- nullable=True,
- comment="Is the value observed (True) or imputed (False).",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("exchange_energy_delivered_mwh", sa.Float(), nullable=True),
- sa.Column("exchange_energy_received_mwh", sa.Float(), nullable=True),
- sa.Column("furnished_without_charge_mwh", sa.Float(), nullable=True),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column("net_power_exchanged_mwh", sa.Float(), nullable=True),
- sa.Column("net_wheeled_power_mwh", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("retail_sales_mwh", sa.Float(), nullable=True),
- sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("summer_peak_demand_mw", sa.Float(), nullable=True),
- sa.Column("total_disposition_mwh", sa.Float(), nullable=True),
- sa.Column("total_energy_losses_mwh", sa.Float(), nullable=True),
- sa.Column("total_sources_mwh", sa.Float(), nullable=True),
- sa.Column("transmission_by_other_losses_mwh", sa.Float(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("wheeled_power_delivered_mwh", sa.Float(), nullable=True),
- sa.Column("wheeled_power_received_mwh", sa.Float(), nullable=True),
- sa.Column("wholesale_power_purchases_mwh", sa.Float(), nullable=True),
- sa.Column("winter_peak_demand_mw", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_operational_data_revenue",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("revenue", sa.Float(), nullable=True),
- sa.Column(
- "revenue_class",
- sa.Enum(
- "credits_or_adjustments",
- "delivery_customers",
- "other",
- "retail_sales",
- "sales_for_resale",
- "total",
- "transmission",
- "unbundled",
- ),
- nullable=True,
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_reliability",
- sa.Column(
- "caidi_w_major_event_days_minus_loss_of_service_minutes",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("caidi_w_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column("caidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("highest_distribution_voltage_kv", sa.Float(), nullable=True),
- sa.Column("inactive_accounts_included", sa.Boolean(), nullable=True),
- sa.Column("momentary_interruption_definition", sa.Text(), nullable=True),
- sa.Column("outages_recorded_automatically", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "saidi_w_major_event_days_minus_loss_of_service_minutes",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("saidi_w_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column("saidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column("saifi_w_major_event_days_customers", sa.Float(), nullable=True),
- sa.Column(
- "saifi_w_major_event_days_minus_loss_of_service_customers",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("saifi_wo_major_event_days_customers", sa.Float(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "standard", sa.Enum("ieee_standard", "other_standard"), nullable=True
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["momentary_interruption_definition"],
- ["core_eia__codes_momentary_interruptions.code"],
- name=op.f(
- "fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_sales",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=False,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "business_model", sa.Enum("retail", "energy_services"), nullable=False
- ),
- sa.Column(
- "data_observed",
- sa.Boolean(),
- nullable=True,
- comment="Is the value observed (True) or imputed (False).",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column(
- "service_type", sa.Enum("bundled", "energy", "delivery"), nullable=False
- ),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "sales_revenue",
- sa.Float(),
- nullable=True,
- comment="Revenue from electricity sold.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia",
- "state",
- "report_date",
- "balancing_authority_code_eia",
- "customer_class",
- "business_model",
- "service_type",
- name=op.f("pk_core_eia861__yearly_sales"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_service_territory",
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=False,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "utility_id_eia",
- "county_id_fips",
- name=op.f("pk_core_eia861__yearly_service_territory"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_utility_data_misc",
- sa.Column("alternative_fuel_vehicle_2_activity", sa.Boolean(), nullable=True),
- sa.Column("alternative_fuel_vehicle_activity", sa.Boolean(), nullable=True),
- sa.Column("bundled_activity", sa.Boolean(), nullable=True),
- sa.Column("buying_distribution_activity", sa.Boolean(), nullable=True),
- sa.Column("buying_transmission_activity", sa.Boolean(), nullable=True),
- sa.Column("distribution_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("generation_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("operates_generating_plant", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("retail_marketing_activity", sa.Boolean(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("transmission_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("wholesale_marketing_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_utility_data_nerc",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "nerc_regions_of_operation",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_utility_data_rto",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "rtos_of_operation",
- sa.Enum("caiso", "ercot", "isone", "miso", "nyiso", "other", "pjm", "spp"),
- nullable=True,
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia923__entity_coalmine",
- sa.Column(
- "mine_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="Dynamically assigned PUDL mine identifier.",
- ),
- sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
- sa.Column(
- "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=True,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "mine_id_msha",
- sa.Integer(),
- nullable=True,
- comment="MSHA issued mine identifier.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mine_type_code"],
- ["core_eia__codes_coalmine_types.code"],
- name=op.f(
- "fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "mine_id_pudl", name=op.f("pk_core_eia923__entity_coalmine")
- ),
- )
- op.create_table(
- "core_eia923__monthly_generation_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_code_aer",
- sa.Text(),
- nullable=True,
- comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["fuel_type_code_aer"],
- ["core_eia__codes_fuel_types_aer.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_core_eia923__monthly_generation_fuel"),
- ),
- )
- op.create_table(
- "core_eia923__monthly_generation_fuel_nuclear",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "nuclear_unit_id",
- sa.Text(),
- nullable=False,
- comment="For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_code_aer",
- sa.Text(),
- nullable=True,
- comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["fuel_type_code_aer"],
- ["core_eia__codes_fuel_types_aer.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "nuclear_unit_id",
- "energy_source_code",
- "prime_mover_code",
- name=op.f("pk_core_eia923__monthly_generation_fuel_nuclear"),
- ),
- )
- op.create_table(
- "core_eia__entity_boilers",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "boiler_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of boiler manufacturer.",
- ),
- sa.Column(
- "boiler_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="EIA short code for boiler manufacturer.",
- ),
- sa.ForeignKeyConstraint(
- ["boiler_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "boiler_id", name=op.f("pk_core_eia__entity_boilers")
- ),
- )
- op.create_table(
- "core_eia__entity_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "generator_id", name=op.f("pk_core_eia__entity_generators")
- ),
- )
- op.create_table(
- "core_ferc714__hourly_demand_pa",
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
- sa.Column(
- "timezone",
- sa.Enum(
- "America/New_York",
- "America/Chicago",
- "America/Denver",
- "America/Los_Angeles",
- "America/Anchorage",
- "Pacific/Honolulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column("demand_mwh", sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(
- ["respondent_id_ferc714"],
- ["core_ferc714__respondent_id.respondent_id_ferc714"],
- name=op.f(
- "fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "respondent_id_ferc714",
- "utc_datetime",
- name=op.f("pk_core_ferc714__hourly_demand_pa"),
- ),
- )
- op.create_table(
- "core_pudl__assn_plants_eia",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", name=op.f("pk_core_pudl__assn_plants_eia")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_eia",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", name=op.f("pk_core_pudl__assn_utilities_eia")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_ferc1",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1", name=op.f("pk_core_pudl__assn_utilities_ferc1")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_plants",
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_pudl",
- "plant_id_pudl",
- name=op.f("pk_core_pudl__assn_utilities_plants"),
- ),
- )
- op.create_table(
- "out_eia860__yearly_emissions_control_equipment",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "emission_control_id_pudl",
- sa.Float(),
- nullable=False,
- comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "emission_control_equipment_type_code",
- sa.Text(),
- nullable=True,
- comment="Short code indicating the type of emission control equipment installed.",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "mercury_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Mercury control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "nox_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "particulate_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Particulate matter control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "so2_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "acid_gas_control",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
- ),
- sa.Column(
- "emission_control_equipment_cost",
- sa.Float(),
- nullable=True,
- comment="The total cost to install a piece of emission control equipment.",
- ),
- sa.Column(
- "emission_control_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
- ),
- sa.Column(
- "emission_control_retirement_date",
- sa.Date(),
- nullable=True,
- comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["emission_control_equipment_type_code"],
- ["core_eia__codes_emission_control_equipment_types.code"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_year",
- "plant_id_eia",
- "emission_control_id_pudl",
- name=op.f("pk_out_eia860__yearly_emissions_control_equipment"),
- ),
- )
- op.create_table(
- "out_eia923__fuel_receipts_costs",
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "contract_type_code",
- sa.Enum("S", "C", "NC", "T"),
- nullable=True,
- comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
- ),
- sa.Column(
- "contract_expiration_date",
- sa.Date(),
- nullable=True,
- comment="Date contract expires.Format: MMYY.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=True,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_group_code",
- sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
- nullable=True,
- comment="Fuel groups used in the Electric Power Monthly",
- ),
- sa.Column(
- "supplier_name",
- sa.Text(),
- nullable=True,
- comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "bulk_agg_fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column(
- "primary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the longest distance transported.",
- ),
- sa.Column(
- "secondary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the second longest distance transported.",
- ),
- sa.Column(
- "natural_gas_transport_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natural gas transportation service.",
- ),
- sa.Column(
- "natural_gas_delivery_contract_type_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natrual gas delivery service:",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "mine_id_msha",
- sa.Integer(),
- nullable=True,
- comment="MSHA issued mine identifier.",
- ),
- sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
- sa.Column(
- "mine_state",
- sa.Text(),
- nullable=True,
- comment="State where the coal mine is located. Two letter abbreviation.",
- ),
- sa.Column(
- "coalmine_county_id_fips",
- sa.Text(),
- nullable=True,
- comment="County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.",
- ),
- sa.Column(
- "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
- ),
- sa.ForeignKeyConstraint(
- ["contract_type_code"],
- ["core_eia__codes_contract_types.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mine_type_code"],
- ["core_eia__codes_coalmine_types.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["primary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["secondary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia923__generation_fuel_combined",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_code_aer",
- sa.Text(),
- nullable=True,
- comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["fuel_type_code_aer"],
- ["core_eia__codes_fuel_types_aer.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_out_eia923__generation_fuel_combined"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_fuel_receipts_costs",
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_combined",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_out_eia923__monthly_generation_fuel_combined"),
- ),
- )
- op.create_table(
- "out_ferc714__respondents_with_fips",
- sa.Column("eia_code", sa.Integer(), nullable=True),
- sa.Column(
- "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
- ),
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=True),
- sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=True,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.ForeignKeyConstraint(
- ["respondent_id_ferc714"],
- ["core_ferc714__respondent_id.respondent_id_ferc714"],
- name=op.f(
- "fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id"
- ),
- ),
- )
- op.create_table(
- "out_ferc714__summarized_demand",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
- sa.Column("demand_annual_mwh", sa.Float(), nullable=True),
- sa.Column(
- "population",
- sa.Float(),
- nullable=True,
- comment="County population, sourced from Census DP1 data.",
- ),
- sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
- sa.Column(
- "population_density_km2",
- sa.Float(),
- nullable=True,
- comment="Average population per sq. km area of a service territory.",
- ),
- sa.Column(
- "demand_annual_per_capita_mwh",
- sa.Float(),
- nullable=True,
- comment="Per-capita annual demand, averaged using Census county-level population estimates.",
- ),
- sa.Column(
- "demand_density_mwh_km2",
- sa.Float(),
- nullable=True,
- comment="Annual demand per km2 of a given service territory.",
- ),
- sa.Column("eia_code", sa.Integer(), nullable=True),
- sa.Column(
- "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
- ),
- sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.ForeignKeyConstraint(
- ["respondent_id_ferc714"],
- ["core_ferc714__respondent_id.respondent_id_ferc714"],
- name=op.f(
- "fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "respondent_id_ferc714",
- "report_date",
- name=op.f("pk_out_ferc714__summarized_demand"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_capacity_factor_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_capacity_factor_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_derived_generator_attributes",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_derived_generator_attributes"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_fuel_cost_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_fuel_cost_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_heat_rate_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_heat_rate_by_generator"),
- ),
- )
- op.create_table(
- "core_eia860__scd_plants",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "ash_impoundment",
- sa.Boolean(),
- nullable=True,
- comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
- ),
- sa.Column(
- "ash_impoundment_lined",
- sa.Boolean(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, is the impoundment lined?",
- ),
- sa.Column(
- "ash_impoundment_status",
- sa.Text(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "datum",
- sa.Text(),
- nullable=True,
- comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
- ),
- sa.Column(
- "energy_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility has energy storage capabilities.",
- ),
- sa.Column(
- "ferc_cogen_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_cogen_status",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
- ),
- sa.Column(
- "ferc_small_power_producer_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_small_power_producer",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_qualifying_facility_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "grid_voltage_1_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_2_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_3_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "iso_rto_code",
- sa.Text(),
- nullable=True,
- comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
- ),
- sa.Column(
- "liquefied_natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
- ),
- sa.Column(
- "natural_gas_local_distribution_company",
- sa.Text(),
- nullable=True,
- comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
- ),
- sa.Column(
- "natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have on-site storage of natural gas.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_1",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_2",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_3",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "net_metering",
- sa.Boolean(),
- nullable=True,
- comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
- ),
- sa.Column(
- "pipeline_notes",
- sa.Text(),
- nullable=True,
- comment="Additional owner or operator of natural gas pipeline.",
- ),
- sa.Column(
- "primary_purpose_id_naics",
- sa.Integer(),
- nullable=True,
- comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
- ),
- sa.Column(
- "regulatory_status_code",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the plant is regulated or non-regulated.",
- ),
- sa.Column(
- "reporting_frequency_code",
- sa.Enum("A", "AM", "M"),
- nullable=True,
- comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
- ),
- sa.Column(
- "sector_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "sector_name_eia",
- sa.Text(),
- nullable=True,
- comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "service_area",
- sa.Text(),
- nullable=True,
- comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
- ),
- sa.Column(
- "transmission_distribution_owner_id",
- sa.Integer(),
- nullable=True,
- comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_name",
- sa.Text(),
- nullable=True,
- comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_state",
- sa.Text(),
- nullable=True,
- comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "water_source",
- sa.Text(),
- nullable=True,
- comment="Name of water source associated with the plant.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["balancing_authority_code_eia"],
- ["core_eia__codes_balancing_authorities.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["reporting_frequency_code"],
- ["core_eia__codes_reporting_frequencies.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["sector_id_eia"],
- ["core_eia__codes_sector_consolidated.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "report_date", name=op.f("pk_core_eia860__scd_plants")
- ),
- )
- op.create_table(
- "core_eia923__monthly_boiler_fuel",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_core_eia923__monthly_boiler_fuel"),
- ),
- )
- op.create_table(
- "core_eia923__monthly_fuel_receipts_costs",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "contract_type_code",
- sa.Enum("S", "C", "NC", "T"),
- nullable=True,
- comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
- ),
- sa.Column(
- "contract_expiration_date",
- sa.Date(),
- nullable=True,
- comment="Date contract expires.Format: MMYY.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=True,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_group_code",
- sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
- nullable=True,
- comment="Fuel groups used in the Electric Power Monthly",
- ),
- sa.Column(
- "mine_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL mine identifier.",
- ),
- sa.Column(
- "supplier_name",
- sa.Text(),
- nullable=True,
- comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "primary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the longest distance transported.",
- ),
- sa.Column(
- "secondary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the second longest distance transported.",
- ),
- sa.Column(
- "natural_gas_transport_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natural gas transportation service.",
- ),
- sa.Column(
- "natural_gas_delivery_contract_type_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natrual gas delivery service:",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["contract_type_code"],
- ["core_eia__codes_contract_types.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mine_id_pudl"],
- ["core_eia923__entity_coalmine.mine_id_pudl"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["primary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["secondary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- )
- op.create_table(
- "core_eia923__monthly_generation",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_core_eia923__monthly_generation"),
- ),
- )
- op.create_table(
- "core_epa__assn_epacamd_eia",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_epa",
- sa.Integer(),
- nullable=True,
- comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
- ),
- sa.Column(
- "emissions_unit_id_epa",
- sa.Text(),
- nullable=True,
- comment="Emissions (smokestack) unit monitored by EPA CEMS.",
- ),
- sa.Column(
- "generator_id_epa",
- sa.Text(),
- nullable=True,
- comment="Generator ID used by the EPA.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=True, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_balance_sheet_assets",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "asset_type",
- name=op.f("pk_core_ferc1__yearly_balance_sheet_assets"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_balance_sheet_liabilities",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "liability_type",
- sa.Text(),
- nullable=False,
- comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "liability_type",
- name=op.f("pk_core_ferc1__yearly_balance_sheet_liabilities"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_cash_flows",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "amount_type",
- sa.Text(),
- nullable=False,
- comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
- ),
- sa.Column(
- "amount",
- sa.Float(),
- nullable=True,
- comment="Reported amount of dollars. This could be a balance or a change in value.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_cash_flows_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "amount_type",
- name=op.f("pk_core_ferc1__yearly_cash_flows"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_depreciation_amortization_summary",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "ferc_account_label",
- name=op.f("pk_core_ferc1__yearly_depreciation_amortization_summary"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electric_energy_dispositions",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_disposition_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_disposition_type",
- name=op.f("pk_core_ferc1__yearly_electric_energy_dispositions"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electric_energy_sources",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_source_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_source_type",
- name=op.f("pk_core_ferc1__yearly_electric_energy_sources"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electric_operating_expenses",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "expense_type", sa.Text(), nullable=False, comment="The type of expense."
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "expense_type",
- name=op.f("pk_core_ferc1__yearly_electric_operating_expenses"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electric_operating_revenues",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "revenue_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of revenues.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "revenue_type",
- name=op.f("pk_core_ferc1__yearly_electric_operating_revenues"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electric_plant_depreciation_changes",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=False,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "depreciation_type",
- "plant_status",
- "utility_type",
- name=op.f("pk_core_ferc1__yearly_electric_plant_depreciation_changes"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electric_plant_depreciation_functional",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=True,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "plant_status",
- "utility_type",
- name=op.f("pk_core_ferc1__yearly_electric_plant_depreciation_functional"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_electricity_sales_by_rate_schedule",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "rate_schedule_type",
- sa.Text(),
- nullable=True,
- comment="Categorization of rate schedule type.",
- ),
- sa.Column(
- "billing_status",
- sa.Text(),
- nullable=True,
- comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
- ),
- sa.Column(
- "rate_schedule_description",
- sa.Text(),
- nullable=True,
- comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
- ),
- sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_income_statement",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "income_type",
- sa.Text(),
- nullable=False,
- comment="Type of income reported in income_statement_ferc1 table.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "income_type",
- name=op.f("pk_core_ferc1__yearly_income_statement"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_other_regulatory_liabilities",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "increase_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The increase during the reporting period of other regulatory liabilities.",
- ),
- sa.Column(
- "account_detail",
- sa.Text(),
- nullable=True,
- comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
- ),
- sa.Column(
- "decrease_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The decrease during the reporting period of other regulatory liabilities.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_plant_in_service",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "additions",
- sa.Float(),
- nullable=True,
- comment="Cost of acquisition of items classified within the account.",
- ),
- sa.Column(
- "retirements",
- sa.Float(),
- nullable=True,
- comment="Cost of disposal of items classified within the account.",
- ),
- sa.Column(
- "adjustments",
- sa.Float(),
- nullable=True,
- comment="Cost of adjustments to the account.",
- ),
- sa.Column(
- "transfers",
- sa.Float(),
- nullable=True,
- comment="Cost of transfers into (out of) the account.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "ferc_account_label",
- name=op.f("pk_core_ferc1__yearly_plant_in_service"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_purchased_power_and_exchanges",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "seller_name",
- sa.Text(),
- nullable=True,
- comment="Name of the seller, or the other party in an exchange transaction.",
- ),
- sa.Column(
- "purchase_type_code",
- sa.Text(),
- nullable=True,
- comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
- ),
- sa.Column(
- "tariff",
- sa.Text(),
- nullable=True,
- comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
- ),
- sa.Column(
- "billing_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
- ),
- sa.Column(
- "non_coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
- ),
- sa.Column(
- "coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
- ),
- sa.Column(
- "purchased_mwh",
- sa.Float(),
- nullable=True,
- comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
- ),
- sa.Column(
- "purchased_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for energy storage.",
- ),
- sa.Column(
- "purchased_other_than_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for other than energy storage.",
- ),
- sa.Column(
- "received_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "delivered_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
- ),
- sa.Column(
- "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
- ),
- sa.Column(
- "other_charges",
- sa.Float(),
- nullable=True,
- comment="Other charges, including out-of-period adjustments (USD).",
- ),
- sa.Column(
- "total_settlement",
- sa.Float(),
- nullable=True,
- comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
- ),
- sa.ForeignKeyConstraint(
- ["purchase_type_code"],
- ["core_ferc1__codes_power_purchase_types.code"],
- name=op.f(
- "fk_core_ferc1__yearly_purchased_power_and_exchanges_purchase_type_code_core_ferc1__codes_power_purchase_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_purchased_power_and_exchanges_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_retained_earnings",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "earnings_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of earnings.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "earnings_type",
- name=op.f("pk_core_ferc1__yearly_retained_earnings"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_transmission_lines",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "start_point",
- sa.Text(),
- nullable=True,
- comment="The starting point of a transmission line.",
- ),
- sa.Column(
- "end_point",
- sa.Text(),
- nullable=True,
- comment="The end point of a transmission line.",
- ),
- sa.Column(
- "operating_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
- ),
- sa.Column(
- "designed_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
- ),
- sa.Column(
- "supporting_structure_type",
- sa.Text(),
- nullable=True,
- comment="Supporting structure of the transmission line.",
- ),
- sa.Column(
- "transmission_line_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
- ),
- sa.Column(
- "transmission_line_and_structures_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
- ),
- sa.Column(
- "num_transmission_circuits",
- sa.Integer(),
- nullable=True,
- comment="Number of circuits in a transmission line.",
- ),
- sa.Column(
- "conductor_size_and_material",
- sa.Text(),
- nullable=True,
- comment="Size of transmission conductor and material of the transmission line.",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of Land and land rights for the transmission line.",
- ),
- sa.Column(
- "capex_other",
- sa.Float(),
- nullable=True,
- comment="Construction and other costs for the transmission line.",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total costs for the transmission line.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Operating expenses for the transmission line.",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Maintenance expenses for the transmission line.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Rent expenses for the transmission line.",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Overall expenses for the transmission line.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_transmission_lines_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "utility_type_other",
- sa.Text(),
- nullable=True,
- comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. This field is reported only in the DBF reporting years (1994-2020).",
- ),
- sa.Column(
- "utility_plant_asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_utility_plant_and_depreciation_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "utility_plant_asset_type",
- name=op.f("pk_core_ferc1__yearly_utility_plant_and_depreciation_summary"),
- ),
- )
- op.create_table(
- "core_pudl__assn_plants_ferc1",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=False,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "plant_name_ferc1",
- name=op.f("pk_core_pudl__assn_plants_ferc1"),
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_ferc1_dbf",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_ferc1_dbf",
- sa.Integer(),
- nullable=False,
- comment="FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1_dbf", name=op.f("pk_core_pudl__assn_utilities_ferc1_dbf")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_ferc1_xbrl",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_ferc1_xbrl",
- sa.Text(),
- nullable=False,
- comment="FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1_xbrl",
- name=op.f("pk_core_pudl__assn_utilities_ferc1_xbrl"),
- ),
- )
- op.create_table(
- "out_eia923__boiler_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_out_eia923__boiler_fuel"),
- ),
- )
- op.create_table(
- "out_eia923__generation",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_out_eia923__generation"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_boiler_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_out_eia923__monthly_boiler_fuel"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_out_eia923__monthly_generation"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia923__monthly_generation_fuel_by_generator"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_by_generator_energy_source",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name=op.f(
- "pk_out_eia923__monthly_generation_fuel_by_generator_energy_source"
- ),
- ),
- )
- op.create_table(
- "out_eia__monthly_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia__monthly_generators"),
- ),
- )
- op.create_table(
- "out_eia__yearly_utilities",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "plants_reported_owner",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_operator",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_asset_manager",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_other_relationship",
- sa.Boolean(),
- nullable=True,
- comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("attention_line", sa.Text(), nullable=True),
- sa.Column("address_2", sa.Text(), nullable=True),
- sa.Column(
- "zip_code_4",
- sa.Text(),
- nullable=True,
- comment="Four digit US Zip Code suffix.",
- ),
- sa.Column(
- "contact_firstname",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 1.",
- ),
- sa.Column(
- "contact_lastname",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 1.",
- ),
- sa.Column(
- "contact_title",
- sa.Text(),
- nullable=True,
- comment="Title of of utility contact 1.",
- ),
- sa.Column(
- "phone_number",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 1.",
- ),
- sa.Column(
- "phone_extension",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 1",
- ),
- sa.Column(
- "contact_firstname_2",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 2.",
- ),
- sa.Column(
- "contact_lastname_2",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 2.",
- ),
- sa.Column(
- "contact_title_2",
- sa.Text(),
- nullable=True,
- comment="Title of utility contact 2.",
- ),
- sa.Column(
- "phone_number_2",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 2.",
- ),
- sa.Column(
- "phone_extension_2",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 2",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", "report_date", name=op.f("pk_out_eia__yearly_utilities")
- ),
- )
- op.create_table(
- "out_ferc1__yearly_balance_sheet_assets",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_assets_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_assets_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "asset_type",
- name=op.f("pk_out_ferc1__yearly_balance_sheet_assets"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_balance_sheet_liabilities",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "liability_type",
- sa.Text(),
- nullable=False,
- comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "liability_type",
- name=op.f("pk_out_ferc1__yearly_balance_sheet_liabilities"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_cash_flows",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "amount_type",
- sa.Text(),
- nullable=False,
- comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
- ),
- sa.Column(
- "amount",
- sa.Float(),
- nullable=True,
- comment="Reported amount of dollars. This could be a balance or a change in value.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_cash_flows_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_cash_flows_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "amount_type",
- name=op.f("pk_out_ferc1__yearly_cash_flows"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_depreciation_amortization_summary",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_amortization_summary_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "ferc_account_label",
- name=op.f("pk_out_ferc1__yearly_depreciation_amortization_summary"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electric_energy_dispositions",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_disposition_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_energy_dispositions_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_disposition_type",
- name=op.f("pk_out_ferc1__yearly_electric_energy_dispositions"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electric_energy_sources",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_source_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_energy_sources_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_energy_sources_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_source_type",
- name=op.f("pk_out_ferc1__yearly_electric_energy_sources"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electric_operating_expenses",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "expense_type", sa.Text(), nullable=False, comment="The type of expense."
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_operating_expenses_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_operating_expenses_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "expense_type",
- name=op.f("pk_out_ferc1__yearly_electric_operating_expenses"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electric_operating_revenues",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "revenue_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of revenues.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_operating_revenues_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_operating_revenues_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "revenue_type",
- name=op.f("pk_out_ferc1__yearly_electric_operating_revenues"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electric_plant_depreciation_changes",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=False,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_plant_depreciation_changes_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "depreciation_type",
- "plant_status",
- "utility_type",
- name=op.f("pk_out_ferc1__yearly_electric_plant_depreciation_changes"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electric_plant_depreciation_functional",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=True,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electric_plant_depreciation_functional_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "plant_status",
- "utility_type",
- name=op.f("pk_out_ferc1__yearly_electric_plant_depreciation_functional"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_electricity_sales_by_rate_schedule",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "rate_schedule_type",
- sa.Text(),
- nullable=True,
- comment="Categorization of rate schedule type.",
- ),
- sa.Column(
- "billing_status",
- sa.Text(),
- nullable=True,
- comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
- ),
- sa.Column(
- "rate_schedule_description",
- sa.Text(),
- nullable=True,
- comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
- ),
- sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_electricity_sales_by_rate_schedule_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_income_statement",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "income_type",
- sa.Text(),
- nullable=False,
- comment="Type of income reported in income_statement_ferc1 table.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_income_statement_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_income_statement_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "income_type",
- name=op.f("pk_out_ferc1__yearly_income_statement"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_other_regulatory_liabilities",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "increase_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The increase during the reporting period of other regulatory liabilities.",
- ),
- sa.Column(
- "account_detail",
- sa.Text(),
- nullable=True,
- comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
- ),
- sa.Column(
- "decrease_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The decrease during the reporting period of other regulatory liabilities.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_other_regulatory_liabilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_plant_in_service",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "additions",
- sa.Float(),
- nullable=True,
- comment="Cost of acquisition of items classified within the account.",
- ),
- sa.Column(
- "adjustments",
- sa.Float(),
- nullable=True,
- comment="Cost of adjustments to the account.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "retirements",
- sa.Float(),
- nullable=True,
- comment="Cost of disposal of items classified within the account.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "transfers",
- sa.Float(),
- nullable=True,
- comment="Cost of transfers into (out of) the account.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_plant_in_service_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_plant_in_service_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "ferc_account_label",
- name=op.f("pk_out_ferc1__yearly_plant_in_service"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_purchased_power_and_exchanges",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "seller_name",
- sa.Text(),
- nullable=True,
- comment="Name of the seller, or the other party in an exchange transaction.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "billing_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
- ),
- sa.Column(
- "coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
- ),
- sa.Column(
- "delivered_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
- ),
- sa.Column(
- "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
- ),
- sa.Column(
- "non_coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
- ),
- sa.Column(
- "other_charges",
- sa.Float(),
- nullable=True,
- comment="Other charges, including out-of-period adjustments (USD).",
- ),
- sa.Column(
- "purchase_type_code",
- sa.Text(),
- nullable=True,
- comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
- ),
- sa.Column(
- "purchased_mwh",
- sa.Float(),
- nullable=True,
- comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
- ),
- sa.Column(
- "purchased_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for energy storage.",
- ),
- sa.Column(
- "purchased_other_than_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for other than energy storage.",
- ),
- sa.Column(
- "received_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "tariff",
- sa.Text(),
- nullable=True,
- comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
- ),
- sa.Column(
- "total_settlement",
- sa.Float(),
- nullable=True,
- comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
- ),
- sa.ForeignKeyConstraint(
- ["purchase_type_code"],
- ["core_ferc1__codes_power_purchase_types.code"],
- name=op.f(
- "fk_out_ferc1__yearly_purchased_power_and_exchanges_purchase_type_code_core_ferc1__codes_power_purchase_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_purchased_power_and_exchanges_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_purchased_power_and_exchanges_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_retained_earnings",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "earnings_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of earnings.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_retained_earnings_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_retained_earnings_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "earnings_type",
- name=op.f("pk_out_ferc1__yearly_retained_earnings"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_transmission_lines",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "start_point",
- sa.Text(),
- nullable=True,
- comment="The starting point of a transmission line.",
- ),
- sa.Column(
- "end_point",
- sa.Text(),
- nullable=True,
- comment="The end point of a transmission line.",
- ),
- sa.Column(
- "operating_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
- ),
- sa.Column(
- "designed_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
- ),
- sa.Column(
- "supporting_structure_type",
- sa.Text(),
- nullable=True,
- comment="Supporting structure of the transmission line.",
- ),
- sa.Column(
- "transmission_line_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
- ),
- sa.Column(
- "transmission_line_and_structures_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
- ),
- sa.Column(
- "num_transmission_circuits",
- sa.Integer(),
- nullable=True,
- comment="Number of circuits in a transmission line.",
- ),
- sa.Column(
- "conductor_size_and_material",
- sa.Text(),
- nullable=True,
- comment="Size of transmission conductor and material of the transmission line.",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_other",
- sa.Float(),
- nullable=True,
- comment="Other costs associated with the plant (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_transmission_lines_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_transmission_lines_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_utility_plant_and_depreciation_summary",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "utility_type_other",
- sa.Text(),
- nullable=True,
- comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. This field is reported only in the DBF reporting years (1994-2020).",
- ),
- sa.Column(
- "utility_plant_asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_utility_plant_and_depreciation_summary_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_utility_plant_and_depreciation_summary_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "utility_plant_asset_type",
- name=op.f("pk_out_ferc1__yearly_utility_plant_and_depreciation_summary"),
- ),
- )
- op.create_table(
- "_out_eia__plants_utilities",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "utility_id_eia",
- name=op.f("pk__out_eia__plants_utilities"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_heat_rate_by_unit",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- name=op.f("pk__out_eia__yearly_heat_rate_by_unit"),
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_hydroelectric_plants",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_hydroelectric_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_hydroelectric_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_hydroelectric_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk__out_ferc1__yearly_hydroelectric_plants")
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_plants_utilities",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=False,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "plant_name_ferc1",
- name=op.f("pk__out_ferc1__yearly_plants_utilities"),
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_pumped_storage_plants",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_pumped_storage_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_pumped_storage_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_pumped_storage_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk__out_ferc1__yearly_pumped_storage_plants")
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_small_plants",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_small_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_small_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_small_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk__out_ferc1__yearly_small_plants")
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_steam_plants",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_annual_addition",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_addition_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_per_kw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per kw.",
- ),
- sa.Column(
- "capex_annual_per_mw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mw_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_annual_per_mwh_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wo_retirement_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD) without retirements.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_fuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD) per megawatt-hour (Mwh).",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_nonfuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Investments in non-fuel production expenses per Mwh.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plants",
- sa.Float(),
- nullable=True,
- comment="Maintenance of electrical plant.",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_steam_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_steam_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_steam_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk__out_ferc1__yearly_steam_plants")
- ),
- )
- op.create_table(
- "core_eia860__scd_boilers",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "boiler_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the boiler began or is planned to begin commercial operation.",
- ),
- sa.Column(
- "boiler_status",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying boiler operational status.",
- ),
- sa.Column(
- "boiler_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the boiler.",
- ),
- sa.Column(
- "boiler_type",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
- ),
- sa.Column(
- "firing_type_1",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_2",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_3",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_rate_using_coal_tons_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
- ),
- sa.Column(
- "firing_rate_using_oil_bbls_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
- ),
- sa.Column(
- "firing_rate_using_gas_mcf_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
- ),
- sa.Column(
- "firing_rate_using_other_fuels",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
- ),
- sa.Column(
- "boiler_fuel_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "waste_heat_input_mmbtu_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
- ),
- sa.Column(
- "wet_dry_bottom",
- sa.Text(),
- nullable=True,
- comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
- ),
- sa.Column(
- "fly_ash_reinjection",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is capable of re-injecting fly ash.",
- ),
- sa.Column(
- "hrsg",
- sa.Boolean(),
- nullable=True,
- comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
- ),
- sa.Column(
- "max_steam_flow_1000_lbs_per_hour",
- sa.Float(),
- nullable=True,
- comment="Maximum continuous steam flow at 100 percent load.",
- ),
- sa.Column(
- "turndown_ratio",
- sa.Float(),
- nullable=True,
- comment="The turndown ratio for the boiler.",
- ),
- sa.Column(
- "efficiency_100pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "efficiency_50pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "air_flow_100pct_load_cubic_feet_per_minute",
- sa.Float(),
- nullable=True,
- comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
- ),
- sa.Column(
- "new_source_review",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is subject to New Source Review requirements.",
- ),
- sa.Column(
- "new_source_review_date",
- sa.Date(),
- nullable=True,
- comment="Month of issued New Source Review permit.",
- ),
- sa.Column(
- "new_source_review_permit",
- sa.Text(),
- nullable=True,
- comment="New Source Review permit number.",
- ),
- sa.Column(
- "regulation_particulate",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
- ),
- sa.Column(
- "regulation_so2",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
- ),
- sa.Column(
- "regulation_nox",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
- ),
- sa.Column(
- "standard_particulate_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "standard_so2_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "standard_nox_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "unit_particulate",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "unit_so2",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "unit_nox",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "compliance_year_particulate",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
- ),
- sa.Column(
- "compliance_year_nox",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
- ),
- sa.Column(
- "compliance_year_so2",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "compliance_year_mercury",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_4",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_5",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_6",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of nitrogen oxide control manufacturer.",
- ),
- sa.Column(
- "nox_control_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="Code indicating the nitrogen oxide control burner manufacturer.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_status_code",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control status code.",
- ),
- sa.Column(
- "regulation_mercury",
- sa.Text(),
- nullable=True,
- comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
- ),
- sa.Column(
- "so2_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "standard_so2_percent_scrubbed",
- sa.Float(),
- nullable=True,
- comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_status"],
- ["core_eia__codes_boiler_status.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_type"],
- ["core_eia__codes_boiler_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_1"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_2"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_3"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_4"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_5"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_6"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_status_code"],
- ["core_eia__codes_nox_control_status.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_mercury"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_nox"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_particulate"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_so2"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_nox"],
- ["core_eia__codes_nox_units.code"],
- name=op.f("fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units"),
- ),
- sa.ForeignKeyConstraint(
- ["unit_particulate"],
- ["core_eia__codes_particulate_units.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_so2"],
- ["core_eia__codes_so2_units.code"],
- name=op.f("fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units"),
- ),
- sa.ForeignKeyConstraint(
- ["wet_dry_bottom"],
- ["core_eia__codes_wet_dry_bottom.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "report_date",
- name=op.f("pk_core_eia860__scd_boilers"),
- ),
- )
- op.create_table(
- "core_eia860__scd_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_core_eia860__scd_generators"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_steam_plants_fuel",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_units",
- sa.Enum(
- "mmbtu",
- "gramsU",
- "kg",
- "mwhth",
- "kgal",
- "bbl",
- "klbs",
- "mcf",
- "gal",
- "mwdth",
- "btu",
- "ton",
- ),
- nullable=True,
- comment="Reported unit of measure for fuel.",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_unit_burned",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_cost_per_unit_delivered",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_steam_plants_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_hydroelectric_plants",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.Column(
- "plant_type",
- sa.Enum(
- "hydro",
- "storage",
- "run_of_river_with_storage",
- "na_category",
- "run_of_river",
- ),
- nullable=True,
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_hydroelectric_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_plants_pumped_storage",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_plants_pumped_storage_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_plants_small",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_plants_small_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_plants_steam",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "plant_type",
- sa.Enum(
- "internal_combustion",
- "combustion_turbine",
- "photovoltaic",
- "solar_thermal",
- "na_category",
- "nuclear",
- "steam",
- "geothermal",
- "combined_cycle",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_plants",
- sa.Float(),
- nullable=True,
- comment="Maintenance of electrical plant.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_plants_steam_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_fuel_receipts_costs",
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_combined",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_out_eia923__yearly_generation_fuel_combined"),
- ),
- )
- op.create_table(
- "out_eia__yearly_plants",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "ash_impoundment",
- sa.Boolean(),
- nullable=True,
- comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
- ),
- sa.Column(
- "ash_impoundment_lined",
- sa.Boolean(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, is the impoundment lined?",
- ),
- sa.Column(
- "ash_impoundment_status",
- sa.Text(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "datum",
- sa.Text(),
- nullable=True,
- comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
- ),
- sa.Column(
- "energy_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility has energy storage capabilities.",
- ),
- sa.Column(
- "ferc_cogen_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_cogen_status",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
- ),
- sa.Column(
- "ferc_small_power_producer_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_small_power_producer",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_qualifying_facility_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "grid_voltage_1_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_2_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_3_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "iso_rto_code",
- sa.Text(),
- nullable=True,
- comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
- ),
- sa.Column(
- "liquefied_natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
- ),
- sa.Column(
- "natural_gas_local_distribution_company",
- sa.Text(),
- nullable=True,
- comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
- ),
- sa.Column(
- "natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have on-site storage of natural gas.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_1",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_2",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_3",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "net_metering",
- sa.Boolean(),
- nullable=True,
- comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
- ),
- sa.Column(
- "pipeline_notes",
- sa.Text(),
- nullable=True,
- comment="Additional owner or operator of natural gas pipeline.",
- ),
- sa.Column(
- "primary_purpose_id_naics",
- sa.Integer(),
- nullable=True,
- comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
- ),
- sa.Column(
- "regulatory_status_code",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the plant is regulated or non-regulated.",
- ),
- sa.Column(
- "reporting_frequency_code",
- sa.Enum("A", "AM", "M"),
- nullable=True,
- comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
- ),
- sa.Column(
- "sector_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "sector_name_eia",
- sa.Text(),
- nullable=True,
- comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "service_area",
- sa.Text(),
- nullable=True,
- comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
- ),
- sa.Column(
- "transmission_distribution_owner_id",
- sa.Integer(),
- nullable=True,
- comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_name",
- sa.Text(),
- nullable=True,
- comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_state",
- sa.Text(),
- nullable=True,
- comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "water_source",
- sa.Text(),
- nullable=True,
- comment="Name of water source associated with the plant.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "balancing_authority_code_eia_consistent_rate",
- sa.Float(),
- nullable=True,
- comment="Percentage consistency of balancing authority code across entity records.",
- ),
- sa.ForeignKeyConstraint(
- ["balancing_authority_code_eia"],
- ["core_eia__codes_balancing_authorities.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f("fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants"),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["reporting_frequency_code"],
- ["core_eia__codes_reporting_frequencies.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["sector_id_eia"],
- ["core_eia__codes_sector_consolidated.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "report_date", name=op.f("pk_out_eia__yearly_plants")
- ),
- )
- op.create_table(
- "out_ferc1__yearly_all_plants",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_annual_addition",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_addition_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_per_kw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per kw.",
- ),
- sa.Column(
- "capex_annual_per_mw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mw_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_annual_per_mwh_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wo_retirement_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD) without retirements.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_nonfuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Investments in non-fuel production expenses per Mwh.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "ferc_license_id",
- sa.Text(),
- nullable=True,
- comment="The FERC license ID of a project.",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk_out_ferc1__yearly_all_plants")
- ),
- )
- op.create_table(
- "out_ferc1__yearly_steam_plants_fuel",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_total_cost",
- sa.Float(),
- nullable=True,
- comment="Total cost of consumed fuel.",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_unit_burned",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_cost_per_unit_delivered",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_units",
- sa.Enum(
- "mmbtu",
- "gramsU",
- "kg",
- "mwhth",
- "kgal",
- "bbl",
- "klbs",
- "mcf",
- "gal",
- "mwdth",
- "btu",
- "ton",
- ),
- nullable=True,
- comment="Reported unit of measure for fuel.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint("record_id", name=op.f("pk_out_ferc1__yearly_fuel")),
- )
- op.create_table(
- "out_ferc1__yearly_steam_plants_fuel_by_plant",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=False,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "coal_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Coal cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "coal_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Coal heat content as a percentage of overall fuel heat content (mmBTU).",
- ),
- sa.Column(
- "fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total fuel cost for plant (in $USD).",
- ),
- sa.Column(
- "fuel_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total heat content for plant (in MMBtu).",
- ),
- sa.Column(
- "gas_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Natural gas cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "gas_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Natural gas heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.Column(
- "nuclear_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Nuclear cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "nuclear_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Nuclear heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.Column(
- "oil_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Oil cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "oil_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Oil heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.Column(
- "primary_fuel_by_cost",
- sa.Text(),
- nullable=True,
- comment="Primary fuel for plant as a percentage of cost.",
- ),
- sa.Column(
- "primary_fuel_by_mmbtu",
- sa.Text(),
- nullable=True,
- comment="Primary fuel for plant as a percentage of heat content.",
- ),
- sa.Column(
- "waste_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Waste-heat cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "waste_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_year",
- "utility_id_ferc1",
- "plant_name_ferc1",
- name=op.f("pk_out_ferc1__yearly_steam_plants_fuel_by_plant"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_capacity_factor_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_capacity_factor_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_derived_generator_attributes",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_derived_generator_attributes"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_fuel_cost_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_fuel_cost_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_generators",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk__out_eia__yearly_generators"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_heat_rate_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_heat_rate_by_generator"),
- ),
- )
- op.create_table(
- "core_eia860__assn_boiler_cooling",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "cooling_id_eia",
- sa.Text(),
- nullable=False,
- comment="The cooling system identification number reported to EIA.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "boiler_id",
- "cooling_id_eia",
- name=op.f("pk_core_eia860__assn_boiler_cooling"),
- ),
- )
- op.create_table(
- "core_eia860__assn_boiler_generator",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA-assigned unit identification code.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "boiler_generator_assn_type_code",
- sa.Text(),
- nullable=True,
- comment="Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.",
- ),
- sa.Column(
- "steam_plant_type_code",
- sa.Integer(),
- nullable=True,
- comment="Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["boiler_generator_assn_type_code"],
- ["core_eia__codes_boiler_generator_assn_types.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["steam_plant_type_code"],
- ["core_eia__codes_steam_plant_types.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "generator_id",
- "boiler_id",
- name=op.f("pk_core_eia860__assn_boiler_generator"),
- ),
- )
- op.create_table(
- "core_eia860__assn_boiler_stack_flue",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "stack_id_eia",
- sa.Text(),
- nullable=True,
- comment="The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.",
- ),
- sa.Column(
- "flue_id_eia",
- sa.Text(),
- nullable=True,
- comment="The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.",
- ),
- sa.Column(
- "stack_flue_id_eia",
- sa.Text(),
- nullable=True,
- comment="The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.",
- ),
- sa.Column(
- "stack_flue_id_pudl",
- sa.Text(),
- nullable=False,
- comment="A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "boiler_id",
- "stack_flue_id_pudl",
- name=op.f("pk_core_eia860__assn_boiler_stack_flue"),
- ),
- )
- op.create_table(
- "core_eia860__scd_ownership",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "owner_utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "owner_utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the EIA owner utility.",
- ),
- sa.Column(
- "owner_state",
- sa.Enum(
- "MI",
- "NV",
- "DE",
- "NY",
- "GA",
- "NL",
- "ME",
- "IL",
- "WA",
- "WY",
- "NE",
- "ON",
- "MS",
- "IN",
- "AK",
- "NS",
- "VA",
- "NH",
- "HI",
- "YT",
- "NM",
- "AL",
- "PR",
- "CO",
- "NB",
- "PA",
- "AZ",
- "SD",
- "MP",
- "GU",
- "KY",
- "MN",
- "ND",
- "OK",
- "QC",
- "TN",
- "UT",
- "TX",
- "VT",
- "WI",
- "NU",
- "LA",
- "RI",
- "CT",
- "NC",
- "WV",
- "PE",
- "CA",
- "AR",
- "MO",
- "DC",
- "IA",
- "SC",
- "MB",
- "MD",
- "NT",
- "FL",
- "MA",
- "ID",
- "BC",
- "MT",
- "SK",
- "KS",
- "AB",
- "NJ",
- "VI",
- "AS",
- "OH",
- "OR",
- ),
- nullable=True,
- comment="Two letter ISO-3166 political subdivision code.",
- ),
- sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
- sa.Column(
- "owner_country",
- sa.Enum("CAN", "USA"),
- nullable=True,
- comment="Three letter ISO-3166 country code.",
- ),
- sa.Column(
- "owner_street_address",
- sa.Text(),
- nullable=True,
- comment="Steet address of owner.",
- ),
- sa.Column(
- "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["owner_utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "owner_utility_id_eia",
- name=op.f("pk_core_eia860__scd_ownership"),
- ),
- )
- op.create_table(
- "core_eia860__yearly_boiler_emissions_control_equipment_assn",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "emission_control_id_type",
- sa.Text(),
- nullable=False,
- comment="The type of emissions control id: so2, nox, particulate, or mercury.",
- ),
- sa.Column(
- "emission_control_id_eia",
- sa.Text(),
- nullable=False,
- comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "boiler_id",
- "emission_control_id_type",
- "emission_control_id_eia",
- name=op.f("pk_core_eia860__yearly_boiler_emissions_control_equipment_assn"),
- ),
- )
- op.create_table(
- "mega_generators_eia",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out__yearly_plants_all_ferc1_plant_parts_eia",
- sa.Column(
- "record_id_ferc1",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "record_id_eia",
- sa.Text(),
- nullable=True,
- comment="Identifier for EIA plant parts analysis records.",
- ),
- sa.Column(
- "match_type",
- sa.Text(),
- nullable=True,
- comment="Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.",
- ),
- sa.Column(
- "plant_name_ppe",
- sa.Text(),
- nullable=True,
- comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
- ),
- sa.Column(
- "plant_part",
- sa.Enum(
- "plant_technology",
- "plant_unit",
- "plant_prime_fuel",
- "plant_prime_mover",
- "plant_gen",
- "plant",
- "plant_match_ferc1",
- "plant_ferc_acct",
- "plant_operating_year",
- ),
- nullable=True,
- comment="The part of the plant a record corresponds to.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "true_gran",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
- ),
- sa.Column(
- "appro_part_label",
- sa.Enum(
- "plant_technology",
- "plant_unit",
- "plant_prime_fuel",
- "plant_prime_mover",
- "plant_gen",
- "plant",
- "plant_match_ferc1",
- "plant_ferc_acct",
- "plant_operating_year",
- ),
- nullable=True,
- comment="Plant part of the associated true granularity record.",
- ),
- sa.Column(
- "appro_record_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA record ID of the associated true granularity record.",
- ),
- sa.Column(
- "record_count",
- sa.Integer(),
- nullable=True,
- comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "ownership_dupe",
- sa.Boolean(),
- nullable=True,
- comment="Whether a plant part record has a duplicate record with different ownership status.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "total_fuel_cost_eia",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu_eia",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "net_generation_mwh_eia",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capacity_mw_eia",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capacity_factor_eia",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "total_mmbtu_eia",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh_eia",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_type_code_pudl_eia",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "installation_year_eia",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "plant_part_id_eia",
- sa.Text(),
- nullable=True,
- comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor_ferc1",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw_ferc1",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_annual_addition",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_addition_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_per_kw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per kw.",
- ),
- sa.Column(
- "capex_annual_per_mw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mw_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_annual_per_mwh_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wo_retirement_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD) without retirements.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year_eia",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "construction_year_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh_ferc1",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "fuel_cost_per_mwh_eia",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh_ferc1",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_nonfuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Investments in non-fuel production expenses per Mwh.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu_ferc1",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "ferc_license_id",
- sa.Text(),
- nullable=True,
- comment="The FERC license ID of a project.",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.Column(
- "total_fuel_cost_ferc1",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu_ferc1",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "fuel_type_code_pudl_ferc1",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh_ferc1",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id_ferc1",
- name=op.f("pk_out__yearly_plants_all_ferc1_plant_parts_eia"),
- ),
- )
- op.create_table(
- "out_eia860__yearly_ownership",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "owner_utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "owner_utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the EIA owner utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "owner_state",
- sa.Enum(
- "MI",
- "NV",
- "DE",
- "NY",
- "GA",
- "NL",
- "ME",
- "IL",
- "WA",
- "WY",
- "NE",
- "ON",
- "MS",
- "IN",
- "AK",
- "NS",
- "VA",
- "NH",
- "HI",
- "YT",
- "NM",
- "AL",
- "PR",
- "CO",
- "NB",
- "PA",
- "AZ",
- "SD",
- "MP",
- "GU",
- "KY",
- "MN",
- "ND",
- "OK",
- "QC",
- "TN",
- "UT",
- "TX",
- "VT",
- "WI",
- "NU",
- "LA",
- "RI",
- "CT",
- "NC",
- "WV",
- "PE",
- "CA",
- "AR",
- "MO",
- "DC",
- "IA",
- "SC",
- "MB",
- "MD",
- "NT",
- "FL",
- "MA",
- "ID",
- "BC",
- "MT",
- "SK",
- "KS",
- "AB",
- "NJ",
- "VI",
- "AS",
- "OH",
- "OR",
- ),
- nullable=True,
- comment="Two letter ISO-3166 political subdivision code.",
- ),
- sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
- sa.Column(
- "owner_country",
- sa.Enum("CAN", "USA"),
- nullable=True,
- comment="Three letter ISO-3166 country code.",
- ),
- sa.Column(
- "owner_street_address",
- sa.Text(),
- nullable=True,
- comment="Steet address of owner.",
- ),
- sa.Column(
- "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["owner_utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "owner_utility_id_eia",
- name=op.f("pk_out_eia860__yearly_ownership"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_boiler_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_out_eia923__yearly_boiler_fuel"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_out_eia923__yearly_generation"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia923__yearly_generation_fuel_by_generator"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator_energy_source",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name=op.f(
- "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=False,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- "utility_id_eia",
- "ownership_record_type",
- name=op.f(
- "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner"
- ),
- ),
- )
- op.create_table(
- "out_eia__yearly_boilers",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "air_flow_100pct_load_cubic_feet_per_minute",
- sa.Float(),
- nullable=True,
- comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
- ),
- sa.Column(
- "boiler_fuel_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of boiler manufacturer.",
- ),
- sa.Column(
- "boiler_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="EIA short code for boiler manufacturer.",
- ),
- sa.Column(
- "boiler_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the boiler began or is planned to begin commercial operation.",
- ),
- sa.Column(
- "boiler_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the boiler.",
- ),
- sa.Column(
- "boiler_status",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying boiler operational status.",
- ),
- sa.Column(
- "boiler_type",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "compliance_year_mercury",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
- ),
- sa.Column(
- "compliance_year_nox",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
- ),
- sa.Column(
- "compliance_year_particulate",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
- ),
- sa.Column(
- "compliance_year_so2",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "efficiency_100pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "efficiency_50pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "firing_rate_using_coal_tons_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
- ),
- sa.Column(
- "firing_rate_using_gas_mcf_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
- ),
- sa.Column(
- "firing_rate_using_oil_bbls_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
- ),
- sa.Column(
- "firing_rate_using_other_fuels",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
- ),
- sa.Column(
- "firing_type_1",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_2",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_3",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "fly_ash_reinjection",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is capable of re-injecting fly ash.",
- ),
- sa.Column(
- "hrsg",
- sa.Boolean(),
- nullable=True,
- comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "max_steam_flow_1000_lbs_per_hour",
- sa.Float(),
- nullable=True,
- comment="Maximum continuous steam flow at 100 percent load.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_4",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_5",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_6",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "new_source_review",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is subject to New Source Review requirements.",
- ),
- sa.Column(
- "new_source_review_date",
- sa.Date(),
- nullable=True,
- comment="Month of issued New Source Review permit.",
- ),
- sa.Column(
- "new_source_review_permit",
- sa.Text(),
- nullable=True,
- comment="New Source Review permit number.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of nitrogen oxide control manufacturer.",
- ),
- sa.Column(
- "nox_control_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="Code indicating the nitrogen oxide control burner manufacturer.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_status_code",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control status code.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "regulation_mercury",
- sa.Text(),
- nullable=True,
- comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
- ),
- sa.Column(
- "regulation_nox",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
- ),
- sa.Column(
- "regulation_particulate",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
- ),
- sa.Column(
- "regulation_so2",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "standard_nox_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "standard_particulate_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "standard_so2_percent_scrubbed",
- sa.Float(),
- nullable=True,
- comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "standard_so2_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "turndown_ratio",
- sa.Float(),
- nullable=True,
- comment="The turndown ratio for the boiler.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "unit_nox",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "unit_particulate",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "unit_so2",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "waste_heat_input_mmbtu_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
- ),
- sa.Column(
- "wet_dry_bottom",
- sa.Text(),
- nullable=True,
- comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_status"],
- ["core_eia__codes_boiler_status.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_type"],
- ["core_eia__codes_boiler_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_1"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_2"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_3"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_4"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_5"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_6"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_status_code"],
- ["core_eia__codes_nox_control_status.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_mercury"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_nox"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_particulate"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_so2"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_nox"],
- ["core_eia__codes_nox_units.code"],
- name=op.f("fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units"),
- ),
- sa.ForeignKeyConstraint(
- ["unit_particulate"],
- ["core_eia__codes_particulate_units.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_so2"],
- ["core_eia__codes_so2_units.code"],
- name=op.f("fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units"),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["wet_dry_bottom"],
- ["core_eia__codes_wet_dry_bottom.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "report_date",
- name=op.f("pk_out_eia__yearly_boilers"),
- ),
- )
- op.create_table(
- "out_eia__yearly_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia__yearly_generators"),
- ),
- )
- op.create_table(
- "out_eia__yearly_generators_by_ownership",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia__yearly_plant_parts",
- sa.Column(
- "record_id_eia",
- sa.Text(),
- nullable=False,
- comment="Identifier for EIA plant parts analysis records.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_part",
- sa.Enum(
- "plant_technology",
- "plant_unit",
- "plant_prime_fuel",
- "plant_prime_mover",
- "plant_gen",
- "plant",
- "plant_match_ferc1",
- "plant_ferc_acct",
- "plant_operating_year",
- ),
- nullable=True,
- comment="The part of the plant a record corresponds to.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "true_gran",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
- ),
- sa.Column(
- "appro_part_label",
- sa.Enum(
- "plant_technology",
- "plant_unit",
- "plant_prime_fuel",
- "plant_prime_mover",
- "plant_gen",
- "plant",
- "plant_match_ferc1",
- "plant_ferc_acct",
- "plant_operating_year",
- ),
- nullable=True,
- comment="Plant part of the associated true granularity record.",
- ),
- sa.Column(
- "appro_record_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA record ID of the associated true granularity record.",
- ),
- sa.Column(
- "ferc1_generator_agg_id",
- sa.Integer(),
- nullable=True,
- comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column(
- "ownership_dupe",
- sa.Boolean(),
- nullable=True,
- comment="Whether a plant part record has a duplicate record with different ownership status.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_name_ppe",
- sa.Text(),
- nullable=True,
- comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
- ),
- sa.Column(
- "plant_part_id_eia",
- sa.Text(),
- nullable=True,
- comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
- ),
- sa.Column(
- "record_count",
- sa.Integer(),
- nullable=True,
- comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_report_year",
- sa.Text(),
- nullable=True,
- comment="PUDL plant ID and report year of the record.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id_eia", name=op.f("pk_out_eia__yearly_plant_parts")
- ),
- )
- op.create_table(
- "plant_parts_eia",
- sa.Column(
- "record_id_eia",
- sa.Text(),
- nullable=False,
- comment="Identifier for EIA plant parts analysis records.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_part",
- sa.Enum(
- "plant_technology",
- "plant_unit",
- "plant_prime_fuel",
- "plant_prime_mover",
- "plant_gen",
- "plant",
- "plant_match_ferc1",
- "plant_ferc_acct",
- "plant_operating_year",
- ),
- nullable=True,
- comment="The part of the plant a record corresponds to.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Enum(
- "TDF",
- "SGP",
- "SLW",
- "PUR",
- "SG",
- "OBL",
- "OTH",
- "MSB",
- "SUB",
- "WND",
- "MSW",
- "RC",
- "OBS",
- "WDS",
- "WAT",
- "PG",
- "OBG",
- "WDL",
- "DFO",
- "SUN",
- "LIG",
- "SGC",
- "RFO",
- "MSN",
- "ANT",
- "LFG",
- "KER",
- "WC",
- "PC",
- "OG",
- "BFG",
- "BIT",
- "BLQ",
- "WH",
- "SC",
- "NG",
- "JF",
- "GEO",
- "MWH",
- "AB",
- "NUC",
- "WO",
- ),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Enum(
- "Solar Photovoltaic",
- "Conventional Steam Coal",
- "Solar Thermal with Energy Storage",
- "Batteries",
- "Landfill Gas",
- "Petroleum Liquids",
- "Other Waste Biomass",
- "Natural Gas Fired Combustion Turbine",
- "Coal Integrated Gasification Combined Cycle",
- "Hydroelectric Pumped Storage",
- "Natural Gas with Compressed Air Storage",
- "Offshore Wind Turbine",
- "Other Natural Gas",
- "Natural Gas Internal Combustion Engine",
- "Nuclear",
- "Wood/Wood Waste Biomass",
- "Natural Gas Steam Turbine",
- "Geothermal",
- "Flywheels",
- "Hydrokinetic",
- "Municipal Solid Waste",
- "Conventional Hydroelectric",
- "Natural Gas Fired Combined Cycle",
- "Petroleum Coke",
- "Solar Thermal without Energy Storage",
- "All Other",
- "Onshore Wind Turbine",
- "Other Gases",
- ),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "true_gran",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
- ),
- sa.Column(
- "appro_part_label",
- sa.Enum(
- "plant_technology",
- "plant_unit",
- "plant_prime_fuel",
- "plant_prime_mover",
- "plant_gen",
- "plant",
- "plant_match_ferc1",
- "plant_ferc_acct",
- "plant_operating_year",
- ),
- nullable=True,
- comment="Plant part of the associated true granularity record.",
- ),
- sa.Column(
- "appro_record_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA record ID of the associated true granularity record.",
- ),
- sa.Column(
- "ferc1_generator_agg_id",
- sa.Integer(),
- nullable=True,
- comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column(
- "ownership_dupe",
- sa.Boolean(),
- nullable=True,
- comment="Whether a plant part record has a duplicate record with different ownership status.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_name_ppe",
- sa.Text(),
- nullable=True,
- comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
- ),
- sa.Column(
- "plant_part_id_eia",
- sa.Text(),
- nullable=True,
- comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
- ),
- sa.Column(
- "record_count",
- sa.Integer(),
- nullable=True,
- comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_report_year",
- sa.Text(),
- nullable=True,
- comment="PUDL plant ID and report year of the record.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f("fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators"),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f("fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl"),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f("fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities"),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint("record_id_eia", name=op.f("pk_plant_parts_eia")),
- )
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.drop_table("plant_parts_eia")
- op.drop_table("out_eia__yearly_plant_parts")
- op.drop_table("out_eia__yearly_generators_by_ownership")
- op.drop_table("out_eia__yearly_generators")
- op.drop_table("out_eia__yearly_boilers")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source_owner")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator")
- op.drop_table("out_eia923__yearly_generation")
- op.drop_table("out_eia923__yearly_boiler_fuel")
- op.drop_table("out_eia860__yearly_ownership")
- op.drop_table("out__yearly_plants_all_ferc1_plant_parts_eia")
- op.drop_table("mega_generators_eia")
- op.drop_table("core_eia860__yearly_boiler_emissions_control_equipment_assn")
- op.drop_table("core_eia860__scd_ownership")
- op.drop_table("core_eia860__assn_boiler_stack_flue")
- op.drop_table("core_eia860__assn_boiler_generator")
- op.drop_table("core_eia860__assn_boiler_cooling")
- op.drop_table("_out_eia__yearly_heat_rate_by_generator")
- op.drop_table("_out_eia__yearly_generators")
- op.drop_table("_out_eia__yearly_fuel_cost_by_generator")
- op.drop_table("_out_eia__yearly_derived_generator_attributes")
- op.drop_table("_out_eia__yearly_capacity_factor_by_generator")
- op.drop_table("out_ferc1__yearly_steam_plants_fuel_by_plant")
- op.drop_table("out_ferc1__yearly_steam_plants_fuel")
- op.drop_table("out_ferc1__yearly_all_plants")
- op.drop_table("out_eia__yearly_plants")
- op.drop_table("out_eia923__yearly_generation_fuel_combined")
- op.drop_table("out_eia923__yearly_fuel_receipts_costs")
- op.drop_table("core_ferc1__yearly_plants_steam")
- op.drop_table("core_ferc1__yearly_plants_small")
- op.drop_table("core_ferc1__yearly_plants_pumped_storage")
- op.drop_table("core_ferc1__yearly_hydroelectric_plants")
- op.drop_table("core_ferc1__yearly_steam_plants_fuel")
- op.drop_table("core_eia860__scd_generators")
- op.drop_table("core_eia860__scd_boilers")
- op.drop_table("_out_ferc1__yearly_steam_plants")
- op.drop_table("_out_ferc1__yearly_small_plants")
- op.drop_table("_out_ferc1__yearly_pumped_storage_plants")
- op.drop_table("_out_ferc1__yearly_plants_utilities")
- op.drop_table("_out_ferc1__yearly_hydroelectric_plants")
- op.drop_table("_out_eia__yearly_heat_rate_by_unit")
- op.drop_table("_out_eia__plants_utilities")
- op.drop_table("out_ferc1__yearly_utility_plant_and_depreciation_summary")
- op.drop_table("out_ferc1__yearly_transmission_lines")
- op.drop_table("out_ferc1__yearly_retained_earnings")
- op.drop_table("out_ferc1__yearly_purchased_power_and_exchanges")
- op.drop_table("out_ferc1__yearly_plant_in_service")
- op.drop_table("out_ferc1__yearly_other_regulatory_liabilities")
- op.drop_table("out_ferc1__yearly_income_statement")
- op.drop_table("out_ferc1__yearly_electricity_sales_by_rate_schedule")
- op.drop_table("out_ferc1__yearly_electric_plant_depreciation_functional")
- op.drop_table("out_ferc1__yearly_electric_plant_depreciation_changes")
- op.drop_table("out_ferc1__yearly_electric_operating_revenues")
- op.drop_table("out_ferc1__yearly_electric_operating_expenses")
- op.drop_table("out_ferc1__yearly_electric_energy_sources")
- op.drop_table("out_ferc1__yearly_electric_energy_dispositions")
- op.drop_table("out_ferc1__yearly_depreciation_amortization_summary")
- op.drop_table("out_ferc1__yearly_cash_flows")
- op.drop_table("out_ferc1__yearly_balance_sheet_liabilities")
- op.drop_table("out_ferc1__yearly_balance_sheet_assets")
- op.drop_table("out_eia__yearly_utilities")
- op.drop_table("out_eia__monthly_generators")
- op.drop_table("out_eia923__monthly_generation_fuel_by_generator_energy_source")
- op.drop_table("out_eia923__monthly_generation_fuel_by_generator")
- op.drop_table("out_eia923__monthly_generation")
- op.drop_table("out_eia923__monthly_boiler_fuel")
- op.drop_table("out_eia923__generation")
- op.drop_table("out_eia923__boiler_fuel")
- op.drop_table("core_pudl__assn_utilities_ferc1_xbrl")
- op.drop_table("core_pudl__assn_utilities_ferc1_dbf")
- op.drop_table("core_pudl__assn_plants_ferc1")
- op.drop_table("core_ferc1__yearly_utility_plant_and_depreciation_summary")
- op.drop_table("core_ferc1__yearly_transmission_lines")
- op.drop_table("core_ferc1__yearly_retained_earnings")
- op.drop_table("core_ferc1__yearly_purchased_power_and_exchanges")
- op.drop_table("core_ferc1__yearly_plant_in_service")
- op.drop_table("core_ferc1__yearly_other_regulatory_liabilities")
- op.drop_table("core_ferc1__yearly_income_statement")
- op.drop_table("core_ferc1__yearly_electricity_sales_by_rate_schedule")
- op.drop_table("core_ferc1__yearly_electric_plant_depreciation_functional")
- op.drop_table("core_ferc1__yearly_electric_plant_depreciation_changes")
- op.drop_table("core_ferc1__yearly_electric_operating_revenues")
- op.drop_table("core_ferc1__yearly_electric_operating_expenses")
- op.drop_table("core_ferc1__yearly_electric_energy_sources")
- op.drop_table("core_ferc1__yearly_electric_energy_dispositions")
- op.drop_table("core_ferc1__yearly_depreciation_amortization_summary")
- op.drop_table("core_ferc1__yearly_cash_flows")
- op.drop_table("core_ferc1__yearly_balance_sheet_liabilities")
- op.drop_table("core_ferc1__yearly_balance_sheet_assets")
- op.drop_table("core_epa__assn_epacamd_eia")
- op.drop_table("core_eia923__monthly_generation")
- op.drop_table("core_eia923__monthly_fuel_receipts_costs")
- op.drop_table("core_eia923__monthly_boiler_fuel")
- op.drop_table("core_eia860__scd_plants")
- op.drop_table("_out_eia__monthly_heat_rate_by_generator")
- op.drop_table("_out_eia__monthly_fuel_cost_by_generator")
- op.drop_table("_out_eia__monthly_derived_generator_attributes")
- op.drop_table("_out_eia__monthly_capacity_factor_by_generator")
- op.drop_table("out_ferc714__summarized_demand")
- op.drop_table("out_ferc714__respondents_with_fips")
- op.drop_table("out_eia923__monthly_generation_fuel_combined")
- op.drop_table("out_eia923__monthly_fuel_receipts_costs")
- op.drop_table("out_eia923__generation_fuel_combined")
- op.drop_table("out_eia923__fuel_receipts_costs")
- op.drop_table("out_eia860__yearly_emissions_control_equipment")
- op.drop_table("core_pudl__assn_utilities_plants")
- op.drop_table("core_pudl__assn_utilities_ferc1")
- op.drop_table("core_pudl__assn_utilities_eia")
- op.drop_table("core_pudl__assn_plants_eia")
- op.drop_table("core_ferc714__hourly_demand_pa")
- op.drop_table("core_eia__entity_generators")
- op.drop_table("core_eia__entity_boilers")
- op.drop_table("core_eia923__monthly_generation_fuel_nuclear")
- op.drop_table("core_eia923__monthly_generation_fuel")
- op.drop_table("core_eia923__entity_coalmine")
- op.drop_table("core_eia861__yearly_utility_data_rto")
- op.drop_table("core_eia861__yearly_utility_data_nerc")
- op.drop_table("core_eia861__yearly_utility_data_misc")
- op.drop_table("core_eia861__yearly_service_territory")
- op.drop_table("core_eia861__yearly_sales")
- op.drop_table("core_eia861__yearly_reliability")
- op.drop_table("core_eia861__yearly_operational_data_revenue")
- op.drop_table("core_eia861__yearly_operational_data_misc")
- op.drop_table("core_eia861__yearly_non_net_metering_misc")
- op.drop_table("core_eia861__yearly_non_net_metering_customer_fuel_class")
- op.drop_table("core_eia861__yearly_net_metering_misc")
- op.drop_table("core_eia861__yearly_net_metering_customer_fuel_class")
- op.drop_table("core_eia861__yearly_mergers")
- op.drop_table("core_eia861__yearly_green_pricing")
- op.drop_table("core_eia861__yearly_energy_efficiency")
- op.drop_table("core_eia861__yearly_dynamic_pricing")
- op.drop_table("core_eia861__yearly_distribution_systems")
- op.drop_table("core_eia861__yearly_distributed_generation_tech")
- op.drop_table("core_eia861__yearly_distributed_generation_misc")
- op.drop_table("core_eia861__yearly_distributed_generation_fuel")
- op.drop_table("core_eia861__yearly_demand_side_management_sales")
- op.drop_table("core_eia861__yearly_demand_side_management_misc")
- op.drop_table("core_eia861__yearly_demand_side_management_ee_dr")
- op.drop_table("core_eia861__yearly_demand_response_water_heater")
- op.drop_table("core_eia861__yearly_demand_response")
- op.drop_table("core_eia861__yearly_advanced_metering_infrastructure")
- op.drop_table("core_eia860__scd_utilities")
- op.drop_table("core_eia860__scd_emissions_control_equipment")
- op.drop_table("_out_eia__monthly_heat_rate_by_unit")
- op.drop_table("out_ferc714__hourly_predicted_state_demand")
- op.drop_table("out_eia861__compiled_geometry_utilities")
- op.drop_table("out_eia861__compiled_geometry_balancing_authorities")
- op.drop_table("core_pudl__entity_utilities_pudl")
- op.drop_table("core_pudl__entity_plants_pudl")
- op.drop_table("core_pudl__codes_subdivisions")
- op.drop_table("core_pudl__codes_datasources")
- op.drop_table("core_pudl__codes_data_maturities")
- op.drop_table("core_ferc__codes_accounts")
- op.drop_table("core_ferc714__respondent_id")
- op.drop_table("core_ferc1__codes_power_purchase_types")
- op.drop_table("core_epa__assn_epacamd_eia_subplant_ids")
- op.drop_table("core_eia__yearly_fuel_receipts_costs_aggs")
- op.drop_table("core_eia__entity_utilities")
- op.drop_table("core_eia__entity_plants")
- op.drop_table("core_eia__codes_wet_dry_bottom")
- op.drop_table("core_eia__codes_steam_plant_types")
- op.drop_table("core_eia__codes_so2_units")
- op.drop_table("core_eia__codes_so2_compliance_strategies")
- op.drop_table("core_eia__codes_sector_consolidated")
- op.drop_table("core_eia__codes_reporting_frequencies")
- op.drop_table("core_eia__codes_regulations")
- op.drop_table("core_eia__codes_prime_movers")
- op.drop_table("core_eia__codes_particulate_units")
- op.drop_table("core_eia__codes_particulate_compliance_strategies")
- op.drop_table("core_eia__codes_operational_status")
- op.drop_table("core_eia__codes_nox_units")
- op.drop_table("core_eia__codes_nox_control_status")
- op.drop_table("core_eia__codes_nox_compliance_strategies")
- op.drop_table("core_eia__codes_momentary_interruptions")
- op.drop_table("core_eia__codes_mercury_compliance_strategies")
- op.drop_table("core_eia__codes_fuel_types_aer")
- op.drop_table("core_eia__codes_fuel_transportation_modes")
- op.drop_table("core_eia__codes_firing_types")
- op.drop_table("core_eia__codes_environmental_equipment_manufacturers")
- op.drop_table("core_eia__codes_energy_sources")
- op.drop_table("core_eia__codes_emission_control_equipment_types")
- op.drop_table("core_eia__codes_contract_types")
- op.drop_table("core_eia__codes_coalmine_types")
- op.drop_table("core_eia__codes_boiler_types")
- op.drop_table("core_eia__codes_boiler_status")
- op.drop_table("core_eia__codes_boiler_generator_assn_types")
- op.drop_table("core_eia__codes_balancing_authorities")
- op.drop_table("core_eia__codes_averaging_periods")
- op.drop_table("core_eia861__yearly_balancing_authority")
- op.drop_table("core_eia861__assn_utility")
- op.drop_table("core_eia861__assn_balancing_authority")
- # ### end Alembic commands ###
diff --git a/src/pudl/analysis/classify_plants_ferc1.py b/src/pudl/analysis/classify_plants_ferc1.py
index 1ab88e32db..5cd7733bae 100644
--- a/src/pudl/analysis/classify_plants_ferc1.py
+++ b/src/pudl/analysis/classify_plants_ferc1.py
@@ -625,7 +625,7 @@ def fuel_by_plant_ferc1(
Args:
fuel_df: Pandas DataFrame resembling the post-transform
- result for the core_ferc1__yearly_steam_plants_fuel table.
+ result for the core_ferc1__yearly_steam_plants_fuel_sched402 table.
thresh: A value between 0.5 and 1.0 indicating the minimum fraction of
overall heat content that must have been provided by a fuel in a plant-year
for it to be considered the "primary" fuel for the plant in that year.
@@ -633,11 +633,11 @@ def fuel_by_plant_ferc1(
Returns:
DataFrame with a single record for each plant-year, including the columns
- required to merge it with the core_ferc1__yearly_plants_steam table/DataFrame (report_year,
- utility_id_ferc1, and plant_name) as well as totals for fuel mmbtu consumed in
- that plant-year, and the cost of fuel in that year, the proportions of heat
- content and fuel costs for each fuel in that year, and a column that labels the
- plant's primary fuel for that year.
+ required to merge it with the :ref:`core_ferc1__yearly_steam_plants_sched402`
+ table/DataFrame (report_year, utility_id_ferc1, and plant_name) as well as
+ totals for fuel mmbtu consumed in that plant-year, and the cost of fuel in that
+ year, the proportions of heat content and fuel costs for each fuel in that year,
+ and a column that labels the plant's primary fuel for that year.
Raises:
AssertionError: If the DataFrame input does not have the columns required to
@@ -662,7 +662,7 @@ def fuel_by_plant_ferc1(
df = (
# Really there should *not* be any duplicates here but... there's a
# bug somewhere that introduces them into the
- # core_ferc1__yearly_steam_plants_fuel table.
+ # core_ferc1__yearly_steam_plants_fuel_sched402 table.
fuel_df[keep_cols]
.drop_duplicates()
# Calculate totals for each record based on per-unit values:
diff --git a/src/pudl/analysis/ferc1_eia_record_linkage.py b/src/pudl/analysis/ferc1_eia_record_linkage.py
index e88d7d2631..18ba804aba 100644
--- a/src/pudl/analysis/ferc1_eia_record_linkage.py
+++ b/src/pudl/analysis/ferc1_eia_record_linkage.py
@@ -57,20 +57,20 @@
)
def out__yearly_plants_all_ferc1_plant_parts_eia(
out_ferc1__yearly_all_plants: pd.DataFrame,
- out_ferc1__yearly_steam_plants_fuel_by_plant: pd.DataFrame,
+ out_ferc1__yearly_steam_plants_fuel_by_plant_sched402: pd.DataFrame,
out_eia__yearly_plant_parts: pd.DataFrame,
) -> pd.DataFrame:
"""Coordinate the connection between FERC1 plants and EIA plant-parts.
Args:
out_ferc1__yearly_all_plants: Table of all of the FERC1-reporting plants.
- out_ferc1__yearly_steam_plants_fuel_by_plant: Table of the fuel reported aggregated to the FERC1
- plant-level.
+ out_ferc1__yearly_steam_plants_fuel_by_plant_sched402: Table of the fuel
+ reported aggregated to the FERC1 plant-level.
out_eia__yearly_plant_parts: The EIA plant parts list.
"""
inputs = InputManager(
out_ferc1__yearly_all_plants,
- out_ferc1__yearly_steam_plants_fuel_by_plant,
+ out_ferc1__yearly_steam_plants_fuel_by_plant_sched402,
out_eia__yearly_plant_parts,
)
# compile/cache inputs upfront. Hopefully we can catch any errors in inputs early.
diff --git a/src/pudl/extract/ferc1.py b/src/pudl/extract/ferc1.py
index 5bcfddd0a8..3e0c89068f 100644
--- a/src/pudl/extract/ferc1.py
+++ b/src/pudl/extract/ferc1.py
@@ -100,67 +100,67 @@
logger = pudl.logging_helpers.get_logger(__name__)
TABLE_NAME_MAP_FERC1: dict[str, dict[str, str]] = {
- "core_ferc1__yearly_steam_plants_fuel": {
+ "core_ferc1__yearly_steam_plants_fuel_sched402": {
"dbf": "f1_fuel",
"xbrl": "steam_electric_generating_plant_statistics_large_plants_fuel_statistics_402",
},
- "core_ferc1__yearly_plants_steam": {
+ "core_ferc1__yearly_steam_plants_sched402": {
"dbf": "f1_steam",
"xbrl": "steam_electric_generating_plant_statistics_large_plants_402",
},
- "core_ferc1__yearly_plants_small": {
+ "core_ferc1__yearly_small_plants_sched410": {
"dbf": "f1_gnrt_plant",
"xbrl": "generating_plant_statistics_410",
},
- "core_ferc1__yearly_hydroelectric_plants": {
+ "core_ferc1__yearly_hydroelectric_plants_sched406": {
"dbf": "f1_hydro",
"xbrl": "hydroelectric_generating_plant_statistics_large_plants_406",
},
- "core_ferc1__yearly_plants_pumped_storage": {
+ "core_ferc1__yearly_pumped_storage_plants_sched408": {
"dbf": "f1_pumped_storage",
"xbrl": "pumped_storage_generating_plant_statistics_large_plants_408",
},
- "core_ferc1__yearly_plant_in_service": {
+ "core_ferc1__yearly_plant_in_service_sched204": {
"dbf": "f1_plant_in_srvce",
"xbrl": "electric_plant_in_service_204",
},
- "core_ferc1__yearly_purchased_power_and_exchanges": {
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326": {
"dbf": "f1_purchased_pwr",
"xbrl": "purchased_power_326",
},
- "core_ferc1__yearly_electric_energy_sources": {
+ "core_ferc1__yearly_energy_sources_sched401": {
"dbf": "f1_elctrc_erg_acct",
"xbrl": "electric_energy_account_401a",
},
- "core_ferc1__yearly_electric_energy_dispositions": {
+ "core_ferc1__yearly_energy_dispositions_sched401": {
"dbf": "f1_elctrc_erg_acct",
"xbrl": "electric_energy_account_401a",
},
- "core_ferc1__yearly_utility_plant_and_depreciation_summary": {
+ "core_ferc1__yearly_utility_plant_summary_sched200": {
"dbf": "f1_utltyplnt_smmry",
"xbrl": "summary_of_utility_plant_and_accumulated_provisions_for_depreciation_amortization_and_depletion_200",
},
- "core_ferc1__yearly_transmission_lines": {
+ "core_ferc1__yearly_transmission_lines_sched422": {
"dbf": "f1_xmssn_line",
"xbrl": "transmission_line_statistics_422",
},
- "core_ferc1__yearly_electric_operating_expenses": {
+ "core_ferc1__yearly_operating_expenses_sched320": {
"dbf": "f1_elc_op_mnt_expn",
"xbrl": "electric_operations_and_maintenance_expenses_320",
},
- "core_ferc1__yearly_balance_sheet_liabilities": {
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110": {
"dbf": "f1_bal_sheet_cr",
"xbrl": "comparative_balance_sheet_liabilities_and_other_credits_110",
},
- "core_ferc1__yearly_balance_sheet_assets": {
+ "core_ferc1__yearly_balance_sheet_assets_sched110": {
"dbf": "f1_comp_balance_db",
"xbrl": "comparative_balance_sheet_assets_and_other_debits_110",
},
- "core_ferc1__yearly_income_statement": {
+ "core_ferc1__yearly_income_statements_sched114": {
"dbf": ["f1_income_stmnt", "f1_incm_stmnt_2"],
"xbrl": "statement_of_income_114",
},
- "core_ferc1__yearly_retained_earnings": {
+ "core_ferc1__yearly_retained_earnings_sched118": {
"dbf": "f1_retained_erng",
"xbrl": "retained_earnings_118",
},
@@ -168,27 +168,27 @@
"dbf": "f1_retained_erng",
"xbrl": "retained_earnings_appropriations_118",
},
- "core_ferc1__yearly_depreciation_amortization_summary": {
+ "core_ferc1__yearly_depreciation_summary_sched336": {
"dbf": "f1_dacs_epda",
"xbrl": "summary_of_depreciation_and_amortization_charges_section_a_336",
},
- "core_ferc1__yearly_electric_plant_depreciation_changes": {
+ "core_ferc1__yearly_depreciation_changes_sched219": {
"dbf": "f1_accumdepr_prvsn",
"xbrl": "accumulated_provision_for_depreciation_of_electric_utility_plant_changes_section_a_219",
},
- "core_ferc1__yearly_electric_plant_depreciation_functional": {
+ "core_ferc1__yearly_depreciation_by_function_sched219": {
"dbf": "f1_accumdepr_prvsn",
"xbrl": "accumulated_provision_for_depreciation_of_electric_utility_plant_functional_classification_section_b_219",
},
- "core_ferc1__yearly_electric_operating_revenues": {
+ "core_ferc1__yearly_operating_revenues_sched300": {
"dbf": "f1_elctrc_oper_rev",
"xbrl": "electric_operating_revenues_300",
},
- "core_ferc1__yearly_cash_flows": {
+ "core_ferc1__yearly_cash_flows_sched120": {
"dbf": "f1_cash_flow",
"xbrl": "statement_of_cash_flows_120",
},
- "core_ferc1__yearly_electricity_sales_by_rate_schedule": {
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304": {
"dbf": "f1_sales_by_sched",
"xbrl": [
"sales_of_electricity_by_rate_schedules_account_440_residential_304",
@@ -202,7 +202,7 @@
"sales_of_electricity_by_rate_schedules_account_totals_304",
],
},
- "core_ferc1__yearly_other_regulatory_liabilities": {
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278": {
"dbf": "f1_othr_reg_liab",
"xbrl": "other_regulatory_liabilities_account_254_278",
},
diff --git a/src/pudl/glue/ferc1_eia.py b/src/pudl/glue/ferc1_eia.py
index 646d5d5c5e..2154c7d764 100644
--- a/src/pudl/glue/ferc1_eia.py
+++ b/src/pudl/glue/ferc1_eia.py
@@ -255,11 +255,11 @@ def get_plants_ferc1_raw_job() -> JobDefinition:
This job expects ferc1.sqlite and ferc_xbrl.sqlite databases to be populated.
"""
plant_tables = [
- "core_ferc1__yearly_hydroelectric_plants",
- "core_ferc1__yearly_plants_small",
- "core_ferc1__yearly_plants_pumped_storage",
- "core_ferc1__yearly_plants_steam",
- "core_ferc1__yearly_steam_plants_fuel", # bc it has plants/is associated w/ the steam table
+ "core_ferc1__yearly_hydroelectric_plants_sched406",
+ "core_ferc1__yearly_small_plants_sched410",
+ "core_ferc1__yearly_pumped_storage_plants_sched408",
+ "core_ferc1__yearly_steam_plants_sched402",
+ "core_ferc1__yearly_steam_plants_fuel_sched402", # bc it has plants/is associated w/ the steam table
]
@asset(ins={table_name: AssetIn() for table_name in plant_tables})
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index d6a2100548..3afc710a52 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -106,7 +106,7 @@
},
"asset_type": {
"type": "string",
- "description": "Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets table.",
+ "description": "Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.",
},
"associated_combined_heat_power": {
"type": "boolean",
@@ -709,7 +709,7 @@
"energy_displaced_mwh": {"type": "number", "unit": "MWh"},
"energy_disposition_type": {
"type": "string",
- "description": "Type of energy disposition reported in the core_ferc1__yearly_electric_energy_dispositions. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
+ "description": "Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
},
"energy_efficiency_annual_actual_peak_reduction_mw": {
"type": "number",
@@ -800,7 +800,7 @@
},
"energy_source_type": {
"type": "string",
- "description": "Type of energy source reported in the core_ferc1__yearly_electric_energy_sources table. There are three groups of energy sources: generation, power exchanges and transmission.",
+ "description": "Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.",
},
"energy_storage": {
"type": "boolean",
@@ -1314,7 +1314,7 @@
},
"liability_type": {
"type": "string",
- "description": "Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities table.",
+ "description": "Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.",
},
"license_id_ferc1": {
"type": "integer",
@@ -2826,7 +2826,7 @@
"utility_owned_capacity_mw": {"type": "number", "unit": "MW"},
"utility_plant_asset_type": {
"type": "string",
- "description": "Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ "description": "Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
},
"utility_pobox": {"type": "string"},
"utility_type": {
@@ -2835,7 +2835,7 @@
},
"utility_type_other": {
"type": "string",
- "description": "Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_and_depreciation_summary table. This field is reported only in the DBF reporting years (1994-2020).",
+ "description": "Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).",
},
"variable_peak_pricing": {"type": "boolean"},
"virtual_capacity_mw": {"type": "number", "unit": "MW"},
@@ -2957,7 +2957,7 @@
FIELD_METADATA_BY_RESOURCE: dict[str, dict[str, Any]] = {
"sector_consolidated_eia": {"code": {"type": "integer"}},
- "core_ferc1__yearly_hydroelectric_plants": {
+ "core_ferc1__yearly_hydroelectric_plants_sched406": {
"plant_type": {
"type": "string",
"constraints": {
@@ -2975,7 +2975,7 @@
},
}
},
- "core_ferc1__yearly_plants_steam": {
+ "core_ferc1__yearly_steam_plants_sched402": {
"plant_type": {
"type": "string",
"constraints": {
@@ -3011,7 +3011,7 @@
},
"technology_description": {"constraints": {"enum": set(TECH_DESCRIPTIONS)}},
},
- "core_ferc1__yearly_transmission_lines": {
+ "core_ferc1__yearly_transmission_lines_sched422": {
"capex_land": {
"description": "Cost of Land and land rights for the transmission line."
},
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index db5674ef82..21fc44f9ac 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -4,7 +4,7 @@
from pudl.metadata.codes import CODE_METADATA
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "core_ferc1__yearly_balance_sheet_assets": {
+ "core_ferc1__yearly_balance_sheet_assets_sched110": {
"description": "Comparative Balance Sheet (Assets and Other Debits). Schedule 110.",
"schema": {
"fields": [
@@ -28,7 +28,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_balance_sheet_liabilities": {
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110": {
"description": "Comparative balance sheet (liabilities and other credits)",
"schema": {
"fields": [
@@ -52,7 +52,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_cash_flows": {
+ "core_ferc1__yearly_cash_flows_sched120": {
"description": "The structured portion of the FERC1 cash flow table - Schedule 120.",
"schema": {
"fields": [
@@ -74,7 +74,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_depreciation_amortization_summary": {
+ "core_ferc1__yearly_depreciation_summary_sched336": {
"description": (
"Depreciation and Amortization of Electric Plant (Account 403, 404, 405) "
"Section A: Summary of depreciation and amortization changes. "
@@ -103,7 +103,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_electric_energy_sources": {
+ "core_ferc1__yearly_energy_sources_sched401": {
"description": (
"Electric Energy Account, sources only. Schedule 401a. Amount of "
"electricity the utility obtained from each of several sources, by year."
@@ -127,7 +127,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_electric_energy_dispositions": {
+ "core_ferc1__yearly_energy_dispositions_sched401": {
"description": (
"Electric Energy Account, dispositions only. Schedule 401a. Electricity "
"utilities delived to end users, internal losses, etc."
@@ -151,7 +151,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_electric_operating_expenses": {
+ "core_ferc1__yearly_operating_expenses_sched320": {
"description": (
"Operating and maintenance costs associated with producing electricty, "
"reported in Schedule 320 of FERC Form 1."
@@ -173,7 +173,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_electric_plant_depreciation_changes": {
+ "core_ferc1__yearly_depreciation_changes_sched219": {
"description": (
"Accumulated provision for depreciation of electric utility plant "
"(Account 108). Schedule 219 Section A: balances and changes during year."
@@ -203,7 +203,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_electric_plant_depreciation_functional": {
+ "core_ferc1__yearly_depreciation_by_function_sched219": {
"description": (
"Accumulated provision for depreciation of electric utility plant "
"(Account 108). Schedule 219 Section B: Functional plant classifications."
@@ -233,7 +233,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_electricity_sales_by_rate_schedule": {
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304": {
"description": (
"""The pre-2021 data in this table (extracted from FoxProDB vs. XBRL) is
extremely unstructured. Where the post-2020 data (from XBRL) sorts the data
@@ -317,7 +317,7 @@
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_steam_plants_fuel": {
+ "core_ferc1__yearly_steam_plants_fuel_sched402": {
"description": "Annual fuel cost and quantity for steam plants with a capacity of 25+ MW, internal combustion and gas-turbine plants of 10+ MW, and all nuclear plants. As reported on page 402 of FERC Form 1 and extracted from the f1_fuel table in FERC's FoxPro Database.",
"schema": {
"fields": [
@@ -338,7 +338,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_income_statement": {
+ "core_ferc1__yearly_income_statements_sched114": {
"description": "Statement of Income. Schedule 114.",
"schema": {
"fields": [
@@ -363,7 +363,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_other_regulatory_liabilities": {
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278": {
"description": "Other regulatory liabilities, including rate order docket number.",
"schema": {
"fields": [
@@ -381,7 +381,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_plant_in_service": {
+ "core_ferc1__yearly_plant_in_service_sched204": {
"description": (
"Balances and changes to FERC Electric Plant in Service accounts, as "
"reported on FERC Form 1, Schedule 204. Data originally from the "
@@ -432,7 +432,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_hydroelectric_plants": {
+ "core_ferc1__yearly_hydroelectric_plants_sched406": {
"description": (
"Hydroelectric generating plant statistics for large plants. Large plants "
"have an installed nameplate capacity of more than 10 MW. As reported on "
@@ -484,7 +484,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_plants_pumped_storage": {
+ "core_ferc1__yearly_pumped_storage_plants_sched408": {
"description": (
"Generating plant statistics for hydroelectric pumped storage plants with "
"an installed nameplate capacity of 10+ MW. As reported in Scheudle 408 of "
@@ -540,7 +540,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_plants_small": {
+ "core_ferc1__yearly_small_plants_sched410": {
"description": """The generating plant statistics for internal combustion
plants, gas turbine-plants, conventional hydro plants, and pumped storage plants with
less than 10 MW installed nameplate capacity and steam plants with less than 25 MW
@@ -581,7 +581,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_plants_steam": {
+ "core_ferc1__yearly_steam_plants_sched402": {
"description": (
"Generating plant statistics for steam plants with a capacity of 25+ MW, "
"internal combustion and gas-turbine plants of 10+ MW, and all nuclear "
@@ -648,7 +648,7 @@
"etl_group": "static_ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_purchased_power_and_exchanges": {
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326": {
"description": (
"Purchased Power (Account 555) including power exchanges (transactions "
"involving a balancing of debits and credits for energy, capacity, etc.) "
@@ -682,7 +682,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_transmission_lines": {
+ "core_ferc1__yearly_transmission_lines_sched422": {
"description": (
"Transmission Line Statistics. Schedule 422 of FERC Form 1. Information "
"describing transmission lines, the cost of lines, annual operating and "
@@ -746,7 +746,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_utility_plant_and_depreciation_summary": {
+ "core_ferc1__yearly_utility_plant_summary_sched200": {
"description": (
"Summary of utility plant and accumulated provisions for depreciation, "
"amortization and depletion of utilty plant assets reported annually at "
@@ -774,7 +774,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_ferc1__yearly_retained_earnings": {
+ "core_ferc1__yearly_retained_earnings_sched118": {
"description": "Retained Earnings - The structed part of schedule 118.",
"schema": {
"fields": [
@@ -808,7 +808,7 @@
"field_namespace": "ferc1",
"create_database_schema": False,
},
- "core_ferc1__yearly_electric_operating_revenues": {
+ "core_ferc1__yearly_operating_revenues_sched300": {
"description": (
"Electric operating revenues - The structed part of schedule 300."
"There are a number of revenue_type's that do not have sales_mwh,"
@@ -854,7 +854,7 @@
"etl_group": "outputs",
"sources": ["ferc1"],
},
- "out_ferc1__yearly_balance_sheet_assets": {
+ "out_ferc1__yearly_balance_sheet_assets_sched110": {
"description": "Denormalized table that contains FERC balance sheet asset information.",
"schema": {
"fields": [
@@ -880,7 +880,7 @@
"etl_group": "outputs",
"sources": ["ferc1"],
},
- "out_ferc1__yearly_balance_sheet_liabilities": {
+ "out_ferc1__yearly_balance_sheet_liabilities_sched110": {
"description": "Denormalized table that contains FERC balance sheet liability information.",
"schema": {
"fields": [
@@ -906,7 +906,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_cash_flows": {
+ "out_ferc1__yearly_cash_flows_sched120": {
"description": "Denormalized table that contains FERC cash flow information.",
"schema": {
"fields": [
@@ -930,7 +930,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_depreciation_amortization_summary": {
+ "out_ferc1__yearly_depreciation_summary_sched336": {
"description": "Denormalized table that contains FERC depreciation amortization information.",
"schema": {
"fields": [
@@ -956,7 +956,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electric_energy_dispositions": {
+ "out_ferc1__yearly_energy_dispositions_sched401": {
"description": "Denormalized table that contains FERC electric energy dispositions information.",
"schema": {
"fields": [
@@ -979,7 +979,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electric_energy_sources": {
+ "out_ferc1__yearly_energy_sources_sched401": {
"description": "Denormalized table that contains FERC electric energy sources information.",
"schema": {
"fields": [
@@ -1002,7 +1002,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electric_operating_expenses": {
+ "out_ferc1__yearly_operating_expenses_sched320": {
"description": "Denormalized table that contains FERC electric operating expense information.",
"schema": {
"fields": [
@@ -1023,7 +1023,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electric_operating_revenues": {
+ "out_ferc1__yearly_operating_revenues_sched300": {
"description": "Denormalized table that contains FERC electric operating revenue information.",
"schema": {
"fields": [
@@ -1050,7 +1050,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electric_plant_depreciation_changes": {
+ "out_ferc1__yearly_depreciation_changes_sched219": {
"description": "Denormalized table that contains FERC electric plant depreciation changes information.",
"schema": {
"fields": [
@@ -1079,7 +1079,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electric_plant_depreciation_functional": {
+ "out_ferc1__yearly_depreciation_by_function_sched219": {
"description": (
"Denormalized accumulated provision for depreciation of electric utility "
"plant (Account 108). Schedule 219 Section B: Functional plant classifications."
@@ -1111,7 +1111,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_electricity_sales_by_rate_schedule": {
+ "out_ferc1__yearly_sales_by_rate_schedules_sched304": {
"description": "Denormalized table that contains FERC electricity sales by rate schedule information.",
"schema": {
"fields": [
@@ -1134,7 +1134,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_income_statement": {
+ "out_ferc1__yearly_income_statements_sched114": {
"description": "Denormalized table that contains FERC income statement information.",
"schema": {
"fields": [
@@ -1161,7 +1161,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_other_regulatory_liabilities": {
+ "out_ferc1__yearly_other_regulatory_liabilities_sched278": {
"description": "Denormalized table that contains FERC other regulatory liabilities information.",
"schema": {
"fields": [
@@ -1181,7 +1181,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_retained_earnings": {
+ "out_ferc1__yearly_retained_earnings_sched118": {
"description": "Denormalized table that contains FERC retained earnings information.",
"schema": {
"fields": [
@@ -1207,7 +1207,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_transmission_lines": {
+ "out_ferc1__yearly_transmission_lines_sched422": {
"description": "Denormalized table that contains FERC transmission statistics information.",
"schema": {
"fields": [
@@ -1238,7 +1238,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_utility_plant_and_depreciation_summary": {
+ "out_ferc1__yearly_utility_plant_summary_sched200": {
"description": "Denormalized table that contains FERC utility plant summary information.",
"schema": {
"fields": [
@@ -1264,7 +1264,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "_out_ferc1__yearly_steam_plants": {
+ "_out_ferc1__yearly_steam_plants_sched402": {
"description": "Denormalized table that contains steam plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1332,7 +1332,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "_out_ferc1__yearly_small_plants": {
+ "_out_ferc1__yearly_small_plants_sched410": {
"description": "Denormalized table that contains small plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1367,7 +1367,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "_out_ferc1__yearly_hydroelectric_plants": {
+ "_out_ferc1__yearly_hydroelectric_plants_sched406": {
"description": "Denormalized table that contains small plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1422,7 +1422,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "_out_ferc1__yearly_pumped_storage_plants": {
+ "_out_ferc1__yearly_pumped_storage_plants_sched408": {
"description": "Denormalized table that contains pumped storage plant information from FERC Form 1.",
"schema": {
"fields": [
@@ -1481,7 +1481,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "ou_ferc1__yearly_steam_plants_fuel": {
+ "out_ferc1__yearly_steam_plants_fuel_sched402": {
"description": "Denormalized table that contains fuel information from FERC Form 1.",
"schema": {
"fields": [
@@ -1510,7 +1510,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_purchased_power_and_exchanges": {
+ "out_ferc1__yearly_purchased_power_and_exchanges_sched326": {
"description": "Denormalized table of FERC Form 1 Purchased Power data.",
"schema": {
"fields": [
@@ -1540,7 +1540,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_plant_in_service": {
+ "out_ferc1__yearly_plant_in_service_sched204": {
"description": "Denormalized table of FERC Form 1 Electric Plant in Service data.",
"schema": {
"fields": [
@@ -1655,7 +1655,7 @@
"etl_group": "outputs",
"field_namespace": "ferc1",
},
- "out_ferc1__yearly_steam_plants_fuel_by_plant": {
+ "out_ferc1__yearly_steam_plants_fuel_by_plant_sched402": {
"description": "A table summarizing FERC fuel data by plant, using FERC Form 1 data.",
"schema": {
"fields": [
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 0a9d4eba03..9ec691c34f 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -25,7 +25,7 @@
EXPLOSION_CALCULATION_TOLERANCES: dict[str, GroupMetricChecks] = {
- "core_ferc1__yearly_income_statement": GroupMetricChecks(
+ "core_ferc1__yearly_income_statements_sched114": GroupMetricChecks(
groups_to_check=[
"ungrouped",
"report_year",
@@ -55,7 +55,7 @@
),
),
),
- "core_ferc1__yearly_balance_sheet_assets": GroupMetricChecks(
+ "core_ferc1__yearly_balance_sheet_assets_sched110": GroupMetricChecks(
groups_to_check=[
"ungrouped",
"report_year",
@@ -85,7 +85,7 @@
),
),
),
- "core_ferc1__yearly_balance_sheet_liabilities": GroupMetricChecks(
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110": GroupMetricChecks(
groups_to_check=[
"ungrouped",
"report_year",
@@ -132,9 +132,9 @@ def _out_ferc1__yearly_plants_utilities(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def _out_ferc1__yearly_steam_plants(
+def _out_ferc1__yearly_steam_plants_sched402(
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
- core_ferc1__yearly_plants_steam: pd.DataFrame,
+ core_ferc1__yearly_steam_plants_sched402: pd.DataFrame,
) -> pd.DataFrame:
"""Select and joins some useful fields from the FERC Form 1 steam table.
@@ -147,13 +147,13 @@ def _out_ferc1__yearly_steam_plants(
Args:
_out_ferc1__yearly_plants_utilities: Denormalized dataframe of FERC Form 1 plants and
utilities data.
- core_ferc1__yearly_plants_steam: The normalized FERC Form 1 steam table.
+ core_ferc1__yearly_steam_plants_sched402: The normalized FERC Form 1 steam table.
Returns:
A DataFrame containing useful fields from the FERC Form 1 steam table.
"""
steam_df = (
- core_ferc1__yearly_plants_steam.merge(
+ core_ferc1__yearly_steam_plants_sched402.merge(
_out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -187,13 +187,13 @@ def _out_ferc1__yearly_steam_plants(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def _out_ferc1__yearly_small_plants(
- core_ferc1__yearly_plants_small: pd.DataFrame,
+def _out_ferc1__yearly_small_plants_sched410(
+ core_ferc1__yearly_small_plants_sched410: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 small plants."""
plants_small_df = (
- core_ferc1__yearly_plants_small.merge(
+ core_ferc1__yearly_small_plants_sched410.merge(
_out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -224,13 +224,13 @@ def _out_ferc1__yearly_small_plants(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def _out_ferc1__yearly_hydroelectric_plants(
- core_ferc1__yearly_hydroelectric_plants: pd.DataFrame,
+def _out_ferc1__yearly_hydroelectric_plants_sched406(
+ core_ferc1__yearly_hydroelectric_plants_sched406: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to the FERC Form 1 hydro plants."""
plants_hydro_df = (
- core_ferc1__yearly_hydroelectric_plants.merge(
+ core_ferc1__yearly_hydroelectric_plants_sched406.merge(
_out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -255,13 +255,13 @@ def _out_ferc1__yearly_hydroelectric_plants(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def _out_ferc1__yearly_pumped_storage_plants(
- core_ferc1__yearly_plants_pumped_storage: pd.DataFrame,
+def _out_ferc1__yearly_pumped_storage_plants_sched408(
+ core_ferc1__yearly_pumped_storage_plants_sched408: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Pumped Storage plant data."""
pumped_storage_df = (
- core_ferc1__yearly_plants_pumped_storage.merge(
+ core_ferc1__yearly_pumped_storage_plants_sched408.merge(
_out_ferc1__yearly_plants_utilities,
on=["utility_id_ferc1", "plant_name_ferc1"],
how="left",
@@ -286,8 +286,8 @@ def _out_ferc1__yearly_pumped_storage_plants(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def ou_ferc1__yearly_steam_plants_fuel(
- core_ferc1__yearly_steam_plants_fuel: pd.DataFrame,
+def out_ferc1__yearly_steam_plants_fuel_sched402(
+ core_ferc1__yearly_steam_plants_fuel_sched402: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe related to FERC Form 1 fuel information.
@@ -308,7 +308,7 @@ def ou_ferc1__yearly_steam_plants_fuel(
information.
"""
fuel_df = (
- core_ferc1__yearly_steam_plants_fuel.assign(
+ core_ferc1__yearly_steam_plants_fuel_sched402.assign(
fuel_consumed_mmbtu=lambda x: x["fuel_consumed_units"]
* x["fuel_mmbtu_per_unit"],
fuel_consumed_total_cost=lambda x: x["fuel_consumed_units"]
@@ -334,34 +334,36 @@ def ou_ferc1__yearly_steam_plants_fuel(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_purchased_power_and_exchanges(
- core_ferc1__yearly_purchased_power_and_exchanges: pd.DataFrame,
+def out_ferc1__yearly_purchased_power_and_exchanges_sched326(
+ core_ferc1__yearly_purchased_power_and_exchanges_sched326: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- purchased_power_df = core_ferc1__yearly_purchased_power_and_exchanges.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "seller_name",
- "record_id",
- ],
+ purchased_power_df = (
+ core_ferc1__yearly_purchased_power_and_exchanges_sched326.merge(
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "seller_name",
+ "record_id",
+ ],
+ )
)
return purchased_power_df
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_plant_in_service(
- core_ferc1__yearly_plant_in_service: pd.DataFrame,
+def out_ferc1__yearly_plant_in_service_sched204(
+ core_ferc1__yearly_plant_in_service_sched204: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Electric Plant in Service data."""
- pis_df = core_ferc1__yearly_plant_in_service.merge(
+ pis_df = core_ferc1__yearly_plant_in_service_sched204.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -377,13 +379,13 @@ def out_ferc1__yearly_plant_in_service(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_balance_sheet_assets(
- core_ferc1__yearly_balance_sheet_assets: pd.DataFrame,
+def out_ferc1__yearly_balance_sheet_assets_sched110(
+ core_ferc1__yearly_balance_sheet_assets_sched110: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance sheet assets data."""
- out_ferc1__yearly_balance_sheet_assets = (
- core_ferc1__yearly_balance_sheet_assets.merge(
+ out_ferc1__yearly_balance_sheet_assets_sched110 = (
+ core_ferc1__yearly_balance_sheet_assets_sched110.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -397,17 +399,17 @@ def out_ferc1__yearly_balance_sheet_assets(
],
)
)
- return out_ferc1__yearly_balance_sheet_assets
+ return out_ferc1__yearly_balance_sheet_assets_sched110
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_balance_sheet_liabilities(
- core_ferc1__yearly_balance_sheet_liabilities: pd.DataFrame,
+def out_ferc1__yearly_balance_sheet_liabilities_sched110(
+ core_ferc1__yearly_balance_sheet_liabilities_sched110: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance_sheet liabilities data."""
- out_ferc1__yearly_balance_sheet_liabilities = (
- core_ferc1__yearly_balance_sheet_liabilities.merge(
+ out_ferc1__yearly_balance_sheet_liabilities_sched110 = (
+ core_ferc1__yearly_balance_sheet_liabilities_sched110.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -421,39 +423,41 @@ def out_ferc1__yearly_balance_sheet_liabilities(
],
)
)
- return out_ferc1__yearly_balance_sheet_liabilities
+ return out_ferc1__yearly_balance_sheet_liabilities_sched110
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_cash_flows(
- core_ferc1__yearly_cash_flows: pd.DataFrame,
+def out_ferc1__yearly_cash_flows_sched120(
+ core_ferc1__yearly_cash_flows_sched120: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 cash flow data."""
- out_ferc1__yearly_cash_flows = core_ferc1__yearly_cash_flows.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "amount_type",
- ],
+ out_ferc1__yearly_cash_flows_sched120 = (
+ core_ferc1__yearly_cash_flows_sched120.merge(
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "amount_type",
+ ],
+ )
)
- return out_ferc1__yearly_cash_flows
+ return out_ferc1__yearly_cash_flows_sched120
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_depreciation_amortization_summary(
- core_ferc1__yearly_depreciation_amortization_summary: pd.DataFrame,
+def out_ferc1__yearly_depreciation_summary_sched336(
+ core_ferc1__yearly_depreciation_summary_sched336: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 depreciation amortization data."""
- out_ferc1__yearly_depreciation_amortization_summary = (
- core_ferc1__yearly_depreciation_amortization_summary.merge(
+ out_ferc1__yearly_depreciation_summary_sched336 = (
+ core_ferc1__yearly_depreciation_summary_sched336.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -468,17 +472,17 @@ def out_ferc1__yearly_depreciation_amortization_summary(
],
)
)
- return out_ferc1__yearly_depreciation_amortization_summary
+ return out_ferc1__yearly_depreciation_summary_sched336
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electric_energy_dispositions(
- core_ferc1__yearly_electric_energy_dispositions: pd.DataFrame,
+def out_ferc1__yearly_energy_dispositions_sched401(
+ core_ferc1__yearly_energy_dispositions_sched401: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 energy dispositions data."""
- out_ferc1__yearly_electric_energy_dispositions = (
- core_ferc1__yearly_electric_energy_dispositions.merge(
+ out_ferc1__yearly_energy_dispositions_sched401 = (
+ core_ferc1__yearly_energy_dispositions_sched401.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -492,17 +496,17 @@ def out_ferc1__yearly_electric_energy_dispositions(
],
)
)
- return out_ferc1__yearly_electric_energy_dispositions
+ return out_ferc1__yearly_energy_dispositions_sched401
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electric_energy_sources(
- core_ferc1__yearly_electric_energy_sources: pd.DataFrame,
+def out_ferc1__yearly_energy_sources_sched401(
+ core_ferc1__yearly_energy_sources_sched401: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_electric_energy_sources = (
- core_ferc1__yearly_electric_energy_sources.merge(
+ out_ferc1__yearly_energy_sources_sched401 = (
+ core_ferc1__yearly_energy_sources_sched401.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -516,17 +520,17 @@ def out_ferc1__yearly_electric_energy_sources(
],
)
)
- return out_ferc1__yearly_electric_energy_sources
+ return out_ferc1__yearly_energy_sources_sched401
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electric_operating_expenses(
- core_ferc1__yearly_electric_operating_expenses: pd.DataFrame,
+def out_ferc1__yearly_operating_expenses_sched320(
+ core_ferc1__yearly_operating_expenses_sched320: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_electric_operating_expenses = (
- core_ferc1__yearly_electric_operating_expenses.merge(
+ out_ferc1__yearly_operating_expenses_sched320 = (
+ core_ferc1__yearly_operating_expenses_sched320.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -540,17 +544,17 @@ def out_ferc1__yearly_electric_operating_expenses(
],
)
)
- return out_ferc1__yearly_electric_operating_expenses
+ return out_ferc1__yearly_operating_expenses_sched320
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electric_operating_revenues(
- core_ferc1__yearly_electric_operating_revenues: pd.DataFrame,
+def out_ferc1__yearly_operating_revenues_sched300(
+ core_ferc1__yearly_operating_revenues_sched300: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_electric_operating_revenues = (
- core_ferc1__yearly_electric_operating_revenues.merge(
+ out_ferc1__yearly_operating_revenues_sched300 = (
+ core_ferc1__yearly_operating_revenues_sched300.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -564,17 +568,17 @@ def out_ferc1__yearly_electric_operating_revenues(
],
)
)
- return out_ferc1__yearly_electric_operating_revenues
+ return out_ferc1__yearly_operating_revenues_sched300
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electric_plant_depreciation_changes(
- core_ferc1__yearly_electric_plant_depreciation_changes: pd.DataFrame,
+def out_ferc1__yearly_depreciation_changes_sched219(
+ core_ferc1__yearly_depreciation_changes_sched219: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_electric_plant_depreciation_changes = (
- core_ferc1__yearly_electric_plant_depreciation_changes.merge(
+ out_ferc1__yearly_depreciation_changes_sched219 = (
+ core_ferc1__yearly_depreciation_changes_sched219.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -590,17 +594,17 @@ def out_ferc1__yearly_electric_plant_depreciation_changes(
],
)
)
- return out_ferc1__yearly_electric_plant_depreciation_changes
+ return out_ferc1__yearly_depreciation_changes_sched219
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electric_plant_depreciation_functional(
- core_ferc1__yearly_electric_plant_depreciation_functional: pd.DataFrame,
+def out_ferc1__yearly_depreciation_by_function_sched219(
+ core_ferc1__yearly_depreciation_by_function_sched219: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_electric_plant_depreciation_functional = (
- core_ferc1__yearly_electric_plant_depreciation_functional.merge(
+ out_ferc1__yearly_depreciation_by_function_sched219 = (
+ core_ferc1__yearly_depreciation_by_function_sched219.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -616,17 +620,17 @@ def out_ferc1__yearly_electric_plant_depreciation_functional(
],
)
)
- return out_ferc1__yearly_electric_plant_depreciation_functional
+ return out_ferc1__yearly_depreciation_by_function_sched219
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_electricity_sales_by_rate_schedule(
- core_ferc1__yearly_electricity_sales_by_rate_schedule: pd.DataFrame,
+def out_ferc1__yearly_sales_by_rate_schedules_sched304(
+ core_ferc1__yearly_sales_by_rate_schedules_sched304: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_electricity_sales_by_rate_schedule = (
- core_ferc1__yearly_electricity_sales_by_rate_schedule.merge(
+ out_ferc1__yearly_sales_by_rate_schedules_sched304 = (
+ core_ferc1__yearly_sales_by_rate_schedules_sched304.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -639,40 +643,42 @@ def out_ferc1__yearly_electricity_sales_by_rate_schedule(
],
)
)
- return out_ferc1__yearly_electricity_sales_by_rate_schedule
+ return out_ferc1__yearly_sales_by_rate_schedules_sched304
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_income_statement(
- core_ferc1__yearly_income_statement: pd.DataFrame,
+def out_ferc1__yearly_income_statements_sched114(
+ core_ferc1__yearly_income_statements_sched114: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_income_statement = core_ferc1__yearly_income_statement.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "utility_type",
- "income_type",
- ],
+ out_ferc1__yearly_income_statements_sched114 = (
+ core_ferc1__yearly_income_statements_sched114.merge(
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "utility_type",
+ "income_type",
+ ],
+ )
)
- return out_ferc1__yearly_income_statement
+ return out_ferc1__yearly_income_statements_sched114
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_other_regulatory_liabilities(
- core_ferc1__yearly_other_regulatory_liabilities: pd.DataFrame,
+def out_ferc1__yearly_other_regulatory_liabilities_sched278(
+ core_ferc1__yearly_other_regulatory_liabilities_sched278: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_other_regulatory_liabilities = (
- core_ferc1__yearly_other_regulatory_liabilities.merge(
+ out_ferc1__yearly_other_regulatory_liabilities_sched278 = (
+ core_ferc1__yearly_other_regulatory_liabilities_sched278.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -684,59 +690,63 @@ def out_ferc1__yearly_other_regulatory_liabilities(
],
)
)
- return out_ferc1__yearly_other_regulatory_liabilities
+ return out_ferc1__yearly_other_regulatory_liabilities_sched278
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_retained_earnings(
- core_ferc1__yearly_retained_earnings: pd.DataFrame,
+def out_ferc1__yearly_retained_earnings_sched118(
+ core_ferc1__yearly_retained_earnings_sched118: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_retained_earnings = core_ferc1__yearly_retained_earnings.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- "record_id",
- "earnings_type",
- ],
+ out_ferc1__yearly_retained_earnings_sched118 = (
+ core_ferc1__yearly_retained_earnings_sched118.merge(
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ "record_id",
+ "earnings_type",
+ ],
+ )
)
- return out_ferc1__yearly_retained_earnings
+ return out_ferc1__yearly_retained_earnings_sched118
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_transmission_lines(
- core_ferc1__yearly_transmission_lines: pd.DataFrame,
+def out_ferc1__yearly_transmission_lines_sched422(
+ core_ferc1__yearly_transmission_lines_sched422: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_transmission_lines = core_ferc1__yearly_transmission_lines.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
- ).pipe(
- pudl.helpers.organize_cols,
- [
- "report_year",
- "utility_id_ferc1",
- "utility_id_pudl",
- "utility_name_ferc1",
- ],
+ out_ferc1__yearly_transmission_lines_sched422 = (
+ core_ferc1__yearly_transmission_lines_sched422.merge(
+ core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ ).pipe(
+ pudl.helpers.organize_cols,
+ [
+ "report_year",
+ "utility_id_ferc1",
+ "utility_id_pudl",
+ "utility_name_ferc1",
+ ],
+ )
)
- return out_ferc1__yearly_transmission_lines
+ return out_ferc1__yearly_transmission_lines_sched422
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def out_ferc1__yearly_utility_plant_and_depreciation_summary(
- core_ferc1__yearly_utility_plant_and_depreciation_summary: pd.DataFrame,
+def out_ferc1__yearly_utility_plant_summary_sched200(
+ core_ferc1__yearly_utility_plant_summary_sched200: pd.DataFrame,
core_pudl__assn_utilities_ferc1: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
- out_ferc1__yearly_utility_plant_and_depreciation_summary = (
- core_ferc1__yearly_utility_plant_and_depreciation_summary.merge(
+ out_ferc1__yearly_utility_plant_summary_sched200 = (
+ core_ferc1__yearly_utility_plant_summary_sched200.merge(
core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
@@ -751,15 +761,15 @@ def out_ferc1__yearly_utility_plant_and_depreciation_summary(
],
)
)
- return out_ferc1__yearly_utility_plant_and_depreciation_summary
+ return out_ferc1__yearly_utility_plant_summary_sched200
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_all_plants(
- _out_ferc1__yearly_steam_plants: pd.DataFrame,
- _out_ferc1__yearly_small_plants: pd.DataFrame,
- _out_ferc1__yearly_hydroelectric_plants: pd.DataFrame,
- _out_ferc1__yearly_pumped_storage_plants: pd.DataFrame,
+ _out_ferc1__yearly_steam_plants_sched402: pd.DataFrame,
+ core_ferc1__yearly_small_plants_sched410: pd.DataFrame,
+ _out_ferc1__yearly_hydroelectric_plants_sched406: pd.DataFrame,
+ _out_ferc1__yearly_pumped_storage_plants_sched408: pd.DataFrame,
) -> pd.DataFrame:
"""Combine the steam, small generators, hydro, and pumped storage tables.
@@ -771,23 +781,25 @@ def out_ferc1__yearly_all_plants(
"""
# Prep steam table
logger.debug("prepping steam table")
- steam_df = _out_ferc1__yearly_steam_plants.rename(
+ steam_df = _out_ferc1__yearly_steam_plants_sched402.rename(
columns={"opex_plants": "opex_plant"}
)
# Prep hydro tables (Add this to the meta data later)
logger.debug("prepping hydro tables")
- hydro_df = _out_ferc1__yearly_hydroelectric_plants.rename(
+ hydro_df = _out_ferc1__yearly_hydroelectric_plants_sched406.rename(
columns={"project_num": "ferc_license_id"}
)
- pump_df = _out_ferc1__yearly_pumped_storage_plants.rename(
+ pump_df = _out_ferc1__yearly_pumped_storage_plants_sched408.rename(
columns={"project_num": "ferc_license_id"}
)
# Combine all the tables together
logger.debug("combining all tables")
all_df = (
- pd.concat([steam_df, _out_ferc1__yearly_small_plants, hydro_df, pump_df])
+ pd.concat(
+ [steam_df, core_ferc1__yearly_small_plants_sched410, hydro_df, pump_df]
+ )
.rename(
columns={
"fuel_cost": "total_fuel_cost",
@@ -817,9 +829,9 @@ def out_ferc1__yearly_all_plants(
},
compute_kind="Python",
)
-def out_ferc1__yearly_steam_plants_fuel_by_plant(
+def out_ferc1__yearly_steam_plants_fuel_by_plant_sched402(
context,
- core_ferc1__yearly_steam_plants_fuel: pd.DataFrame,
+ core_ferc1__yearly_steam_plants_fuel_sched402: pd.DataFrame,
_out_ferc1__yearly_plants_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Summarize FERC fuel data by plant for output.
@@ -832,7 +844,7 @@ def out_ferc1__yearly_steam_plants_fuel_by_plant(
Args:
context: Dagster context object
- core_ferc1__yearly_steam_plants_fuel: Normalized FERC fuel table.
+ core_ferc1__yearly_steam_plants_fuel_sched402: Normalized FERC fuel table.
_out_ferc1__yearly_plants_utilities: Denormalized table of FERC1 plant & utility IDs.
Returns:
@@ -851,9 +863,9 @@ def drop_other_fuel_types(df):
# The existing function expects `fuel_type_code_pudl` to be an object, rather than
# a category. This is a legacy of pre-dagster code, and we convert here to prevent
# further retooling in the code-base.
- core_ferc1__yearly_steam_plants_fuel[
+ core_ferc1__yearly_steam_plants_fuel_sched402[
"fuel_type_code_pudl"
- ] = core_ferc1__yearly_steam_plants_fuel["fuel_type_code_pudl"].astype(str)
+ ] = core_ferc1__yearly_steam_plants_fuel_sched402["fuel_type_code_pudl"].astype(str)
fuel_categories = list(
pudl.transform.ferc1.FuelFerc1TableTransformer()
@@ -862,7 +874,7 @@ def drop_other_fuel_types(df):
)
fbp_df = (
- core_ferc1__yearly_steam_plants_fuel.pipe(drop_other_fuel_types)
+ core_ferc1__yearly_steam_plants_fuel_sched402.pipe(drop_other_fuel_types)
.pipe(
pudl.analysis.classify_plants_ferc1.fuel_by_plant_ferc1,
fuel_categories=fuel_categories,
@@ -1053,7 +1065,7 @@ def _out_ferc1__explosion_tags(table_dimensions_ferc1) -> pd.DataFrame:
"""Grab the stored table of tags and add infered dimension."""
# NOTE: there are a bunch of duplicate records in xbrl_factoid_rate_base_tags.csv
# Also, these tags are only applicable to the
- # core_ferc1__yearly_balance_sheet_assets table, but we need to pass in
+ # core_ferc1__yearly_balance_sheet_assets_sched110 table, but we need to pass in
# a dataframe with the right structure to all of the exploders,
# so we're just re-using this one for the moment.
tags_csv = (
@@ -1142,17 +1154,17 @@ def create_exploded_table_assets() -> list[AssetsDefinition]:
{
"root_table": "income_statement_ferc1",
"table_names_to_explode": [
- "core_ferc1__yearly_income_statement",
- "core_ferc1__yearly_depreciation_amortization_summary",
- "core_ferc1__yearly_electric_operating_expenses",
- "core_ferc1__yearly_electric_operating_revenues",
+ "core_ferc1__yearly_income_statements_sched114",
+ "core_ferc1__yearly_depreciation_summary_sched336",
+ "core_ferc1__yearly_operating_expenses_sched320",
+ "core_ferc1__yearly_operating_revenues_sched300",
],
"group_metric_checks": EXPLOSION_CALCULATION_TOLERANCES[
- "core_ferc1__yearly_income_statement"
+ "core_ferc1__yearly_income_statements_sched114"
],
"seed_nodes": [
NodeId(
- table_name="core_ferc1__yearly_income_statement",
+ table_name="core_ferc1__yearly_income_statements_sched114",
xbrl_factoid="net_income_loss",
utility_type="total",
plant_status=pd.NA,
@@ -1163,18 +1175,17 @@ def create_exploded_table_assets() -> list[AssetsDefinition]:
{
"root_table": "balance_sheet_assets_ferc1",
"table_names_to_explode": [
- "core_ferc1__yearly_balance_sheet_assets",
- "core_ferc1__yearly_balance_sheet_assets",
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
- "core_ferc1__yearly_plant_in_service",
- "core_ferc1__yearly_electric_plant_depreciation_functional",
+ "core_ferc1__yearly_balance_sheet_assets_sched110",
+ "core_ferc1__yearly_utility_plant_summary_sched200",
+ "core_ferc1__yearly_plant_in_service_sched204",
+ "core_ferc1__yearly_depreciation_by_function_sched219",
],
"group_metric_checks": EXPLOSION_CALCULATION_TOLERANCES[
- "core_ferc1__yearly_balance_sheet_assets"
+ "core_ferc1__yearly_balance_sheet_assets_sched110"
],
"seed_nodes": [
NodeId(
- table_name="core_ferc1__yearly_balance_sheet_assets",
+ table_name="core_ferc1__yearly_balance_sheet_assets_sched110",
xbrl_factoid="assets_and_other_debits",
utility_type=pd.NA,
plant_status=pd.NA,
@@ -1185,15 +1196,15 @@ def create_exploded_table_assets() -> list[AssetsDefinition]:
{
"root_table": "balance_sheet_liabilities_ferc1",
"table_names_to_explode": [
- "core_ferc1__yearly_balance_sheet_liabilities",
- "core_ferc1__yearly_retained_earnings",
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110",
+ "core_ferc1__yearly_retained_earnings_sched118",
],
"group_metric_checks": EXPLOSION_CALCULATION_TOLERANCES[
- "core_ferc1__yearly_balance_sheet_liabilities"
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110"
],
"seed_nodes": [
NodeId(
- table_name="core_ferc1__yearly_balance_sheet_liabilities",
+ table_name="core_ferc1__yearly_balance_sheet_liabilities_sched110",
xbrl_factoid="liabilities_and_other_credits",
utility_type=pd.NA,
plant_status=pd.NA,
@@ -1629,8 +1640,8 @@ class XbrlCalculationForestFerc1(BaseModel):
"""A class for manipulating groups of hierarchically nested XBRL calculations.
We expect that the facts reported in high-level FERC tables like
- :ref:`core_ferc1__yearly_income_statement` and
- :ref:`core_ferc1__yearly_balance_sheet_assets` should be
+ :ref:`core_ferc1__yearly_income_statements_sched114` and
+ :ref:`core_ferc1__yearly_balance_sheet_assets_sched110` should be
calculable from many individually reported granular values, based on the
calculations encoded in the XBRL Metadata, and that these relationships should have
a hierarchical tree structure. Several individual values from the higher level
@@ -2029,21 +2040,21 @@ def forest(self: Self) -> nx.DiGraph:
# only stepchildren node removal from above. a generalization here would be good
almost_pure_stepparents = [
NodeId(
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
+ "core_ferc1__yearly_utility_plant_summary_sched200",
"depreciation_amortization_and_depletion_utility_plant_leased_to_others",
"total",
pd.NA,
pd.NA,
),
NodeId(
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
+ "core_ferc1__yearly_utility_plant_summary_sched200",
"depreciation_and_amortization_utility_plant_held_for_future_use",
"total",
pd.NA,
pd.NA,
),
NodeId(
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
+ "core_ferc1__yearly_utility_plant_summary_sched200",
"utility_plant_in_service_classified_and_unclassified",
"total",
pd.NA,
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 541f562bf3..87aa9a1ce2 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -133,31 +133,31 @@ def _register_output_methods(self: Self):
# PudlTabl will generate a method to read each table from the DB with the given method name
table_method_map_any_freq = { # table_name: method_name
# denorm_ferc1
- "out_ferc1__yearly_balance_sheet_assets": "denorm_balance_sheet_assets_ferc1",
- "out_ferc1__yearly_balance_sheet_liabilities": "denorm_balance_sheet_liabilities_ferc1",
- "out_ferc1__yearly_cash_flows": "denorm_cash_flow_ferc1",
- "out_ferc1__yearly_depreciation_amortization_summary": "denorm_depreciation_amortization_summary_ferc1",
- "out_ferc1__yearly_electric_energy_dispositions": "denorm_electric_energy_dispositions_ferc1",
- "out_ferc1__yearly_electric_energy_sources": "denorm_electric_energy_sources_ferc1",
- "out_ferc1__yearly_electric_operating_expenses": "denorm_electric_operating_expenses_ferc1",
- "out_ferc1__yearly_electric_operating_revenues": "denorm_electric_operating_revenues_ferc1",
- "out_ferc1__yearly_electric_plant_depreciation_changes": "denorm_electric_plant_depreciation_changes_ferc1",
- "out_ferc1__yearly_electric_plant_depreciation_functional": "denorm_electric_plant_depreciation_functional_ferc1",
- "out_ferc1__yearly_electricity_sales_by_rate_schedule": "denorm_electricity_sales_by_rate_schedule_ferc1",
- "out_ferc1__yearly_income_statement": "denorm_income_statement_ferc1",
- "out_ferc1__yearly_other_regulatory_liabilities": "denorm_other_regulatory_liabilities_ferc1",
- "out_ferc1__yearly_retained_earnings": "denorm_retained_earnings_ferc1",
- "out_ferc1__yearly_transmission_lines": "denorm_transmission_statistics_ferc1",
- "out_ferc1__yearly_utility_plant_and_depreciation_summary": "denorm_utility_plant_summary_ferc1",
+ "out_ferc1__yearly_balance_sheet_assets_sched110": "denorm_balance_sheet_assets_ferc1",
+ "out_ferc1__yearly_balance_sheet_liabilities_sched110": "denorm_balance_sheet_liabilities_ferc1",
+ "out_ferc1__yearly_cash_flows_sched120": "denorm_cash_flow_ferc1",
+ "out_ferc1__yearly_depreciation_summary_sched336": "denorm_depreciation_amortization_summary_ferc1",
+ "out_ferc1__yearly_energy_dispositions_sched401": "denorm_electric_energy_dispositions_ferc1",
+ "out_ferc1__yearly_energy_sources_sched401": "denorm_electric_energy_sources_ferc1",
+ "out_ferc1__yearly_operating_expenses_sched320": "denorm_electric_operating_expenses_ferc1",
+ "out_ferc1__yearly_operating_revenues_sched300": "denorm_electric_operating_revenues_ferc1",
+ "out_ferc1__yearly_depreciation_changes_sched219": "denorm_electric_plant_depreciation_changes_ferc1",
+ "out_ferc1__yearly_depreciation_by_function_sched219": "denorm_electric_plant_depreciation_functional_ferc1",
+ "out_ferc1__yearly_sales_by_rate_schedules_sched304": "denorm_electricity_sales_by_rate_schedule_ferc1",
+ "out_ferc1__yearly_income_statements_sched114": "denorm_income_statement_ferc1",
+ "out_ferc1__yearly_other_regulatory_liabilities_sched278": "denorm_other_regulatory_liabilities_ferc1",
+ "out_ferc1__yearly_retained_earnings_sched118": "denorm_retained_earnings_ferc1",
+ "out_ferc1__yearly_transmission_lines_sched422": "denorm_transmission_statistics_ferc1",
+ "out_ferc1__yearly_utility_plant_summary_sched200": "denorm_utility_plant_summary_ferc1",
"_out_ferc1__yearly_plants_utilities": "pu_ferc1",
- "_out_ferc1__yearly_steam_plants": "plants_steam_ferc1",
- "ou_ferc1__yearly_steam_plants_fuel": "fuel_ferc1",
- "out_ferc1__yearly_steam_plants_fuel_by_plant": "fbp_ferc1",
- "_out_ferc1__yearly_small_plants": "plants_small_ferc1",
- "_out_ferc1__yearly_hydroelectric_plants": "plants_hydro_ferc1",
- "_out_ferc1__yearly_pumped_storage_plants": "plants_pumped_storage_ferc1",
- "out_ferc1__yearly_purchased_power_and_exchanges": "purchased_power_ferc1",
- "out_ferc1__yearly_plant_in_service": "plant_in_service_ferc1",
+ "_out_ferc1__yearly_steam_plants_sched402": "plants_steam_ferc1",
+ "out_ferc1__yearly_steam_plants_fuel_sched402": "fuel_ferc1",
+ "out_ferc1__yearly_steam_plants_fuel_by_plant_sched402": "fbp_ferc1",
+ "_out_ferc1__yearly_small_plants_sched410": "plants_small_ferc1",
+ "_out_ferc1__yearly_hydroelectric_plants_sched406": "plants_hydro_ferc1",
+ "_out_ferc1__yearly_pumped_storage_plants_sched408": "plants_pumped_storage_ferc1",
+ "out_ferc1__yearly_purchased_power_and_exchanges_sched326": "purchased_power_ferc1",
+ "out_ferc1__yearly_plant_in_service_sched204": "plant_in_service_ferc1",
"out_ferc1__yearly_all_plants": "plants_all_ferc1",
# denorm_eia (data comes from multiple EIA forms)
"out_eia__yearly_plants": "plants_eia860",
diff --git a/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv b/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
index 826e51061e..e8074480d9 100644
--- a/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
+++ b/src/pudl/package_data/ferc1/xbrl_calculation_component_fixes.csv
@@ -1,148 +1,148 @@
table_name_parent,xbrl_factoid_parent,table_name,xbrl_factoid,weight,utility_type,plant_function,plant_status
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,abandonment_of_leases,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,1.0,total,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,amortization_of_other_utility_plant_utility_plant_in_service,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,amortization_of_plant_acquisition_adjustment,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_amortization_and_depletion_utility_plant_leased_to_others,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_and_amortization_utility_plant_held_for_future_use,,,,
-core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_utility_plant_in_service,,,,
-core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,construction_work_in_progress,1.0,total,,
-core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,derivative_instrument_assets_hedges_long_term,,,,
-core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,derivative_instrument_assets_long_term,,,,
-core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_derivative_instrument_assets_hedges_long_term,-1.0,,,
-core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_derivative_instrument_assets_long_term,-1.0,,,
-core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,less_noncurrent_portion_of_allowances,-1.0,,,
-core_ferc1__yearly_balance_sheet_assets,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets,noncurrent_portion_of_allowances,,,,
-core_ferc1__yearly_balance_sheet_assets,deferred_debits,core_ferc1__yearly_balance_sheet_assets,preliminary_natural_gas_survey_and_investigation_charges,1.0,,,
-core_ferc1__yearly_balance_sheet_assets,deferred_debits,core_ferc1__yearly_balance_sheet_assets,preliminary_natural_gas_and_other_survey_and_investigation_charges,1.0,,,
-core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,core_ferc1__yearly_balance_sheet_assets,nuclear_fuel,1.0,,,
-core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,nuclear_fuel_materials_ferc1,nuclear_fuel_materials_and_assemblies,,,,
-core_ferc1__yearly_balance_sheet_assets,nuclear_fuel_net,nuclear_fuel_materials_ferc1,spent_nuclear_fuel,,,,
-core_ferc1__yearly_balance_sheet_assets,other_property_and_investments,core_ferc1__yearly_balance_sheet_assets,special_funds_all,1.0,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,construction_work_in_progress,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_acquisition_adjustment,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_and_construction_work_in_progress,1.0,total,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_held_for_future_use,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_leased_to_others,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_balance_sheet_assets,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_balance_sheet_assets,utility_plant_and_construction_work_in_progress,,,,
-core_ferc1__yearly_balance_sheet_assets,utility_plant_net,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_net,1.0,total,,
-core_ferc1__yearly_balance_sheet_liabilities,deferred_credits,core_ferc1__yearly_balance_sheet_liabilities,accumulated_deferred_income_taxes,1.0,,,
-core_ferc1__yearly_balance_sheet_liabilities,retained_earnings,core_ferc1__yearly_retained_earnings,retained_earnings,1.0,,,
-core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,long_term_portion_of_derivative_instrument_liabilities,,,,
-core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,less_long_term_portion_of_derivative_instrument_liabilities,-1.0,,,
-core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,long_term_portion_of_derivative_instrument_liabilities_hedges,,,,
-core_ferc1__yearly_balance_sheet_liabilities,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities,less_long_term_portion_of_derivative_instrument_liabilities_hedges,-1.0,,,
-core_ferc1__yearly_electric_energy_sources,sources_of_energy,core_ferc1__yearly_electric_energy_sources,megawatt_hours_purchased,1.0,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,electric_expenses_hydraulic_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,hydraulic_expenses,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_electric_plant_hydraulic_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_miscellaneous_hydraulic_plant,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_reservoirs_dams_and_waterways,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_structures_hydraulic_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,maintenance_supervision_and_engineering_hydraulic_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,miscellaneous_hydraulic_power_generation_expenses,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,rents_hydraulic_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_electric_operating_expenses,water_for_power,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_hydroelectric_plants,opex_operations,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_pumped_storage,opex_operations,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_hydraulic_power,core_ferc1__yearly_plants_steam,opex_operations,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,allowances,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,coolants_and_water,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,electric_expenses_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,fuel_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_boiler_plant_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_electric_plant_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_miscellaneous_steam_plant,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_of_structures_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,maintenance_supervision_and_engineering_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,miscellaneous_steam_power_expenses,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,rents_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_expenses_steam_power_generation,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_from_other_sources,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_electric_operating_expenses,steam_transferred_credit,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_hydroelectric_plants,opex_operations,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_pumped_storage,opex_operations,,,,
-core_ferc1__yearly_electric_operating_expenses,power_production_expenses_steam_power,core_ferc1__yearly_plants_steam,opex_operations,,,,
-core_ferc1__yearly_electric_operating_expenses,transmission_operation_expense,core_ferc1__yearly_electric_operating_expenses,load_dispatching_transmission_expense,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,forfeited_discounts,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,interdepartmental_rents,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,miscellaneous_revenue,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,miscellaneous_service_revenues,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,other_electric_revenue,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,other_miscellaneous_operating_revenues,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,regional_transmission_service_revenues,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,rent_from_electric_property,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,revenues_from_transmission_of_electricity_of_others,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,other_operating_revenues,core_ferc1__yearly_electric_operating_revenues,sales_of_water_and_water_power,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,sales_to_ultimate_consumers,core_ferc1__yearly_electric_operating_revenues,large_or_industrial,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,sales_to_ultimate_consumers,core_ferc1__yearly_electric_operating_revenues,small_or_commercial,1.0,,,
-core_ferc1__yearly_electric_operating_revenues,sales_to_ultimate_consumers,core_ferc1__yearly_electricity_sales_by_rate_schedule,commercial_and_industrial,,,,
-core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,book_cost_of_asset_retirement_costs,1.0,,,
-core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,depreciation_provision,1.0,,,
-core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,net_charges_for_retired_plant,1.0,,,
-core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,other_adjustments_to_accumulated_depreciation,1.0,,,
-core_ferc1__yearly_electric_plant_depreciation_changes,ending_balance,core_ferc1__yearly_electric_plant_depreciation_changes,starting_balance,1.0,,,
-core_ferc1__yearly_income_statement,amortization_and_depletion_of_utility_plant,core_ferc1__yearly_depreciation_amortization_summary,amortization_limited_term_electric_plant,1.0,electric,total,
-core_ferc1__yearly_income_statement,amortization_and_depletion_of_utility_plant,core_ferc1__yearly_depreciation_amortization_summary,amortization_other_electric_plant,1.0,electric,total,
-core_ferc1__yearly_income_statement,depreciation_expense,core_ferc1__yearly_depreciation_amortization_summary,depreciation_expense,1.0,electric,total,
-core_ferc1__yearly_income_statement,depreciation_expense_for_asset_retirement_costs,core_ferc1__yearly_depreciation_amortization_summary,depreciation_expense_asset_retirement,1.0,electric,total,
-core_ferc1__yearly_income_statement,income_before_extraordinary_items,core_ferc1__yearly_income_statement,net_utility_operating_income,1.0,,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,distribution_maintenance_expense_electric,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,hydraulic_power_generation_maintenance_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,maintenance_of_general_plant,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,nuclear_power_generation_maintenance_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,other_power_generation_maintenance_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,regional_market_maintenance_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,steam_power_generation_maintenance_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,maintenance_expense,core_ferc1__yearly_electric_operating_expenses,transmission_maintenance_expense_electric,1.0,electric,,
-core_ferc1__yearly_income_statement,operating_revenues,core_ferc1__yearly_electric_operating_revenues,electric_operating_revenues,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,administrative_and_general_operation_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,customer_account_expenses,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,customer_service_and_information_expenses,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,distribution_operation_expenses_electric,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,hydraulic_power_generation_operations_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,nuclear_power_generation_operations_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,other_power_generation_operations_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,regional_market_operation_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,sales_expenses,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,steam_power_generation_operations_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,transmission_operation_expense,1.0,electric,,
-core_ferc1__yearly_income_statement,operation_expense,core_ferc1__yearly_electric_operating_expenses,power_production_expenses,1.0,electric,,
-core_ferc1__yearly_income_statement,other_income_deductions,core_ferc1__yearly_income_statement,miscellaneous_deductions,1.0,,,
-core_ferc1__yearly_income_statement,taxes_on_other_income_and_deductions,core_ferc1__yearly_income_statement,investment_tax_credits,-1.0,,,
-core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,distribution_plant,1.0,,,
-core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,general_plant,1.0,,,
-core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,intangible_plant,1.0,,,
-core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,production_plant,1.0,,,
-core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,transmission_and_market_operation_plant_regional_transmission_and_market_operation_plant,1.0,,,
-core_ferc1__yearly_plant_in_service,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service,transmission_plant,1.0,,,
-core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_including_reserve_amortization,core_ferc1__yearly_retained_earnings,appropriated_retained_earnings,1.0,,,
-core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_including_reserve_amortization,core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_amortization_reserve_federal,1.0,,,
-core_ferc1__yearly_retained_earnings,retained_earnings,core_ferc1__yearly_retained_earnings,appropriated_retained_earnings_including_reserve_amortization,1.0,,,
-core_ferc1__yearly_retained_earnings,retained_earnings,core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,adjustments_to_retained_earnings_credit,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,adjustments_to_retained_earnings_debit,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,appropriations_of_retained_earnings,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,balance_transferred_from_income,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,dividends_declared_common_stock,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,dividends_declared_preferred_stock,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,transfers_from_unappropriated_undistributed_subsidiary_earnings,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings,unappropriated_retained_earnings_previous_year,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,changes_unappropriated_undistributed_subsidiary_earnings_credits,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,dividends_received,-1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,equity_in_earnings_of_subsidiary_companies,1.0,,,
-core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings_previous_year,1.0,,,
-core_ferc1__yearly_balance_sheet_liabilities,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings,unappropriated_undistributed_subsidiary_earnings,1.0,,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,depreciation_utility_plant_in_service,core_ferc1__yearly_electric_plant_depreciation_functional,accumulated_depreciation,1.0,electric,total,in_service
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified,,,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_property_under_capital_leases,1.0,,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_property_under_capital_leases,,,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_experimental_plant_unclassified,core_ferc1__yearly_plant_in_service,experimental_electric_plant_unclassified,1.0,electric,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_purchased,1.0,electric,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service,electric_plant_sold,-1.0,electric,,
-core_ferc1__yearly_utility_plant_and_depreciation_summary,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets,utility_plant,,,,
\ No newline at end of file
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,abandonment_of_leases,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,amortization_of_other_utility_plant_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,amortization_of_plant_acquisition_adjustment,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,depreciation_amortization_and_depletion_utility_plant_leased_to_others,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,depreciation_and_amortization_utility_plant_held_for_future_use,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,depreciation_utility_plant_in_service,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,construction_work_in_progress,core_ferc1__yearly_utility_plant_summary_sched200,construction_work_in_progress,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets_sched110,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets_sched110,derivative_instrument_assets_hedges_long_term,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets_sched110,derivative_instrument_assets_long_term,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets_sched110,less_derivative_instrument_assets_hedges_long_term,-1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets_sched110,less_derivative_instrument_assets_long_term,-1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets_sched110,less_noncurrent_portion_of_allowances,-1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,current_and_accrued_assets,core_ferc1__yearly_balance_sheet_assets_sched110,noncurrent_portion_of_allowances,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,deferred_debits,core_ferc1__yearly_balance_sheet_assets_sched110,preliminary_natural_gas_survey_and_investigation_charges,1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,deferred_debits,core_ferc1__yearly_balance_sheet_assets_sched110,preliminary_natural_gas_and_other_survey_and_investigation_charges,1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,nuclear_fuel_net,core_ferc1__yearly_balance_sheet_assets_sched110,nuclear_fuel,1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,nuclear_fuel_net,nuclear_fuel_materials_ferc1,nuclear_fuel_materials_and_assemblies,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,nuclear_fuel_net,nuclear_fuel_materials_ferc1,spent_nuclear_fuel,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,other_property_and_investments,core_ferc1__yearly_balance_sheet_assets_sched110,special_funds_all,1.0,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets_sched110,construction_work_in_progress,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_acquisition_adjustment,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_and_construction_work_in_progress,1.0,total,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_held_for_future_use,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_classified_and_unclassified,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_leased_to_others,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_net,core_ferc1__yearly_balance_sheet_assets_sched110,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_net,core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_and_construction_work_in_progress,,,,
+core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant_net,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_net,1.0,total,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,deferred_credits,core_ferc1__yearly_balance_sheet_liabilities_sched110,accumulated_deferred_income_taxes,1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,retained_earnings,core_ferc1__yearly_retained_earnings_sched118,retained_earnings,1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities_sched110,long_term_portion_of_derivative_instrument_liabilities,,,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities_sched110,less_long_term_portion_of_derivative_instrument_liabilities,-1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities_sched110,long_term_portion_of_derivative_instrument_liabilities_hedges,,,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,current_and_accrued_liabilities,core_ferc1__yearly_balance_sheet_liabilities_sched110,less_long_term_portion_of_derivative_instrument_liabilities_hedges,-1.0,,,
+core_ferc1__yearly_energy_sources_sched401,sources_of_energy,core_ferc1__yearly_energy_sources_sched401,megawatt_hours_purchased,1.0,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,electric_expenses_hydraulic_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,hydraulic_expenses,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_electric_plant_hydraulic_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_miscellaneous_hydraulic_plant,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_reservoirs_dams_and_waterways,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_structures_hydraulic_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_supervision_and_engineering_hydraulic_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,miscellaneous_hydraulic_power_generation_expenses,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,rents_hydraulic_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_operating_expenses_sched320,water_for_power,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_hydroelectric_plants_sched406,opex_operations,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_pumped_storage_plants_sched408,opex_operations,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_hydraulic_power,core_ferc1__yearly_steam_plants_sched402,opex_operations,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,allowances,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,coolants_and_water,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,electric_expenses_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,fuel_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_boiler_plant_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_electric_plant_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_miscellaneous_steam_plant,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_structures_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,maintenance_supervision_and_engineering_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,miscellaneous_steam_power_expenses,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,rents_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,steam_expenses_steam_power_generation,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,steam_from_other_sources,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_operating_expenses_sched320,steam_transferred_credit,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_hydroelectric_plants_sched406,opex_operations,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_pumped_storage_plants_sched408,opex_operations,,,,
+core_ferc1__yearly_operating_expenses_sched320,power_production_expenses_steam_power,core_ferc1__yearly_steam_plants_sched402,opex_operations,,,,
+core_ferc1__yearly_operating_expenses_sched320,transmission_operation_expense,core_ferc1__yearly_operating_expenses_sched320,load_dispatching_transmission_expense,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,forfeited_discounts,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,interdepartmental_rents,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,miscellaneous_revenue,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,miscellaneous_service_revenues,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,other_electric_revenue,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,other_miscellaneous_operating_revenues,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,regional_transmission_service_revenues,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,rent_from_electric_property,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,revenues_from_transmission_of_electricity_of_others,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,other_operating_revenues,core_ferc1__yearly_operating_revenues_sched300,sales_of_water_and_water_power,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,sales_to_ultimate_consumers,core_ferc1__yearly_operating_revenues_sched300,large_or_industrial,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,sales_to_ultimate_consumers,core_ferc1__yearly_operating_revenues_sched300,small_or_commercial,1.0,,,
+core_ferc1__yearly_operating_revenues_sched300,sales_to_ultimate_consumers,core_ferc1__yearly_sales_by_rate_schedules_sched304,commercial_and_industrial,,,,
+core_ferc1__yearly_depreciation_changes_sched219,ending_balance,core_ferc1__yearly_depreciation_changes_sched219,book_cost_of_asset_retirement_costs,1.0,,,
+core_ferc1__yearly_depreciation_changes_sched219,ending_balance,core_ferc1__yearly_depreciation_changes_sched219,depreciation_provision,1.0,,,
+core_ferc1__yearly_depreciation_changes_sched219,ending_balance,core_ferc1__yearly_depreciation_changes_sched219,net_charges_for_retired_plant,1.0,,,
+core_ferc1__yearly_depreciation_changes_sched219,ending_balance,core_ferc1__yearly_depreciation_changes_sched219,other_adjustments_to_accumulated_depreciation,1.0,,,
+core_ferc1__yearly_depreciation_changes_sched219,ending_balance,core_ferc1__yearly_depreciation_changes_sched219,starting_balance,1.0,,,
+core_ferc1__yearly_income_statements_sched114,amortization_and_depletion_of_utility_plant,core_ferc1__yearly_depreciation_summary_sched336,amortization_limited_term_electric_plant,1.0,electric,total,
+core_ferc1__yearly_income_statements_sched114,amortization_and_depletion_of_utility_plant,core_ferc1__yearly_depreciation_summary_sched336,amortization_other_electric_plant,1.0,electric,total,
+core_ferc1__yearly_income_statements_sched114,depreciation_expense,core_ferc1__yearly_depreciation_summary_sched336,depreciation_expense,1.0,electric,total,
+core_ferc1__yearly_income_statements_sched114,depreciation_expense_for_asset_retirement_costs,core_ferc1__yearly_depreciation_summary_sched336,depreciation_expense_asset_retirement,1.0,electric,total,
+core_ferc1__yearly_income_statements_sched114,income_before_extraordinary_items,core_ferc1__yearly_income_statements_sched114,net_utility_operating_income,1.0,,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,distribution_maintenance_expense_electric,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,hydraulic_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,maintenance_of_general_plant,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,nuclear_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,other_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,regional_market_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,steam_power_generation_maintenance_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,maintenance_expense,core_ferc1__yearly_operating_expenses_sched320,transmission_maintenance_expense_electric,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operating_revenues,core_ferc1__yearly_operating_revenues_sched300,electric_operating_revenues,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,administrative_and_general_operation_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,customer_account_expenses,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,customer_service_and_information_expenses,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,distribution_operation_expenses_electric,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,hydraulic_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,nuclear_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,other_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,regional_market_operation_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,sales_expenses,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,steam_power_generation_operations_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,transmission_operation_expense,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,operation_expense,core_ferc1__yearly_operating_expenses_sched320,power_production_expenses,1.0,electric,,
+core_ferc1__yearly_income_statements_sched114,other_income_deductions,core_ferc1__yearly_income_statements_sched114,miscellaneous_deductions,1.0,,,
+core_ferc1__yearly_income_statements_sched114,taxes_on_other_income_and_deductions,core_ferc1__yearly_income_statements_sched114,investment_tax_credits,-1.0,,,
+core_ferc1__yearly_plant_in_service_sched204,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service_sched204,distribution_plant,1.0,,,
+core_ferc1__yearly_plant_in_service_sched204,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service_sched204,general_plant,1.0,,,
+core_ferc1__yearly_plant_in_service_sched204,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service_sched204,intangible_plant,1.0,,,
+core_ferc1__yearly_plant_in_service_sched204,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service_sched204,production_plant,1.0,,,
+core_ferc1__yearly_plant_in_service_sched204,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service_sched204,transmission_and_market_operation_plant_regional_transmission_and_market_operation_plant,1.0,,,
+core_ferc1__yearly_plant_in_service_sched204,electric_plant_in_service_and_completed_construction_not_classified_electric,core_ferc1__yearly_plant_in_service_sched204,transmission_plant,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,appropriated_retained_earnings_including_reserve_amortization,core_ferc1__yearly_retained_earnings_sched118,appropriated_retained_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,appropriated_retained_earnings_including_reserve_amortization,core_ferc1__yearly_retained_earnings_sched118,appropriated_retained_earnings_amortization_reserve_federal,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,retained_earnings,core_ferc1__yearly_retained_earnings_sched118,appropriated_retained_earnings_including_reserve_amortization,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,retained_earnings,core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,adjustments_to_retained_earnings_credit,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,adjustments_to_retained_earnings_debit,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,appropriations_of_retained_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,balance_transferred_from_income,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,dividends_declared_common_stock,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,dividends_declared_preferred_stock,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,transfers_from_unappropriated_undistributed_subsidiary_earnings,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings,core_ferc1__yearly_retained_earnings_sched118,unappropriated_retained_earnings_previous_year,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings_sched118,changes_unappropriated_undistributed_subsidiary_earnings_credits,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings_sched118,dividends_received,-1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings_sched118,equity_in_earnings_of_subsidiary_companies,1.0,,,
+core_ferc1__yearly_retained_earnings_sched118,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings_sched118,unappropriated_undistributed_subsidiary_earnings_previous_year,1.0,,,
+core_ferc1__yearly_balance_sheet_liabilities_sched110,unappropriated_undistributed_subsidiary_earnings,core_ferc1__yearly_retained_earnings_sched118,unappropriated_undistributed_subsidiary_earnings,1.0,,,
+core_ferc1__yearly_utility_plant_summary_sched200,accumulated_provision_for_depreciation_amortization_and_depletion_of_plant_utility,core_ferc1__yearly_utility_plant_summary_sched200,depreciation_amortization_and_depletion_utility_plant_in_service,,,,
+core_ferc1__yearly_utility_plant_summary_sched200,depreciation_utility_plant_in_service,core_ferc1__yearly_depreciation_by_function_sched219,accumulated_depreciation,1.0,electric,total,in_service
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_classified,,,,
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_classified_and_property_under_capital_leases,1.0,,,
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_classified_and_unclassified,core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_property_under_capital_leases,,,,
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_experimental_plant_unclassified,core_ferc1__yearly_plant_in_service_sched204,experimental_electric_plant_unclassified,1.0,electric,,
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service_sched204,electric_plant_purchased,1.0,electric,,
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_in_service_plant_purchased_or_sold,core_ferc1__yearly_plant_in_service_sched204,electric_plant_sold,-1.0,electric,,
+core_ferc1__yearly_utility_plant_summary_sched200,utility_plant_and_construction_work_in_progress,core_ferc1__yearly_balance_sheet_assets_sched110,utility_plant,,,,
\ No newline at end of file
diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py
index 7f44cc152a..33abcc66b4 100644
--- a/src/pudl/transform/ferc1.py
+++ b/src/pudl/transform/ferc1.py
@@ -132,42 +132,40 @@ class TableIdFerc1(enum.Enum):
Package. But this works for now.
"""
- FUEL_FERC1 = "core_ferc1__yearly_steam_plants_fuel"
- PLANTS_STEAM_FERC1 = "core_ferc1__yearly_plants_steam"
- PLANTS_HYDRO_FERC1 = "core_ferc1__yearly_hydroelectric_plants"
- PLANTS_SMALL_FERC1 = "core_ferc1__yearly_plants_small"
- PLANTS_PUMPED_STORAGE_FERC1 = "core_ferc1__yearly_plants_pumped_storage"
- PLANT_IN_SERVICE_FERC1 = "core_ferc1__yearly_plant_in_service"
- PURCHASED_POWER_FERC1 = "core_ferc1__yearly_purchased_power_and_exchanges"
- TRANSMISSION_STATISTICS_FERC1 = "core_ferc1__yearly_transmission_lines"
- ELECTRIC_ENERGY_SOURCES_FERC1 = "core_ferc1__yearly_electric_energy_sources"
+ FUEL_FERC1 = "core_ferc1__yearly_steam_plants_fuel_sched402"
+ PLANTS_STEAM_FERC1 = "core_ferc1__yearly_steam_plants_sched402"
+ PLANTS_HYDRO_FERC1 = "core_ferc1__yearly_hydroelectric_plants_sched406"
+ PLANTS_SMALL_FERC1 = "core_ferc1__yearly_small_plants_sched410"
+ PLANTS_PUMPED_STORAGE_FERC1 = "core_ferc1__yearly_pumped_storage_plants_sched408"
+ PLANT_IN_SERVICE_FERC1 = "core_ferc1__yearly_plant_in_service_sched204"
+ PURCHASED_POWER_FERC1 = "core_ferc1__yearly_purchased_power_and_exchanges_sched326"
+ TRANSMISSION_STATISTICS_FERC1 = "core_ferc1__yearly_transmission_lines_sched422"
+ ELECTRIC_ENERGY_SOURCES_FERC1 = "core_ferc1__yearly_energy_sources_sched401"
ELECTRIC_ENERGY_DISPOSITIONS_FERC1 = (
- "core_ferc1__yearly_electric_energy_dispositions"
+ "core_ferc1__yearly_energy_dispositions_sched401"
)
- UTILITY_PLANT_SUMMARY_FERC1 = (
- "core_ferc1__yearly_utility_plant_and_depreciation_summary"
- )
- ELECTRIC_OPERATING_EXPENSES_FERC1 = "core_ferc1__yearly_electric_operating_expenses"
- BALANCE_SHEET_LIABILITIES = "core_ferc1__yearly_balance_sheet_liabilities"
+ UTILITY_PLANT_SUMMARY_FERC1 = "core_ferc1__yearly_utility_plant_summary_sched200"
+ ELECTRIC_OPERATING_EXPENSES_FERC1 = "core_ferc1__yearly_operating_expenses_sched320"
+ BALANCE_SHEET_LIABILITIES = "core_ferc1__yearly_balance_sheet_liabilities_sched110"
DEPRECIATION_AMORTIZATION_SUMMARY_FERC1 = (
- "core_ferc1__yearly_depreciation_amortization_summary"
+ "core_ferc1__yearly_depreciation_summary_sched336"
)
- BALANCE_SHEET_ASSETS_FERC1 = "core_ferc1__yearly_balance_sheet_assets"
- RETAINED_EARNINGS_FERC1 = "core_ferc1__yearly_retained_earnings"
- INCOME_STATEMENT_FERC1 = "core_ferc1__yearly_income_statement"
+ BALANCE_SHEET_ASSETS_FERC1 = "core_ferc1__yearly_balance_sheet_assets_sched110"
+ RETAINED_EARNINGS_FERC1 = "core_ferc1__yearly_retained_earnings_sched118"
+ INCOME_STATEMENT_FERC1 = "core_ferc1__yearly_income_statements_sched114"
ELECTRIC_PLANT_DEPRECIATION_CHANGES_FERC1 = (
- "core_ferc1__yearly_electric_plant_depreciation_changes"
+ "core_ferc1__yearly_depreciation_changes_sched219"
)
- ELECTRIC_OPERATING_REVENUES_FERC1 = "core_ferc1__yearly_electric_operating_revenues"
+ ELECTRIC_OPERATING_REVENUES_FERC1 = "core_ferc1__yearly_operating_revenues_sched300"
ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1 = (
- "core_ferc1__yearly_electric_plant_depreciation_functional"
+ "core_ferc1__yearly_depreciation_by_function_sched219"
)
- CASH_FLOW_FERC1 = "core_ferc1__yearly_cash_flows"
+ CASH_FLOW_FERC1 = "core_ferc1__yearly_cash_flows_sched120"
ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1 = (
- "core_ferc1__yearly_electricity_sales_by_rate_schedule"
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304"
)
OTHER_REGULATORY_LIABILITIES_FERC1 = (
- "core_ferc1__yearly_other_regulatory_liabilities"
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278"
)
@@ -294,7 +292,7 @@ def wide_to_tidy(df: pd.DataFrame, params: WideToTidy) -> pd.DataFrame:
required for that aggregation are added later.
For table that have a internal relationship between the values in the
- ``params.value_types``, such as the :ref:`core_ferc1__yearly_plant_in_service` table, this also
+ ``params.value_types``, such as the :ref:`core_ferc1__yearly_plant_in_service_sched204` table, this also
enables aggregation across columns to calculate the ending balance based on the
starting balance and all of the reported changes.
"""
@@ -2860,10 +2858,10 @@ def reconcile_table_calculations(
class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`core_ferc1__yearly_steam_plants_fuel` table.
+ """A table transformer specific to the :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table.
- The :ref:`core_ferc1__yearly_steam_plants_fuel` table reports data about fuel consumed by large thermal power
- plants in the :ref:`core_ferc1__yearly_plants_steam` table. Each record in the steam table is
+ The :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table reports data about fuel consumed by large thermal power
+ plants in the :ref:`core_ferc1__yearly_steam_plants_sched402` table. Each record in the steam table is
typically associated with several records in the fuel table, with each fuel record
reporting data for a particular type of fuel consumed by that plant over the course
of a year. The fuel table presents several challenges.
@@ -2919,7 +2917,7 @@ class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
- """Table specific transforms for core_ferc1__yearly_steam_plants_fuel.
+ """Table specific transforms for core_ferc1__yearly_steam_plants_fuel_sched402.
Args:
df: Pre-processed, concatenated XBRL and DBF data.
@@ -2957,7 +2955,7 @@ def process_dbf(self, raw_dbf: pd.DataFrame) -> pd.DataFrame:
def process_xbrl(
self, raw_xbrl_instant: pd.DataFrame, raw_xbrl_duration: pd.DataFrame
) -> pd.DataFrame:
- """Special pre-concat treatment of the :ref:`core_ferc1__yearly_steam_plants_fuel` table.
+ """Special pre-concat treatment of the :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table.
We have to do most of the transformation before the DBF and XBRL data have been
concatenated because the fuel type column is part of the primary key and it is
@@ -3167,7 +3165,7 @@ def drop_total_rows(self, df: pd.DataFrame) -> pd.DataFrame:
* have no identifiable fuel units
* DO report a value for MMBTU / MWh (heat rate)
- In the case of the core_ferc1__yearly_steam_plants_fuel table, we drop any row where all the data columns
+ In the case of the core_ferc1__yearly_steam_plants_fuel_sched402 table, we drop any row where all the data columns
are null AND there's a non-null value in the ``fuel_mmbtu_per_mwh`` column, as
it typically indicates a "total" row for a plant. We also require a null value
for the fuel_units and an "other" value for the fuel type.
@@ -3206,7 +3204,7 @@ def drop_invalid_rows(
class PlantsSteamFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for the :ref:`core_ferc1__yearly_plants_steam` table."""
+ """Transformer class for the :ref:`core_ferc1__yearly_steam_plants_sched402` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_STEAM_FERC1
@@ -3214,14 +3212,14 @@ class PlantsSteamFerc1TableTransformer(Ferc1AbstractTableTransformer):
def transform_main(
self, df: pd.DataFrame, transformed_fuel: pd.DataFrame
) -> pd.DataFrame:
- """Perform table transformations for the :ref:`core_ferc1__yearly_plants_steam` table.
+ """Perform table transformations for the :ref:`core_ferc1__yearly_steam_plants_sched402` table.
Note that this method has a non-standard call signature, since the
- :ref:`core_ferc1__yearly_plants_steam` table depends on the :ref:`core_ferc1__yearly_steam_plants_fuel` table.
+ :ref:`core_ferc1__yearly_steam_plants_sched402` table depends on the :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table.
Args:
df: The pre-processed steam plants table.
- transformed_fuel: The fully transformed :ref:`core_ferc1__yearly_steam_plants_fuel` table. This is
+ transformed_fuel: The fully transformed :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table. This is
required because fuel consumption information is used to help link
steam plant records together across years using
:func:`plants_steam_assign_plant_ids`
@@ -3276,7 +3274,7 @@ def transform(
class PlantsHydroFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`core_ferc1__yearly_hydroelectric_plants` table."""
+ """A table transformer specific to the :ref:`core_ferc1__yearly_hydroelectric_plants_sched406` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_HYDRO_FERC1
@@ -3323,13 +3321,13 @@ def targeted_drop_duplicates(self, df):
class PlantsPumpedStorageFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_plants_pumped_storage` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_pumped_storage_plants_sched408` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_PUMPED_STORAGE_FERC1
class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_purchased_power_and_exchanges`.
+ """Transformer class for :ref:`core_ferc1__yearly_purchased_power_and_exchanges_sched326`.
This table has data about inter-utility power purchases into the PUDL DB. This
includes how much electricty was purchased, how much it cost, and who it was
@@ -3343,7 +3341,7 @@ class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
class PlantInServiceFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A transformer for the :ref:`core_ferc1__yearly_plant_in_service` table."""
+ """A transformer for the :ref:`core_ferc1__yearly_plant_in_service_sched204` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANT_IN_SERVICE_FERC1
has_unique_record_ids: bool = False
@@ -3522,13 +3520,13 @@ def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
class PlantsSmallFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer specific to the :ref:`core_ferc1__yearly_plants_small` table."""
+ """A table transformer specific to the :ref:`core_ferc1__yearly_small_plants_sched410` table."""
table_id: TableIdFerc1 = TableIdFerc1.PLANTS_SMALL_FERC1
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
- """Table specific transforms for core_ferc1__yearly_plants_small.
+ """Table specific transforms for core_ferc1__yearly_small_plants_sched410.
Params:
df: Pre-processed, concatenated XBRL and DBF data.
@@ -4441,7 +4439,7 @@ def spot_fix_rows(self, df: pd.DataFrame) -> pd.DataFrame:
class TransmissionStatisticsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """A table transformer for the :ref:`core_ferc1__yearly_transmission_lines` table."""
+ """A table transformer for the :ref:`core_ferc1__yearly_transmission_lines_sched422` table."""
table_id: TableIdFerc1 = TableIdFerc1.TRANSMISSION_STATISTICS_FERC1
has_unique_record_ids: bool = False
@@ -4453,7 +4451,7 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
class ElectricEnergySourcesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_electric_energy_sources` table.
+ """Transformer class for :ref:`core_ferc1__yearly_energy_sources_sched401` table.
The raw DBF and XBRL table will be split up into two tables. This transformer
generates the sources of electricity for utilities, dropping the information about
@@ -4492,14 +4490,14 @@ def convert_xbrl_metadata_json_to_df(
class ElectricEnergyDispositionsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_electric_energy_dispositions` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_energy_dispositions_sched401` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_ENERGY_DISPOSITIONS_FERC1
has_unique_record_ids: bool = False
class UtilityPlantSummaryFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_utility_plant_summary_sched200` table."""
table_id: TableIdFerc1 = TableIdFerc1.UTILITY_PLANT_SUMMARY_FERC1
has_unique_record_ids: bool = False
@@ -4565,15 +4563,15 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
return df
def aggregated_xbrl_factoids(self: Self, df: pd.DataFrame) -> pd.DataFrame:
- """Aggregate xbrl_factoids records for linking to :ref:`core_ferc1__yearly_plant_in_service`.
+ """Aggregate xbrl_factoids records for linking to :ref:`core_ferc1__yearly_plant_in_service_sched204`.
This table has two ``xbrl_factoid`` which can be linked via calcuations to one
- ``xbrl_factoid`` in the :ref:`core_ferc1__yearly_plant_in_service`.
+ ``xbrl_factoid`` in the :ref:`core_ferc1__yearly_plant_in_service_sched204`.
Doing this 2:1 linkage would be fine in theory. But the
- :ref:`core_ferc1__yearly_plant_in_service` is in most senses
+ :ref:`core_ferc1__yearly_plant_in_service_sched204` is in most senses
the table with the more details and of our desire to build tree-link
relationships between factoids, we need to build a new factoid to link in a 1:1
- manner between this table and the :ref:`core_ferc1__yearly_plant_in_service`.
+ manner between this table and the :ref:`core_ferc1__yearly_plant_in_service_sched204`.
We'll also add this factoid into the metadata via :meth:`process_xbrl_metadata`
and add the linking calculation via :meth:`apply_xbrl_calculation_fixes`.
@@ -4754,7 +4752,7 @@ def spot_fix_bad_signs(self: Self, df: pd.DataFrame) -> pd.DataFrame:
class BalanceSheetLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_balance_sheet_liabilities` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_balance_sheet_liabilities_sched110` table."""
table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_LIABILITIES
has_unique_record_ids: bool = False
@@ -4831,7 +4829,7 @@ def convert_xbrl_metadata_json_to_df(
class BalanceSheetAssetsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_balance_sheet_assets` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_balance_sheet_assets_sched110` table."""
table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_ASSETS_FERC1
has_unique_record_ids: bool = False
@@ -4912,7 +4910,7 @@ def convert_xbrl_metadata_json_to_df(
class IncomeStatementFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for the :ref:`core_ferc1__yearly_income_statement` table."""
+ """Transformer class for the :ref:`core_ferc1__yearly_income_statements_sched114` table."""
table_id: TableIdFerc1 = TableIdFerc1.INCOME_STATEMENT_FERC1
has_unique_record_ids: bool = False
@@ -4992,7 +4990,7 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
class RetainedEarningsFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_retained_earnings` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_retained_earnings_sched118` table."""
table_id: TableIdFerc1 = TableIdFerc1.RETAINED_EARNINGS_FERC1
has_unique_record_ids: bool = False
@@ -5343,7 +5341,7 @@ def deduplicate_xbrl_factoid_xbrl_metadata(self, tbl_meta) -> pd.DataFrame:
column.
Note: This is **almost** the same as the method for
- :ref:`core_ferc1__yearly_electric_operating_revenues`. If we wanted to lean into this
+ :ref:`core_ferc1__yearly_operating_revenues_sched300`. If we wanted to lean into this
version of deduplication more generally this might be a fine way start to an
abstraction, but ideally we wouldn't need to dedupe this at all and instead
enable metadata for every value column from :meth:`wide_to_tidy`.
@@ -5372,7 +5370,7 @@ def deduplicate_xbrl_factoid_xbrl_metadata(self, tbl_meta) -> pd.DataFrame:
class DepreciationAmortizationSummaryFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transformer class for :ref:`core_ferc1__yearly_depreciation_amortization_summary` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_depreciation_summary_sched336` table."""
table_id: TableIdFerc1 = TableIdFerc1.DEPRECIATION_AMORTIZATION_SUMMARY_FERC1
has_unique_record_ids: bool = False
@@ -5419,7 +5417,7 @@ def transform_main(self, df):
class ElectricPlantDepreciationChangesFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transformer class for :ref:`core_ferc1__yearly_electric_plant_depreciation_changes` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_depreciation_changes_sched219` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_PLANT_DEPRECIATION_CHANGES_FERC1
has_unique_record_ids: bool = False
@@ -5488,7 +5486,7 @@ def process_instant_xbrl(self, df: pd.DataFrame) -> pd.DataFrame:
class ElectricPlantDepreciationFunctionalFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transformer for :ref:`core_ferc1__yearly_electric_plant_depreciation_functional` table."""
+ """Transformer for :ref:`core_ferc1__yearly_depreciation_by_function_sched219` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1
has_unique_record_ids: bool = False
@@ -5577,7 +5575,7 @@ def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
class ElectricOperatingExpensesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_electric_operating_expenses` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_operating_expenses_sched320` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_OPERATING_EXPENSES_FERC1
has_unique_record_ids: bool = False
@@ -5635,7 +5633,7 @@ def transform_main(self, df):
class ElectricOperatingRevenuesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_electric_operating_revenues` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_operating_revenues_sched300` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_OPERATING_REVENUES_FERC1
has_unique_record_ids: bool = False
@@ -5711,7 +5709,7 @@ def targeted_drop_duplicates(self, df):
class CashFlowFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transform class for :ref:`core_ferc1__yearly_cash_flows` table."""
+ """Transform class for :ref:`core_ferc1__yearly_cash_flows_sched120` table."""
table_id: TableIdFerc1 = TableIdFerc1.CASH_FLOW_FERC1
has_unique_record_ids: bool = False
@@ -5819,7 +5817,7 @@ def convert_xbrl_metadata_json_to_df(
class ElectricitySalesByRateScheduleFerc1TableTransformer(
Ferc1AbstractTableTransformer
):
- """Transform class for :ref:`core_ferc1__yearly_electricity_sales_by_rate_schedule` table."""
+ """Transform class for :ref:`core_ferc1__yearly_sales_by_rate_schedules_sched304` table."""
table_id: TableIdFerc1 = TableIdFerc1.ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1
has_unique_record_ids: bool = False
@@ -5875,36 +5873,36 @@ def process_xbrl(
class OtherRegulatoryLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransformer):
- """Transformer class for :ref:`core_ferc1__yearly_other_regulatory_liabilities` table."""
+ """Transformer class for :ref:`core_ferc1__yearly_other_regulatory_liabilities_sched278` table."""
table_id: TableIdFerc1 = TableIdFerc1.OTHER_REGULATORY_LIABILITIES_FERC1
has_unique_record_ids = False
FERC1_TFR_CLASSES: Mapping[str, type[Ferc1AbstractTableTransformer]] = {
- "core_ferc1__yearly_steam_plants_fuel": FuelFerc1TableTransformer,
- "core_ferc1__yearly_plants_steam": PlantsSteamFerc1TableTransformer,
- "core_ferc1__yearly_plants_small": PlantsSmallFerc1TableTransformer,
- "core_ferc1__yearly_hydroelectric_plants": PlantsHydroFerc1TableTransformer,
- "core_ferc1__yearly_plant_in_service": PlantInServiceFerc1TableTransformer,
- "core_ferc1__yearly_plants_pumped_storage": PlantsPumpedStorageFerc1TableTransformer,
- "core_ferc1__yearly_transmission_lines": TransmissionStatisticsFerc1TableTransformer,
- "core_ferc1__yearly_purchased_power_and_exchanges": PurchasedPowerFerc1TableTransformer,
- "core_ferc1__yearly_electric_energy_sources": ElectricEnergySourcesFerc1TableTransformer,
- "core_ferc1__yearly_electric_energy_dispositions": ElectricEnergyDispositionsFerc1TableTransformer,
- "core_ferc1__yearly_utility_plant_and_depreciation_summary": UtilityPlantSummaryFerc1TableTransformer,
- "core_ferc1__yearly_electric_operating_expenses": ElectricOperatingExpensesFerc1TableTransformer,
- "core_ferc1__yearly_balance_sheet_liabilities": BalanceSheetLiabilitiesFerc1TableTransformer,
- "core_ferc1__yearly_depreciation_amortization_summary": DepreciationAmortizationSummaryFerc1TableTransformer,
- "core_ferc1__yearly_balance_sheet_assets": BalanceSheetAssetsFerc1TableTransformer,
- "core_ferc1__yearly_income_statement": IncomeStatementFerc1TableTransformer,
- "core_ferc1__yearly_electric_plant_depreciation_changes": ElectricPlantDepreciationChangesFerc1TableTransformer,
- "core_ferc1__yearly_electric_plant_depreciation_functional": ElectricPlantDepreciationFunctionalFerc1TableTransformer,
- "core_ferc1__yearly_retained_earnings": RetainedEarningsFerc1TableTransformer,
- "core_ferc1__yearly_electric_operating_revenues": ElectricOperatingRevenuesFerc1TableTransformer,
- "core_ferc1__yearly_cash_flows": CashFlowFerc1TableTransformer,
- "core_ferc1__yearly_electricity_sales_by_rate_schedule": ElectricitySalesByRateScheduleFerc1TableTransformer,
- "core_ferc1__yearly_other_regulatory_liabilities": OtherRegulatoryLiabilitiesFerc1TableTransformer,
+ "core_ferc1__yearly_steam_plants_fuel_sched402": FuelFerc1TableTransformer,
+ "core_ferc1__yearly_steam_plants_sched402": PlantsSteamFerc1TableTransformer,
+ "core_ferc1__yearly_small_plants_sched410": PlantsSmallFerc1TableTransformer,
+ "core_ferc1__yearly_hydroelectric_plants_sched406": PlantsHydroFerc1TableTransformer,
+ "core_ferc1__yearly_plant_in_service_sched204": PlantInServiceFerc1TableTransformer,
+ "core_ferc1__yearly_pumped_storage_plants_sched408": PlantsPumpedStorageFerc1TableTransformer,
+ "core_ferc1__yearly_transmission_lines_sched422": TransmissionStatisticsFerc1TableTransformer,
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326": PurchasedPowerFerc1TableTransformer,
+ "core_ferc1__yearly_energy_sources_sched401": ElectricEnergySourcesFerc1TableTransformer,
+ "core_ferc1__yearly_energy_dispositions_sched401": ElectricEnergyDispositionsFerc1TableTransformer,
+ "core_ferc1__yearly_utility_plant_summary_sched200": UtilityPlantSummaryFerc1TableTransformer,
+ "core_ferc1__yearly_operating_expenses_sched320": ElectricOperatingExpensesFerc1TableTransformer,
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110": BalanceSheetLiabilitiesFerc1TableTransformer,
+ "core_ferc1__yearly_depreciation_summary_sched336": DepreciationAmortizationSummaryFerc1TableTransformer,
+ "core_ferc1__yearly_balance_sheet_assets_sched110": BalanceSheetAssetsFerc1TableTransformer,
+ "core_ferc1__yearly_income_statements_sched114": IncomeStatementFerc1TableTransformer,
+ "core_ferc1__yearly_depreciation_changes_sched219": ElectricPlantDepreciationChangesFerc1TableTransformer,
+ "core_ferc1__yearly_depreciation_by_function_sched219": ElectricPlantDepreciationFunctionalFerc1TableTransformer,
+ "core_ferc1__yearly_retained_earnings_sched118": RetainedEarningsFerc1TableTransformer,
+ "core_ferc1__yearly_operating_revenues_sched300": ElectricOperatingRevenuesFerc1TableTransformer,
+ "core_ferc1__yearly_cash_flows_sched120": CashFlowFerc1TableTransformer,
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304": ElectricitySalesByRateScheduleFerc1TableTransformer,
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278": OtherRegulatoryLiabilitiesFerc1TableTransformer,
}
@@ -5920,7 +5918,7 @@ def ferc1_transform_asset_factory(
This is a convenient way to create assets for tables that only depend on raw dbf,
raw xbrl instant and duration tables and xbrl metadata. For tables with additional
upstream dependencies, create a stand alone asset using an asset decorator. See
- the core_ferc1__yearly_plants_steam asset.
+ the core_ferc1__yearly_steam_plants_sched402 asset.
Args:
table_name: The name of the table to create an asset for.
@@ -6008,7 +6006,7 @@ def create_ferc1_transform_assets() -> list[AssetsDefinition]:
for table_name, tfr_class in FERC1_TFR_CLASSES.items():
# Bespoke exception. fuel must come before steam b/c fuel proportions are used to
# aid in FERC plant ID assignment.
- if table_name != "core_ferc1__yearly_plants_steam":
+ if table_name != "core_ferc1__yearly_steam_plants_sched402":
assets.append(ferc1_transform_asset_factory(table_name, tfr_class))
return assets
@@ -6017,32 +6015,34 @@ def create_ferc1_transform_assets() -> list[AssetsDefinition]:
@asset(io_manager_key="pudl_sqlite_io_manager")
-def core_ferc1__yearly_plants_steam(
+def core_ferc1__yearly_steam_plants_sched402(
clean_xbrl_metadata_json: dict[str, dict[str, list[dict[str, Any]]]],
raw_ferc1_dbf__f1_steam: pd.DataFrame,
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration: pd.DataFrame,
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant: pd.DataFrame,
- core_ferc1__yearly_steam_plants_fuel: pd.DataFrame,
+ core_ferc1__yearly_steam_plants_fuel_sched402: pd.DataFrame,
) -> pd.DataFrame:
- """Create the clean core_ferc1__yearly_plants_steam table.
+ """Create the clean core_ferc1__yearly_steam_plants_sched402 table.
Args:
clean_xbrl_metadata_json: XBRL metadata json for all tables.
raw_ferc1_dbf__f1_steam: Raw f1_steam table.
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration: raw XBRL duration table.
raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant: raw XBRL instant table.
- core_ferc1__yearly_steam_plants_fuel: Transformed core_ferc1__yearly_steam_plants_fuel table.
+ core_ferc1__yearly_steam_plants_fuel_sched402: Transformed core_ferc1__yearly_steam_plants_fuel_sched402 table.
Returns:
- Clean core_ferc1__yearly_plants_steam table.
+ Clean core_ferc1__yearly_steam_plants_sched402 table.
"""
df = PlantsSteamFerc1TableTransformer(
- xbrl_metadata_json=clean_xbrl_metadata_json["core_ferc1__yearly_plants_steam"]
+ xbrl_metadata_json=clean_xbrl_metadata_json[
+ "core_ferc1__yearly_steam_plants_sched402"
+ ]
).transform(
raw_dbf=raw_ferc1_dbf__f1_steam,
raw_xbrl_instant=raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_instant,
raw_xbrl_duration=raw_ferc1_xbrl__steam_electric_generating_plant_statistics_large_plants_402_duration,
- transformed_fuel=core_ferc1__yearly_steam_plants_fuel,
+ transformed_fuel=core_ferc1__yearly_steam_plants_fuel_sched402,
)
return convert_cols_dtypes(df, data_source="ferc1")
@@ -6093,7 +6093,7 @@ def table_dimensions_ferc1(**kwargs) -> pd.DataFrame:
Compile a dataframe indicating what distinct values are observed in the data for
each dimension column in association with each unique combination of ``table_name``
and ``xbrl_factoid``. E.g. for all factoids found in the
- :ref:`core_ferc1__yearly_electric_plant_depreciation_functional` table,
+ :ref:`core_ferc1__yearly_depreciation_by_function_sched219` table,
the only value observed for ``utility_type`` is ``electric`` and the values observed
for ``plant_status`` include: ``future``, ``in_service``, ``leased`` and ``total``.
@@ -6226,20 +6226,18 @@ def calculation_components_xbrl_ferc1(**kwargs) -> pd.DataFrame:
)
check_for_calc_components_duplicates(
calc_components,
- table_names_known_dupes=[
- "core_ferc1__yearly_electricity_sales_by_rate_schedule"
- ],
+ table_names_known_dupes=["core_ferc1__yearly_sales_by_rate_schedules_sched304"],
idx=calc_and_parent_cols,
)
# check for parent/child duplicates. again need to remove the
- # core_ferc1__yearly_electricity_sales_by_rate_schedule table. Null hack bc comparing pandas
+ # core_ferc1__yearly_sales_by_rate_schedules_sched304 table. Null hack bc comparing pandas
# nulls
self_refs_mask = calc_components[calc_and_parent_cols].fillna("NULL HACK").apply(
lambda x: all(x[col] == x[f"{col}_parent"] for col in calc_cols), axis=1
) & (
calc_components.table_name
- != "core_ferc1__yearly_electricity_sales_by_rate_schedule"
+ != "core_ferc1__yearly_sales_by_rate_schedules_sched304"
)
if not (parent_child_dupes := calc_components.loc[self_refs_mask]).empty:
raise AssertionError(
@@ -6310,7 +6308,7 @@ def check_for_calc_components_duplicates(
) -> None:
"""Check for duplicates calculation records.
- We need to remove the core_ferc1__yearly_electricity_sales_by_rate_schedule bc there are
+ We need to remove the core_ferc1__yearly_sales_by_rate_schedules_sched304 bc there are
duplicate renamed factoids in that table (originally billed/unbilled).
"""
calc_components_test = (
@@ -6343,11 +6341,11 @@ def make_calculation_dimensions_explicit(
We have extended this calculation system to allow independent calculations to be
specified for different values within a given dimension. For example, the
- :ref:`core_ferc1__yearly_utility_plant_and_depreciation_summary` table contains records with a variety of
+ :ref:`core_ferc1__yearly_utility_plant_summary_sched200` table contains records with a variety of
different ``utility_type`` values (gas, electric, etc.). For many combinations of
fact and ``utility_type``, no more detailed information about the soruce of the data
is available, but for some, and only in the case of electric utilities, much more
- detail can be found in the :ref:`core_ferc1__yearly_plant_in_service` table.
+ detail can be found in the :ref:`core_ferc1__yearly_plant_in_service_sched204` table.
In order to use this additional information when it is available, we sometimes
explicitly specify different calculations for different values of additional
dimension columns.
@@ -6591,7 +6589,7 @@ def infer_intra_factoid_totals(
check_for_calc_components_duplicates(
calcs_with_totals,
table_names_known_dupes=[
- "core_ferc1__yearly_electricity_sales_by_rate_schedule",
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304",
],
idx=parent_node_pk + child_node_pk,
)
@@ -6611,16 +6609,16 @@ def infer_intra_factoid_totals(
# minus electric_plant_depreciation_changes_ferc1 bc that table is messy and
# not actually in the explosion work
for table_name in [
- "core_ferc1__yearly_plant_in_service",
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
- "core_ferc1__yearly_electric_operating_expenses",
- "core_ferc1__yearly_balance_sheet_liabilities",
- "core_ferc1__yearly_depreciation_amortization_summary",
- "core_ferc1__yearly_balance_sheet_assets",
- "core_ferc1__yearly_income_statement",
- "core_ferc1__yearly_electric_plant_depreciation_functional",
- "core_ferc1__yearly_retained_earnings",
- "core_ferc1__yearly_electric_operating_revenues",
+ "core_ferc1__yearly_plant_in_service_sched204",
+ "core_ferc1__yearly_utility_plant_summary_sched200",
+ "core_ferc1__yearly_operating_expenses_sched320",
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110",
+ "core_ferc1__yearly_depreciation_summary_sched336",
+ "core_ferc1__yearly_balance_sheet_assets_sched110",
+ "core_ferc1__yearly_income_statements_sched114",
+ "core_ferc1__yearly_depreciation_by_function_sched219",
+ "core_ferc1__yearly_retained_earnings_sched118",
+ "core_ferc1__yearly_operating_revenues_sched300",
]
}
| {
diff --git a/src/pudl/transform/params/__init__.py b/src/pudl/transform/params/__init__.py
index faa48f8218..3c44632dce 100644
--- a/src/pudl/transform/params/__init__.py
+++ b/src/pudl/transform/params/__init__.py
@@ -4,7 +4,7 @@
``ferc1`` or ``eia923``) and must define a dictionary named ``TRANSFORM_PARAMS``.
This dictionary is a nested data structure with 2 or 3 levels of keys:
-* The first level has keys that table names (e.g. ``core_ferc1__yearly_plants_steam``).
+* The first level has keys that table names (e.g. ``core_ferc1__yearly_steam_plants_sched402``).
* The second level has keys that are the names of transform functions (e.g.
``convert_units``).
* In the case of transform functions that operate on a single column and implement the
diff --git a/src/pudl/transform/params/ferc1.py b/src/pudl/transform/params/ferc1.py
index dec9363c95..2d7b651385 100644
--- a/src/pudl/transform/params/ferc1.py
+++ b/src/pudl/transform/params/ferc1.py
@@ -2159,7 +2159,7 @@
# Fully assembled set of FERC 1 transformation parameters
##############################################################################
TRANSFORM_PARAMS = {
- "core_ferc1__yearly_steam_plants_fuel": {
+ "core_ferc1__yearly_steam_plants_fuel_sched402": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2245,7 +2245,7 @@
},
],
},
- "core_ferc1__yearly_plants_steam": {
+ "core_ferc1__yearly_steam_plants_sched402": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2403,7 +2403,7 @@
},
],
},
- "core_ferc1__yearly_hydroelectric_plants": {
+ "core_ferc1__yearly_hydroelectric_plants_sched406": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2541,7 +2541,7 @@
},
],
},
- "core_ferc1__yearly_plants_small": {
+ "core_ferc1__yearly_small_plants_sched410": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2639,7 +2639,7 @@
},
],
},
- "core_ferc1__yearly_plant_in_service": {
+ "core_ferc1__yearly_plant_in_service_sched204": {
"rename_columns_ferc1": {
"xbrl": {
"columns": {
@@ -2741,7 +2741,7 @@
},
},
},
- "core_ferc1__yearly_plants_pumped_storage": {
+ "core_ferc1__yearly_pumped_storage_plants_sched408": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2886,7 +2886,7 @@
},
],
},
- "core_ferc1__yearly_purchased_power_and_exchanges": {
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -2965,7 +2965,7 @@
}
],
},
- "core_ferc1__yearly_transmission_lines": {
+ "core_ferc1__yearly_transmission_lines_sched422": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3047,7 +3047,7 @@
}
],
},
- "core_ferc1__yearly_electric_energy_sources": {
+ "core_ferc1__yearly_energy_sources_sched401": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3124,7 +3124,7 @@
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_elctrc_erg_acct"]},
},
- "core_ferc1__yearly_electric_energy_dispositions": {
+ "core_ferc1__yearly_energy_dispositions_sched401": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3189,7 +3189,7 @@
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_elctrc_erg_acct"]},
},
- "core_ferc1__yearly_utility_plant_and_depreciation_summary": {
+ "core_ferc1__yearly_utility_plant_summary_sched200": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3363,7 +3363,7 @@
},
},
},
- "core_ferc1__yearly_balance_sheet_assets": {
+ "core_ferc1__yearly_balance_sheet_assets_sched110": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3405,7 +3405,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["ending_balance", "starting_balance"],
- "table_name": "core_ferc1__yearly_balance_sheet_assets",
+ "table_name": "core_ferc1__yearly_balance_sheet_assets_sched110",
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_comp_balance_db"]},
"merge_xbrl_metadata": {
@@ -3421,7 +3421,7 @@
},
},
},
- "core_ferc1__yearly_balance_sheet_liabilities": {
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3464,7 +3464,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["ending_balance", "starting_balance"],
- "table_name": "core_ferc1__yearly_balance_sheet_liabilities",
+ "table_name": "core_ferc1__yearly_balance_sheet_liabilities_sched110",
},
"align_row_numbers_dbf": {"dbf_table_names": ["f1_bal_sheet_cr"]},
"merge_xbrl_metadata": {
@@ -3473,7 +3473,7 @@
},
"reconcile_table_calculations": {"column_to_check": "ending_balance"},
},
- "core_ferc1__yearly_depreciation_amortization_summary": {
+ "core_ferc1__yearly_depreciation_summary_sched336": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3553,7 +3553,7 @@
},
},
},
- "core_ferc1__yearly_electric_operating_revenues": {
+ "core_ferc1__yearly_operating_revenues_sched300": {
"rename_columns_ferc1": {
"duration_xbrl": {
"columns": {
@@ -3700,7 +3700,7 @@
},
},
},
- "core_ferc1__yearly_retained_earnings": {
+ "core_ferc1__yearly_retained_earnings_sched118": {
"rename_columns_ferc1": {
"duration_xbrl": {
"columns": {
@@ -3781,7 +3781,7 @@
},
},
},
- "core_ferc1__yearly_income_statement": {
+ "core_ferc1__yearly_income_statements_sched114": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -3913,7 +3913,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["dollar_value"],
- "table_name": "core_ferc1__yearly_income_statement",
+ "table_name": "core_ferc1__yearly_income_statements_sched114",
},
"align_row_numbers_dbf": {
"dbf_table_names": ["f1_income_stmnt", "f1_incm_stmnt_2"]
@@ -3957,7 +3957,7 @@
},
},
},
- "core_ferc1__yearly_electric_plant_depreciation_changes": {
+ "core_ferc1__yearly_depreciation_changes_sched219": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4078,7 +4078,7 @@
},
},
},
- "core_ferc1__yearly_electric_plant_depreciation_functional": {
+ "core_ferc1__yearly_depreciation_by_function_sched219": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4179,7 +4179,7 @@
"subtotal_column": "plant_status",
},
},
- "core_ferc1__yearly_cash_flows": {
+ "core_ferc1__yearly_cash_flows_sched120": {
"rename_columns_ferc1": {
"instant_xbrl": {
"columns": {
@@ -4300,7 +4300,7 @@
"on": "amount_type",
},
},
- "core_ferc1__yearly_electric_operating_expenses": {
+ "core_ferc1__yearly_operating_expenses_sched320": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4517,7 +4517,7 @@
},
"drop_duplicate_rows_dbf": {
"data_columns": ["dollar_value"],
- "table_name": "core_ferc1__yearly_electric_operating_expenses",
+ "table_name": "core_ferc1__yearly_operating_expenses_sched320",
},
"merge_xbrl_metadata": {
"rename_columns": {"xbrl_factoid": "expense_type"},
@@ -4541,7 +4541,7 @@
},
},
},
- "core_ferc1__yearly_other_regulatory_liabilities": {
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
@@ -4589,7 +4589,7 @@
},
],
},
- "core_ferc1__yearly_electricity_sales_by_rate_schedule": {
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304": {
"rename_columns_ferc1": {
"dbf": {
"columns": {
diff --git a/src/pudl/validate.py b/src/pudl/validate.py
index 65ac22c9b3..a246aff4e4 100644
--- a/src/pudl/validate.py
+++ b/src/pudl/validate.py
@@ -655,7 +655,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
###############################################################################
-core_ferc1__yearly_plants_steam_capacity = [
+core_ferc1__yearly_steam_plants_sched402_capacity = [
{
"title": "All Plant Capacity",
"query": "",
@@ -678,7 +678,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-core_ferc1__yearly_plants_steam_expenses = [
+core_ferc1__yearly_steam_plants_sched402_expenses = [
{
"title": "Capital Expenses (median)",
"query": "",
@@ -741,7 +741,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-core_ferc1__yearly_plants_steam_capacity_ratios = [
+core_ferc1__yearly_steam_plants_sched402_capacity_ratios = [
{
"title": "Capacity Factor (Tails)",
"query": "capacity_factor>0.05",
@@ -844,7 +844,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-core_ferc1__yearly_plants_steam_connected_hours = [
+core_ferc1__yearly_steam_plants_sched402_connected_hours = [
{ # Currently failing b/c ~10% of plants have way more than 8760 hours...
"title": "Plant Hours Connected (min/max)",
"query": "",
@@ -857,7 +857,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
},
]
-core_ferc1__yearly_plants_steam_self = [
+core_ferc1__yearly_steam_plants_sched402_self = [
{
"title": "All Plant Capacity",
"query": "",
diff --git a/test/integration/etl_test.py b/test/integration/etl_test.py
index 43e98a429b..8b75abcda6 100644
--- a/test/integration/etl_test.py
+++ b/test/integration/etl_test.py
@@ -46,14 +46,16 @@ def test_ferc1_xbrl2sqlite(ferc1_engine_xbrl, ferc1_xbrl_taxonomy_metadata):
# Has the metadata we've read in from JSON contain a long list of entities?
assert isinstance(ferc1_xbrl_taxonomy_metadata, dict) # nosec: B101
assert (
- "core_ferc1__yearly_plants_steam" in ferc1_xbrl_taxonomy_metadata
+ "core_ferc1__yearly_steam_plants_sched402" in ferc1_xbrl_taxonomy_metadata
) # nosec: B101
assert len(ferc1_xbrl_taxonomy_metadata) > 10 # nosec: B101
assert len(ferc1_xbrl_taxonomy_metadata) < 100 # nosec: B101
# Can we normalize that list of entities and find data in it that we expect?
df = pd.json_normalize(
- ferc1_xbrl_taxonomy_metadata["core_ferc1__yearly_plant_in_service"]["instant"]
+ ferc1_xbrl_taxonomy_metadata["core_ferc1__yearly_plant_in_service_sched204"][
+ "instant"
+ ]
)
assert (
df.loc[
diff --git a/test/unit/transform/ferc1_test.py b/test/unit/transform/ferc1_test.py
index b4487bed3b..0a54c3988c 100644
--- a/test/unit/transform/ferc1_test.py
+++ b/test/unit/transform/ferc1_test.py
@@ -296,7 +296,7 @@ def test_drop_duplicate_rows_dbf():
)
)
params = DropDuplicateRowsDbf(
- table_name="core_ferc1__yearly_balance_sheet_assets",
+ table_name="core_ferc1__yearly_balance_sheet_assets_sched110",
data_columns=["data_col1", "data_col2"],
)
df_out = drop_duplicate_rows_dbf(df, params=params).reset_index(drop=True)
diff --git a/test/validate/ferc1_test.py b/test/validate/ferc1_test.py
index 77651a85d9..434090e4e9 100644
--- a/test/validate/ferc1_test.py
+++ b/test/validate/ferc1_test.py
@@ -18,24 +18,24 @@
# unique record ID. But we should parameterize the has_unique_record_ids class
# attributes in the FERC classes.
non_unique_record_id_tables = [
- "core_ferc1__yearly_plant_in_service",
- "core_ferc1__yearly_purchased_power_and_exchanges",
- "core_ferc1__yearly_electric_energy_sources",
- "core_ferc1__yearly_electric_energy_dispositions",
- "core_ferc1__yearly_utility_plant_and_depreciation_summary",
- "core_ferc1__yearly_transmission_lines",
- "core_ferc1__yearly_balance_sheet_liabilities",
- "core_ferc1__yearly_balance_sheet_assets",
- "core_ferc1__yearly_income_statement",
- "core_ferc1__yearly_depreciation_amortization_summary",
- "core_ferc1__yearly_electric_plant_depreciation_changes",
- "core_ferc1__yearly_electric_plant_depreciation_functional",
- "core_ferc1__yearly_electric_operating_expenses",
- "core_ferc1__yearly_cash_flows",
- "core_ferc1__yearly_retained_earnings",
- "core_ferc1__yearly_electric_operating_revenues",
- "core_ferc1__yearly_other_regulatory_liabilities",
- "core_ferc1__yearly_electricity_sales_by_rate_schedule",
+ "core_ferc1__yearly_plant_in_service_sched204",
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326",
+ "core_ferc1__yearly_energy_sources_sched401",
+ "core_ferc1__yearly_energy_dispositions_sched401",
+ "core_ferc1__yearly_utility_plant_summary_sched200",
+ "core_ferc1__yearly_transmission_lines_sched422",
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110",
+ "core_ferc1__yearly_balance_sheet_assets_sched110",
+ "core_ferc1__yearly_income_statements_sched114",
+ "core_ferc1__yearly_depreciation_summary_sched336",
+ "core_ferc1__yearly_depreciation_changes_sched219",
+ "core_ferc1__yearly_depreciation_by_function_sched219",
+ "core_ferc1__yearly_operating_expenses_sched320",
+ "core_ferc1__yearly_cash_flows_sched120",
+ "core_ferc1__yearly_retained_earnings_sched118",
+ "core_ferc1__yearly_operating_revenues_sched300",
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278",
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304",
]
unique_record_tables = [
t
diff --git a/test/validate/fuel_ferc1_test.py b/test/validate/fuel_ferc1_test.py
index 0342694750..6739acf0f3 100644
--- a/test/validate/fuel_ferc1_test.py
+++ b/test/validate/fuel_ferc1_test.py
@@ -17,7 +17,7 @@ def test_fuel_ferc1_trivial(pudl_out_ferc1):
"""Test output routines for tables from FERC Form 1."""
logger.info("Compiling FERC Form 1 fuel table...")
fuel_tab = pd.read_sql(
- "ou_ferc1__yearly_steam_plants_fuel", pudl_out_ferc1.pudl_engine
+ "out_ferc1__yearly_steam_plants_fuel_sched402", pudl_out_ferc1.pudl_engine
)
assert len(fuel_tab) > 0, "FERC Form 1 fuel table is empty."
logger.info(f"{len(fuel_tab)} fuel records found")
@@ -52,13 +52,14 @@ def test_fuel_ferc1_trivial(pudl_out_ferc1):
],
)
def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
- """Test distributions of reported core_ferc1__yearly_plants_steam columns."""
+ """Test distributions of reported core_ferc1__yearly_steam_plants_sched402 columns."""
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
for case in cases:
pv.vs_bounds(
pd.read_sql(
- "ou_ferc1__yearly_steam_plants_fuel", pudl_out_ferc1.pudl_engine
+ "out_ferc1__yearly_steam_plants_fuel_sched402",
+ pudl_out_ferc1.pudl_engine,
),
**case,
)
@@ -71,7 +72,8 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
for args in pv.fuel_ferc1_self:
pv.vs_self(
pd.read_sql(
- "ou_ferc1__yearly_steam_plants_fuel", pudl_out_ferc1.pudl_engine
+ "out_ferc1__yearly_steam_plants_fuel_sched402",
+ pudl_out_ferc1.pudl_engine,
),
**args,
)
diff --git a/test/validate/plants_steam_ferc1_test.py b/test/validate/plants_steam_ferc1_test.py
index f10ec65429..a95f6be0d1 100644
--- a/test/validate/plants_steam_ferc1_test.py
+++ b/test/validate/plants_steam_ferc1_test.py
@@ -17,24 +17,29 @@
@pytest.mark.parametrize(
"cases",
[
- pytest.param(pv.core_ferc1__yearly_plants_steam_capacity, id="capacity"),
- pytest.param(pv.core_ferc1__yearly_plants_steam_expenses, id="expenses"),
pytest.param(
- pv.core_ferc1__yearly_plants_steam_capacity_ratios, id="capacity_ratios"
+ pv.core_ferc1__yearly_steam_plants_sched402_capacity, id="capacity"
),
pytest.param(
- pv.core_ferc1__yearly_plants_steam_connected_hours,
+ pv.core_ferc1__yearly_steam_plants_sched402_expenses, id="expenses"
+ ),
+ pytest.param(
+ pv.core_ferc1__yearly_steam_plants_sched402_capacity_ratios,
+ id="capacity_ratios",
+ ),
+ pytest.param(
+ pv.core_ferc1__yearly_steam_plants_sched402_connected_hours,
id="connected_hours",
marks=pytest.mark.xfail(reason="FERC 1 data reporting errors."),
),
],
)
def test_vs_bounds(pudl_out_ferc1, live_dbs, cases):
- """Test distributions of reported core_ferc1__yearly_plants_steam columns."""
+ """Test distributions of reported core_ferc1__yearly_steam_plants_sched402 columns."""
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
validate_df = pd.read_sql(
- "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
+ "_out_ferc1__yearly_steam_plants_sched402", pudl_out_ferc1.pudl_engine
).assign(
water_limited_ratio=lambda x: x.water_limited_capacity_mw / x.capacity_mw,
not_water_limited_ratio=lambda x: x.not_water_limited_capacity_mw
@@ -51,7 +56,7 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
if not live_dbs:
pytest.skip("Data validation only works with a live PUDL DB.")
validate_df = pd.read_sql(
- "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
+ "_out_ferc1__yearly_steam_plants_sched402", pudl_out_ferc1.pudl_engine
).assign(
water_limited_ratio=lambda x: x.water_limited_capacity_mw / x.capacity_mw,
not_water_limited_ratio=lambda x: x.not_water_limited_capacity_mw
@@ -59,7 +64,7 @@ def test_self_vs_historical(pudl_out_ferc1, live_dbs):
peak_demand_ratio=lambda x: x.peak_demand_mw / x.capacity_mw,
capability_ratio=lambda x: x.plant_capability_mw / x.capacity_mw,
)
- for args in pv.core_ferc1__yearly_plants_steam_self:
+ for args in pv.core_ferc1__yearly_steam_plants_sched402_self:
pudl.validate.vs_self(validate_df, **args)
@@ -72,7 +77,7 @@ def test_dupe_years_in_plant_id_ferc1(pudl_out_ferc1):
(which... we do, as of writing).
"""
steam_df = pd.read_sql(
- "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
+ "_out_ferc1__yearly_steam_plants_sched402", pudl_out_ferc1.pudl_engine
)
year_dupes = (
steam_df.groupby(["plant_id_ferc1", "report_year"])["utility_id_ferc1"]
@@ -102,7 +107,7 @@ def test_plant_id_clash(pudl_out_ferc1):
is untrue (as... we know it is right now).
"""
steam_df = pd.read_sql(
- "_out_ferc1__yearly_steam_plants", pudl_out_ferc1.pudl_engine
+ "_out_ferc1__yearly_steam_plants_sched402", pudl_out_ferc1.pudl_engine
)
bad_plant_ids_ferc1 = (
steam_df[["plant_id_pudl", "plant_id_ferc1"]]
From bb088af81406d773fc6a9fa78d56c52a28a16e6e Mon Sep 17 00:00:00 2001
From: Christina Gosnell
Date: Wed, 1 Nov 2023 12:07:08 -0400
Subject: [PATCH 42/70] add db migration
---
...b_wipe_schema_and_ferc1_name_transition.py | 4232 +++++++++++++++++
1 file changed, 4232 insertions(+)
create mode 100644 migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
diff --git a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
new file mode 100644
index 0000000000..09da735338
--- /dev/null
+++ b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
@@ -0,0 +1,4232 @@
+"""wipe schema and FERC1 name transition
+
+Revision ID: 1fef7b82e48b
+Revises:
+Create Date: 2023-11-01 11:29:53.509898
+
+"""
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy.dialects import sqlite
+
+# revision identifiers, used by Alembic.
+revision = '1fef7b82e48b'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('core_eia861__assn_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_balancing_authority'))
+ )
+ op.create_table('core_eia861__assn_utility',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_utility'))
+ )
+ op.create_table('core_eia861__yearly_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_core_eia861__yearly_balancing_authority'))
+ )
+ op.create_table('core_eia__codes_averaging_periods',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_averaging_periods'))
+ )
+ op.create_table('core_eia__codes_balancing_authorities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_balancing_authorities'))
+ )
+ op.create_table('core_eia__codes_boiler_generator_assn_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_generator_assn_types'))
+ )
+ op.create_table('core_eia__codes_boiler_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_status'))
+ )
+ op.create_table('core_eia__codes_boiler_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_types'))
+ )
+ op.create_table('core_eia__codes_coalmine_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_coalmine_types'))
+ )
+ op.create_table('core_eia__codes_contract_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_contract_types'))
+ )
+ op.create_table('core_eia__codes_emission_control_equipment_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_emission_control_equipment_types'))
+ )
+ op.create_table('core_eia__codes_energy_sources',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('fuel_units', sa.Enum('barrels', 'mcf', 'mwh', 'short_tons'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('min_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Minimum heat content per physical unit of fuel in MMBtu.'),
+ sa.Column('max_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Maximum heat content per physical unit of fuel in MMBtu.'),
+ sa.Column('fuel_group_eia', sa.Enum('fossil', 'other', 'renewable'), nullable=True, comment='High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.'),
+ sa.Column('fuel_derived_from', sa.Enum('biomass', 'coal', 'gas', 'other', 'petroleum'), nullable=True, comment='Original fuel from which this refined fuel was derived.'),
+ sa.Column('fuel_phase', sa.Enum('gas', 'liquid', 'solid'), nullable=True, comment='Physical phase of matter of the fuel.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_energy_sources'))
+ )
+ op.create_table('core_eia__codes_environmental_equipment_manufacturers',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_environmental_equipment_manufacturers'))
+ )
+ op.create_table('core_eia__codes_firing_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_firing_types'))
+ )
+ op.create_table('core_eia__codes_fuel_transportation_modes',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia__codes_fuel_types_aer',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_types_aer'))
+ )
+ op.create_table('core_eia__codes_mercury_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_mercury_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_momentary_interruptions',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia__codes_nox_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_nox_control_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_control_status'))
+ )
+ op.create_table('core_eia__codes_nox_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_units'))
+ )
+ op.create_table('core_eia__codes_operational_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_operational_status'))
+ )
+ op.create_table('core_eia__codes_particulate_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_particulate_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_units'))
+ )
+ op.create_table('core_eia__codes_prime_movers',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_prime_movers'))
+ )
+ op.create_table('core_eia__codes_regulations',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_regulations'))
+ )
+ op.create_table('core_eia__codes_reporting_frequencies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_reporting_frequencies'))
+ )
+ op.create_table('core_eia__codes_sector_consolidated',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_sector_consolidated'))
+ )
+ op.create_table('core_eia__codes_so2_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_so2_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_units'))
+ )
+ op.create_table('core_eia__codes_steam_plant_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_steam_plant_types'))
+ )
+ op.create_table('core_eia__codes_wet_dry_bottom',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
+ )
+ op.create_table('core_eia__entity_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_eia__entity_plants'))
+ )
+ op.create_table('core_eia__entity_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
+ )
+ op.create_table('core_eia__yearly_fuel_receipts_costs_aggs',
+ sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
+ sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
+ sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
+ sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_core_eia__yearly_fuel_receipts_costs_aggs'))
+ )
+ op.create_table('core_epa__assn_epacamd_eia_subplant_ids',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
+ )
+ op.create_table('core_ferc1__codes_power_purchase_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
+ )
+ op.create_table('core_ferc714__respondent_id',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
+ )
+ op.create_table('core_ferc__codes_accounts',
+ sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
+ sa.Column('ferc_account_description', sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc__codes_accounts'))
+ )
+ op.create_table('core_pudl__codes_data_maturities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_pudl__codes_datasources',
+ sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'core_epa__assn_epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
+ sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
+ sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
+ sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
+ sa.PrimaryKeyConstraint('datasource', name=op.f('pk_core_pudl__codes_datasources'))
+ )
+ op.create_table('core_pudl__codes_subdivisions',
+ sa.Column('country_code', sa.Enum('USA', 'CAN'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
+ sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
+ sa.Column('subdivision_code', sa.Enum('AS', 'ID', 'UT', 'IL', 'OH', 'AL', 'KY', 'NH', 'NT', 'ND', 'KS', 'MN', 'MI', 'OR', 'CO', 'QC', 'AB', 'MP', 'WI', 'BC', 'AZ', 'SD', 'RI', 'ME', 'MO', 'NC', 'GA', 'YT', 'ON', 'CA', 'DE', 'FL', 'NE', 'NM', 'VA', 'WA', 'NJ', 'DC', 'MS', 'GU', 'WV', 'CT', 'AK', 'WY', 'TN', 'TX', 'PR', 'SC', 'MD', 'IN', 'NB', 'NS', 'LA', 'OK', 'SK', 'VI', 'NV', 'MT', 'IA', 'NY', 'PA', 'MB', 'MA', 'VT', 'AR', 'PE', 'NU', 'HI', 'NL'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
+ sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
+ sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
+ sa.Column('division_code_us_census', sa.Enum('ESC', 'MTN', 'PCN', 'ENC', 'SAT', 'PCC', 'WNC', 'MAT', 'NEW', 'WSC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
+ sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
+ sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
+ )
+ op.create_table('core_pudl__entity_plants_pudl',
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_core_pudl__entity_plants_pudl'))
+ )
+ op.create_table('core_pudl__entity_utilities_pudl',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia861__compiled_geometry_balancing_authorities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
+ )
+ op.create_table('out_eia861__compiled_geometry_utilities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
+ )
+ op.create_table('out_ferc714__hourly_predicted_state_demand',
+ sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
+ sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
+ )
+ op.create_table('_out_eia__monthly_heat_rate_by_unit',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__monthly_heat_rate_by_unit'))
+ )
+ op.create_table('core_eia860__scd_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_core_eia860__scd_emissions_control_equipment'))
+ )
+ op.create_table('core_eia860__scd_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
+ )
+ op.create_table('core_eia861__yearly_advanced_metering_infrastructure',
+ sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
+ sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
+ sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
+ sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('home_area_network', sa.Integer(), nullable=True),
+ sa.Column('non_amr_ami', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_advanced_metering_infrastructure'))
+ )
+ op.create_table('core_eia861__yearly_demand_response',
+ sa.Column('actual_peak_demand_savings_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_cost', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('other_costs', sa.Float(), nullable=True),
+ sa.Column('potential_peak_demand_savings_mw', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response'))
+ )
+ op.create_table('core_eia861__yearly_demand_response_water_heater',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('water_heater', sa.Integer(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response_water_heater'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_ee_dr',
+ sa.Column('annual_indirect_program_cost', sa.Float(), nullable=True),
+ sa.Column('annual_total_cost', sa.Float(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('energy_efficiency_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_cost', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_incentive_payment', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_incremental_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_cost', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_incentive_payment', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_potential_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_potential_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('price_responsiveness_customers', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_misc',
+ sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
+ sa.Column('energy_savings_independently_verified', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('major_program_changes', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('price_responsive_programs', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('reported_as_another_company', sa.Text(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_responsive_programs', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_sales',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_to_ultimate_consumers_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_fuel',
+ sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
+ sa.Column('fuel_pct', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_tech',
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distribution_systems',
+ sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
+ sa.Column('distribution_circuits', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_dynamic_pricing',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_energy_efficiency',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_green_pricing',
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_mergers',
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('merge_address', sa.Text(), nullable=True),
+ sa.Column('merge_city', sa.Text(), nullable=True),
+ sa.Column('merge_company', sa.Text(), nullable=True),
+ sa.Column('merge_date', sa.Date(), nullable=True),
+ sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
+ sa.Column('new_parent', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_misc',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_misc',
+ sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
+ sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
+ sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
+ sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
+ sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('total_sources_mwh', sa.Float(), nullable=True),
+ sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
+ sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
+ sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_revenue',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('revenue', sa.Float(), nullable=True),
+ sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_reliability',
+ sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
+ sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
+ sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
+ sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia861__yearly_sales',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_core_eia861__yearly_sales'))
+ )
+ op.create_table('core_eia861__yearly_service_territory',
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_core_eia861__yearly_service_territory'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_misc',
+ sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
+ sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
+ sa.Column('bundled_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('generation_activity', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_nerc',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_rto',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia923__entity_coalmine',
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel_nuclear',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
+ )
+ op.create_table('core_eia__entity_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
+ )
+ op.create_table('core_eia__entity_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc714__hourly_demand_pa',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_core_ferc714__hourly_demand_pa'))
+ )
+ op.create_table('core_pudl__assn_plants_eia',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_pudl__assn_plants_eia'))
+ )
+ op.create_table('core_pudl__assn_utilities_eia',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_pudl__assn_utilities_eia'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_pudl__assn_utilities_plants',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_core_pudl__assn_utilities_plants'))
+ )
+ op.create_table('out_eia860__yearly_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
+ )
+ op.create_table('out_eia923__fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
+ sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
+ )
+ op.create_table('out_eia923__monthly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
+ )
+ op.create_table('out_ferc714__respondents_with_fips',
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
+ )
+ op.create_table('out_ferc714__summarized_demand',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
+ sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
+ sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
+ )
+ op.create_table('_out_eia__monthly_capacity_factor_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_capacity_factor_by_generator'))
+ )
+ op.create_table('_out_eia__monthly_derived_generator_attributes',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_derived_generator_attributes'))
+ )
+ op.create_table('_out_eia__monthly_fuel_cost_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_fuel_cost_by_generator'))
+ )
+ op.create_table('_out_eia__monthly_heat_rate_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_heat_rate_by_generator'))
+ )
+ op.create_table('core_eia860__scd_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_plants'))
+ )
+ op.create_table('core_eia923__monthly_boiler_fuel',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_core_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('core_eia923__monthly_fuel_receipts_costs',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_id_pudl'], ['core_eia923__entity_coalmine.mine_id_pudl'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia923__monthly_generation',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
+ )
+ op.create_table('core_epa__assn_epacamd_eia',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_assets_sched110',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets_sched110'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_liabilities_sched110',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities_sched110'))
+ )
+ op.create_table('core_ferc1__yearly_cash_flows_sched120',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flows_sched120'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_by_function_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_depreciation_by_function_sched219'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_changes_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_depreciation_changes_sched219'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_summary_sched336',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_summary_sched336'))
+ )
+ op.create_table('core_ferc1__yearly_energy_dispositions_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_energy_dispositions_sched401'))
+ )
+ op.create_table('core_ferc1__yearly_energy_sources_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_energy_sources_sched401'))
+ )
+ op.create_table('core_ferc1__yearly_income_statements_sched114',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statements_sched114'))
+ )
+ op.create_table('core_ferc1__yearly_operating_expenses_sched320',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_operating_expenses_sched320'))
+ )
+ op.create_table('core_ferc1__yearly_operating_revenues_sched300',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_operating_revenues_sched300'))
+ )
+ op.create_table('core_ferc1__yearly_other_regulatory_liabilities_sched278',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_plant_in_service_sched204',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service_sched204'))
+ )
+ op.create_table('core_ferc1__yearly_purchased_power_and_exchanges_sched326',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
+ sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
+ sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_retained_earnings_sched118',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings_sched118'))
+ )
+ op.create_table('core_ferc1__yearly_sales_by_rate_schedules_sched304',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_transmission_lines_sched422',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_utility_plant_summary_sched200',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary_sched200'))
+ )
+ op.create_table('core_pudl__assn_plants_ferc1',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1_dbf',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_core_pudl__assn_utilities_ferc1_dbf'))
+ )
+ op.create_table('core_pudl__assn_utilities_ferc1_xbrl',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_core_pudl__assn_utilities_ferc1_xbrl'))
+ )
+ op.create_table('out_eia923__boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
+ )
+ op.create_table('out_eia923__generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
+ )
+ op.create_table('out_eia923__monthly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__monthly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia__monthly_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__monthly_generators'))
+ )
+ op.create_table('out_eia__yearly_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_assets_sched110',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets_sched110'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_liabilities_sched110',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities_sched110'))
+ )
+ op.create_table('out_ferc1__yearly_cash_flows_sched120',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flows_sched120_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flows_sched120'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_by_function_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_depreciation_by_function_sched219'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_changes_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_depreciation_changes_sched219'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_summary_sched336',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_summary_sched336'))
+ )
+ op.create_table('out_ferc1__yearly_energy_dispositions_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_energy_dispositions_sched401'))
+ )
+ op.create_table('out_ferc1__yearly_energy_sources_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_energy_sources_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_energy_sources_sched401'))
+ )
+ op.create_table('out_ferc1__yearly_income_statements_sched114',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statements_sched114_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statements_sched114'))
+ )
+ op.create_table('out_ferc1__yearly_operating_expenses_sched320',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_operating_expenses_sched320'))
+ )
+ op.create_table('out_ferc1__yearly_operating_revenues_sched300',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_operating_revenues_sched300'))
+ )
+ op.create_table('out_ferc1__yearly_other_regulatory_liabilities_sched278',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_plant_in_service_sched204',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service_sched204'))
+ )
+ op.create_table('out_ferc1__yearly_purchased_power_and_exchanges_sched326',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
+ sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
+ sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_retained_earnings_sched118',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings_sched118'))
+ )
+ op.create_table('out_ferc1__yearly_sales_by_rate_schedules_sched304',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_transmission_lines_sched422',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_utility_plant_summary_sched200',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary_sched200'))
+ )
+ op.create_table('_out_eia__plants_utilities',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
+ )
+ op.create_table('_out_eia__yearly_heat_rate_by_unit',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__yearly_heat_rate_by_unit'))
+ )
+ op.create_table('_out_ferc1__yearly_hydroelectric_plants_sched406',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydroelectric_plants_sched406'))
+ )
+ op.create_table('_out_ferc1__yearly_plants_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
+ )
+ op.create_table('_out_ferc1__yearly_pumped_storage_plants_sched408',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants_sched408'))
+ )
+ op.create_table('_out_ferc1__yearly_small_plants_sched410',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants_sched410'))
+ )
+ op.create_table('_out_ferc1__yearly_steam_plants_sched402',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants_sched402'))
+ )
+ op.create_table('core_eia860__scd_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_core_eia860__scd_boilers'))
+ )
+ op.create_table('core_eia860__scd_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia860__scd_generators'))
+ )
+ op.create_table('core_ferc1__yearly_hydroelectric_plants_sched406',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('plant_type', sa.Enum('hydro', 'run_of_river', 'storage', 'na_category', 'run_of_river_with_storage'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_pumped_storage_plants_sched408',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_small_plants_sched410',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_steam_plants_fuel_sched402',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('core_ferc1__yearly_steam_plants_sched402',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Enum('geothermal', 'na_category', 'wind', 'photovoltaic', 'combined_cycle', 'combustion_turbine', 'internal_combustion', 'nuclear', 'steam', 'solar_thermal'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
+ )
+ op.create_table('out_eia923__yearly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
+ )
+ op.create_table('out_eia__yearly_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
+ )
+ op.create_table('out_ferc1__yearly_all_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
+ )
+ op.create_table('out_ferc1__yearly_steam_plants_fuel_by_plant_sched402',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
+ sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
+ sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
+ sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
+ sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
+ sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
+ sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
+ sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
+ sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
+ sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
+ sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402'))
+ )
+ op.create_table('out_ferc1__yearly_steam_plants_fuel_sched402',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_steam_plants_fuel_sched402'))
+ )
+ op.create_table('_out_eia__yearly_capacity_factor_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_capacity_factor_by_generator'))
+ )
+ op.create_table('_out_eia__yearly_derived_generator_attributes',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_derived_generator_attributes'))
+ )
+ op.create_table('_out_eia__yearly_fuel_cost_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_fuel_cost_by_generator'))
+ )
+ op.create_table('_out_eia__yearly_generators',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk__out_eia__yearly_generators'))
+ )
+ op.create_table('_out_eia__yearly_heat_rate_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_heat_rate_by_generator'))
+ )
+ op.create_table('core_eia860__assn_boiler_cooling',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_core_eia860__assn_boiler_cooling'))
+ )
+ op.create_table('core_eia860__assn_boiler_generator',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_eia', sa.Text(), nullable=True, comment='EIA-assigned unit identification code.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('boiler_generator_assn_type_code', sa.Text(), nullable=True, comment='Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.'),
+ sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_core_eia860__assn_boiler_generator'))
+ )
+ op.create_table('core_eia860__assn_boiler_stack_flue',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('stack_id_eia', sa.Text(), nullable=True, comment='The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.'),
+ sa.Column('flue_id_eia', sa.Text(), nullable=True, comment='The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.'),
+ sa.Column('stack_flue_id_eia', sa.Text(), nullable=True, comment='The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.'),
+ sa.Column('stack_flue_id_pudl', sa.Text(), nullable=False, comment='A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_core_eia860__assn_boiler_stack_flue'))
+ )
+ op.create_table('core_eia860__scd_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
+ sa.Column('owner_state', sa.Enum('AS', 'ID', 'UT', 'IL', 'OH', 'AL', 'KY', 'NH', 'NT', 'ND', 'KS', 'MN', 'MI', 'OR', 'CO', 'QC', 'AB', 'MP', 'WI', 'BC', 'AZ', 'SD', 'RI', 'ME', 'MO', 'NC', 'GA', 'YT', 'ON', 'CA', 'DE', 'FL', 'NE', 'NM', 'VA', 'WA', 'NJ', 'DC', 'MS', 'GU', 'WV', 'CT', 'AK', 'WY', 'TN', 'TX', 'PR', 'SC', 'MD', 'IN', 'NB', 'NS', 'LA', 'OK', 'SK', 'VI', 'NV', 'MT', 'IA', 'NY', 'PA', 'MB', 'MA', 'VT', 'AR', 'PE', 'NU', 'HI', 'NL'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
+ )
+ op.create_table('core_eia860__yearly_boiler_emissions_control_equipment_assn',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
+ sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__yearly_boiler_emissions_control_equipment_assn'))
+ )
+ op.create_table('mega_generators_eia',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out__yearly_plants_all_ferc1_plant_parts_eia',
+ sa.Column('record_id_ferc1', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('record_id_eia', sa.Text(), nullable=True, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('match_type', sa.Text(), nullable=True, comment='Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('total_fuel_cost_eia', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_per_mmbtu_eia', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('net_generation_mwh_eia', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw_eia', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor_eia', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('total_mmbtu_eia', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('heat_rate_mmbtu_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl_eia', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('installation_year_eia', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor_ferc1', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw_ferc1', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year_eia', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('construction_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh_ferc1', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('fuel_cost_per_mwh_eia', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh_ferc1', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('fuel_cost_per_mmbtu_ferc1', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('total_fuel_cost_ferc1', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu_ferc1', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('fuel_type_code_pudl_ferc1', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_ferc1', name=op.f('pk_out__yearly_plants_all_ferc1_plant_parts_eia'))
+ )
+ op.create_table('out_eia860__yearly_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('owner_state', sa.Enum('AS', 'ID', 'UT', 'IL', 'OH', 'AL', 'KY', 'NH', 'NT', 'ND', 'KS', 'MN', 'MI', 'OR', 'CO', 'QC', 'AB', 'MP', 'WI', 'BC', 'AZ', 'SD', 'RI', 'ME', 'MO', 'NC', 'GA', 'YT', 'ON', 'CA', 'DE', 'FL', 'NE', 'NM', 'VA', 'WA', 'NJ', 'DC', 'MS', 'GU', 'WV', 'CT', 'AK', 'WY', 'TN', 'TX', 'PR', 'SC', 'MD', 'IN', 'NB', 'NS', 'LA', 'OK', 'SK', 'VI', 'NV', 'MT', 'IA', 'NY', 'PA', 'MB', 'MA', 'VT', 'AR', 'PE', 'NU', 'HI', 'NL'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
+ )
+ op.create_table('out_eia923__yearly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__yearly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
+ )
+ op.create_table('out_eia__yearly_boilers',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
+ )
+ op.create_table('out_eia__yearly_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__yearly_generators'))
+ )
+ op.create_table('out_eia__yearly_generators_by_ownership',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia__yearly_plant_parts',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__yearly_plant_parts'))
+ )
+ op.create_table('plant_parts_eia',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Enum('SG', 'WAT', 'GEO', 'NG', 'PUR', 'WC', 'JF', 'MSB', 'AB', 'SUB', 'WH', 'LFG', 'ANT', 'SGC', 'PC', 'SLW', 'RC', 'OBL', 'KER', 'DFO', 'PG', 'RFO', 'SC', 'TDF', 'MSN', 'LIG', 'OBG', 'MWH', 'OTH', 'MSW', 'WND', 'SGP', 'NUC', 'BFG', 'WDL', 'BLQ', 'SUN', 'BIT', 'OBS', 'WDS', 'OG', 'WO'), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Enum('Petroleum Liquids', 'Nuclear', 'Municipal Solid Waste', 'Landfill Gas', 'Other Gases', 'All Other', 'Geothermal', 'Natural Gas Internal Combustion Engine', 'Conventional Steam Coal', 'Coal Integrated Gasification Combined Cycle', 'Solar Thermal without Energy Storage', 'Onshore Wind Turbine', 'Natural Gas with Compressed Air Storage', 'Solar Thermal with Energy Storage', 'Natural Gas Fired Combined Cycle', 'Other Waste Biomass', 'Conventional Hydroelectric', 'Hydroelectric Pumped Storage', 'Offshore Wind Turbine', 'Batteries', 'Wood/Wood Waste Biomass', 'Natural Gas Fired Combustion Turbine', 'Petroleum Coke', 'Flywheels', 'Hydrokinetic', 'Solar Photovoltaic', 'Natural Gas Steam Turbine', 'Other Natural Gas'), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_plant_parts_eia'))
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('plant_parts_eia')
+ op.drop_table('out_eia__yearly_plant_parts')
+ op.drop_table('out_eia__yearly_generators_by_ownership')
+ op.drop_table('out_eia__yearly_generators')
+ op.drop_table('out_eia__yearly_boilers')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__yearly_generation')
+ op.drop_table('out_eia923__yearly_boiler_fuel')
+ op.drop_table('out_eia860__yearly_ownership')
+ op.drop_table('out__yearly_plants_all_ferc1_plant_parts_eia')
+ op.drop_table('mega_generators_eia')
+ op.drop_table('core_eia860__yearly_boiler_emissions_control_equipment_assn')
+ op.drop_table('core_eia860__scd_ownership')
+ op.drop_table('core_eia860__assn_boiler_stack_flue')
+ op.drop_table('core_eia860__assn_boiler_generator')
+ op.drop_table('core_eia860__assn_boiler_cooling')
+ op.drop_table('_out_eia__yearly_heat_rate_by_generator')
+ op.drop_table('_out_eia__yearly_generators')
+ op.drop_table('_out_eia__yearly_fuel_cost_by_generator')
+ op.drop_table('_out_eia__yearly_derived_generator_attributes')
+ op.drop_table('_out_eia__yearly_capacity_factor_by_generator')
+ op.drop_table('out_ferc1__yearly_steam_plants_fuel_sched402')
+ op.drop_table('out_ferc1__yearly_steam_plants_fuel_by_plant_sched402')
+ op.drop_table('out_ferc1__yearly_all_plants')
+ op.drop_table('out_eia__yearly_plants')
+ op.drop_table('out_eia923__yearly_generation_fuel_combined')
+ op.drop_table('out_eia923__yearly_fuel_receipts_costs')
+ op.drop_table('core_ferc1__yearly_steam_plants_sched402')
+ op.drop_table('core_ferc1__yearly_steam_plants_fuel_sched402')
+ op.drop_table('core_ferc1__yearly_small_plants_sched410')
+ op.drop_table('core_ferc1__yearly_pumped_storage_plants_sched408')
+ op.drop_table('core_ferc1__yearly_hydroelectric_plants_sched406')
+ op.drop_table('core_eia860__scd_generators')
+ op.drop_table('core_eia860__scd_boilers')
+ op.drop_table('_out_ferc1__yearly_steam_plants_sched402')
+ op.drop_table('_out_ferc1__yearly_small_plants_sched410')
+ op.drop_table('_out_ferc1__yearly_pumped_storage_plants_sched408')
+ op.drop_table('_out_ferc1__yearly_plants_utilities')
+ op.drop_table('_out_ferc1__yearly_hydroelectric_plants_sched406')
+ op.drop_table('_out_eia__yearly_heat_rate_by_unit')
+ op.drop_table('_out_eia__plants_utilities')
+ op.drop_table('out_ferc1__yearly_utility_plant_summary_sched200')
+ op.drop_table('out_ferc1__yearly_transmission_lines_sched422')
+ op.drop_table('out_ferc1__yearly_sales_by_rate_schedules_sched304')
+ op.drop_table('out_ferc1__yearly_retained_earnings_sched118')
+ op.drop_table('out_ferc1__yearly_purchased_power_and_exchanges_sched326')
+ op.drop_table('out_ferc1__yearly_plant_in_service_sched204')
+ op.drop_table('out_ferc1__yearly_other_regulatory_liabilities_sched278')
+ op.drop_table('out_ferc1__yearly_operating_revenues_sched300')
+ op.drop_table('out_ferc1__yearly_operating_expenses_sched320')
+ op.drop_table('out_ferc1__yearly_income_statements_sched114')
+ op.drop_table('out_ferc1__yearly_energy_sources_sched401')
+ op.drop_table('out_ferc1__yearly_energy_dispositions_sched401')
+ op.drop_table('out_ferc1__yearly_depreciation_summary_sched336')
+ op.drop_table('out_ferc1__yearly_depreciation_changes_sched219')
+ op.drop_table('out_ferc1__yearly_depreciation_by_function_sched219')
+ op.drop_table('out_ferc1__yearly_cash_flows_sched120')
+ op.drop_table('out_ferc1__yearly_balance_sheet_liabilities_sched110')
+ op.drop_table('out_ferc1__yearly_balance_sheet_assets_sched110')
+ op.drop_table('out_eia__yearly_utilities')
+ op.drop_table('out_eia__monthly_generators')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__monthly_generation')
+ op.drop_table('out_eia923__monthly_boiler_fuel')
+ op.drop_table('out_eia923__generation')
+ op.drop_table('out_eia923__boiler_fuel')
+ op.drop_table('core_pudl__assn_utilities_ferc1_xbrl')
+ op.drop_table('core_pudl__assn_utilities_ferc1_dbf')
+ op.drop_table('core_pudl__assn_plants_ferc1')
+ op.drop_table('core_ferc1__yearly_utility_plant_summary_sched200')
+ op.drop_table('core_ferc1__yearly_transmission_lines_sched422')
+ op.drop_table('core_ferc1__yearly_sales_by_rate_schedules_sched304')
+ op.drop_table('core_ferc1__yearly_retained_earnings_sched118')
+ op.drop_table('core_ferc1__yearly_purchased_power_and_exchanges_sched326')
+ op.drop_table('core_ferc1__yearly_plant_in_service_sched204')
+ op.drop_table('core_ferc1__yearly_other_regulatory_liabilities_sched278')
+ op.drop_table('core_ferc1__yearly_operating_revenues_sched300')
+ op.drop_table('core_ferc1__yearly_operating_expenses_sched320')
+ op.drop_table('core_ferc1__yearly_income_statements_sched114')
+ op.drop_table('core_ferc1__yearly_energy_sources_sched401')
+ op.drop_table('core_ferc1__yearly_energy_dispositions_sched401')
+ op.drop_table('core_ferc1__yearly_depreciation_summary_sched336')
+ op.drop_table('core_ferc1__yearly_depreciation_changes_sched219')
+ op.drop_table('core_ferc1__yearly_depreciation_by_function_sched219')
+ op.drop_table('core_ferc1__yearly_cash_flows_sched120')
+ op.drop_table('core_ferc1__yearly_balance_sheet_liabilities_sched110')
+ op.drop_table('core_ferc1__yearly_balance_sheet_assets_sched110')
+ op.drop_table('core_epa__assn_epacamd_eia')
+ op.drop_table('core_eia923__monthly_generation')
+ op.drop_table('core_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('core_eia923__monthly_boiler_fuel')
+ op.drop_table('core_eia860__scd_plants')
+ op.drop_table('_out_eia__monthly_heat_rate_by_generator')
+ op.drop_table('_out_eia__monthly_fuel_cost_by_generator')
+ op.drop_table('_out_eia__monthly_derived_generator_attributes')
+ op.drop_table('_out_eia__monthly_capacity_factor_by_generator')
+ op.drop_table('out_ferc714__summarized_demand')
+ op.drop_table('out_ferc714__respondents_with_fips')
+ op.drop_table('out_eia923__monthly_generation_fuel_combined')
+ op.drop_table('out_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('out_eia923__generation_fuel_combined')
+ op.drop_table('out_eia923__fuel_receipts_costs')
+ op.drop_table('out_eia860__yearly_emissions_control_equipment')
+ op.drop_table('core_pudl__assn_utilities_plants')
+ op.drop_table('core_pudl__assn_utilities_ferc1')
+ op.drop_table('core_pudl__assn_utilities_eia')
+ op.drop_table('core_pudl__assn_plants_eia')
+ op.drop_table('core_ferc714__hourly_demand_pa')
+ op.drop_table('core_eia__entity_generators')
+ op.drop_table('core_eia__entity_boilers')
+ op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
+ op.drop_table('core_eia923__monthly_generation_fuel')
+ op.drop_table('core_eia923__entity_coalmine')
+ op.drop_table('core_eia861__yearly_utility_data_rto')
+ op.drop_table('core_eia861__yearly_utility_data_nerc')
+ op.drop_table('core_eia861__yearly_utility_data_misc')
+ op.drop_table('core_eia861__yearly_service_territory')
+ op.drop_table('core_eia861__yearly_sales')
+ op.drop_table('core_eia861__yearly_reliability')
+ op.drop_table('core_eia861__yearly_operational_data_revenue')
+ op.drop_table('core_eia861__yearly_operational_data_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_net_metering_misc')
+ op.drop_table('core_eia861__yearly_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_mergers')
+ op.drop_table('core_eia861__yearly_green_pricing')
+ op.drop_table('core_eia861__yearly_energy_efficiency')
+ op.drop_table('core_eia861__yearly_dynamic_pricing')
+ op.drop_table('core_eia861__yearly_distribution_systems')
+ op.drop_table('core_eia861__yearly_distributed_generation_tech')
+ op.drop_table('core_eia861__yearly_distributed_generation_misc')
+ op.drop_table('core_eia861__yearly_distributed_generation_fuel')
+ op.drop_table('core_eia861__yearly_demand_side_management_sales')
+ op.drop_table('core_eia861__yearly_demand_side_management_misc')
+ op.drop_table('core_eia861__yearly_demand_side_management_ee_dr')
+ op.drop_table('core_eia861__yearly_demand_response_water_heater')
+ op.drop_table('core_eia861__yearly_demand_response')
+ op.drop_table('core_eia861__yearly_advanced_metering_infrastructure')
+ op.drop_table('core_eia860__scd_utilities')
+ op.drop_table('core_eia860__scd_emissions_control_equipment')
+ op.drop_table('_out_eia__monthly_heat_rate_by_unit')
+ op.drop_table('out_ferc714__hourly_predicted_state_demand')
+ op.drop_table('out_eia861__compiled_geometry_utilities')
+ op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
+ op.drop_table('core_pudl__entity_utilities_pudl')
+ op.drop_table('core_pudl__entity_plants_pudl')
+ op.drop_table('core_pudl__codes_subdivisions')
+ op.drop_table('core_pudl__codes_datasources')
+ op.drop_table('core_pudl__codes_data_maturities')
+ op.drop_table('core_ferc__codes_accounts')
+ op.drop_table('core_ferc714__respondent_id')
+ op.drop_table('core_ferc1__codes_power_purchase_types')
+ op.drop_table('core_epa__assn_epacamd_eia_subplant_ids')
+ op.drop_table('core_eia__yearly_fuel_receipts_costs_aggs')
+ op.drop_table('core_eia__entity_utilities')
+ op.drop_table('core_eia__entity_plants')
+ op.drop_table('core_eia__codes_wet_dry_bottom')
+ op.drop_table('core_eia__codes_steam_plant_types')
+ op.drop_table('core_eia__codes_so2_units')
+ op.drop_table('core_eia__codes_so2_compliance_strategies')
+ op.drop_table('core_eia__codes_sector_consolidated')
+ op.drop_table('core_eia__codes_reporting_frequencies')
+ op.drop_table('core_eia__codes_regulations')
+ op.drop_table('core_eia__codes_prime_movers')
+ op.drop_table('core_eia__codes_particulate_units')
+ op.drop_table('core_eia__codes_particulate_compliance_strategies')
+ op.drop_table('core_eia__codes_operational_status')
+ op.drop_table('core_eia__codes_nox_units')
+ op.drop_table('core_eia__codes_nox_control_status')
+ op.drop_table('core_eia__codes_nox_compliance_strategies')
+ op.drop_table('core_eia__codes_momentary_interruptions')
+ op.drop_table('core_eia__codes_mercury_compliance_strategies')
+ op.drop_table('core_eia__codes_fuel_types_aer')
+ op.drop_table('core_eia__codes_fuel_transportation_modes')
+ op.drop_table('core_eia__codes_firing_types')
+ op.drop_table('core_eia__codes_environmental_equipment_manufacturers')
+ op.drop_table('core_eia__codes_energy_sources')
+ op.drop_table('core_eia__codes_emission_control_equipment_types')
+ op.drop_table('core_eia__codes_contract_types')
+ op.drop_table('core_eia__codes_coalmine_types')
+ op.drop_table('core_eia__codes_boiler_types')
+ op.drop_table('core_eia__codes_boiler_status')
+ op.drop_table('core_eia__codes_boiler_generator_assn_types')
+ op.drop_table('core_eia__codes_balancing_authorities')
+ op.drop_table('core_eia__codes_averaging_periods')
+ op.drop_table('core_eia861__yearly_balancing_authority')
+ op.drop_table('core_eia861__assn_utility')
+ op.drop_table('core_eia861__assn_balancing_authority')
+ # ### end Alembic commands ###
From 8d3b05854eece433a0443823c53009a475be7ed6 Mon Sep 17 00:00:00 2001
From: Christina Gosnell
Date: Wed, 1 Nov 2023 12:29:18 -0400
Subject: [PATCH 43/70] rename the ferc1 transformer classes in line with new
table names
---
src/pudl/output/ferc1.py | 2 +-
src/pudl/transform/classes.py | 4 +-
src/pudl/transform/ferc1.py | 204 ++++++++++++++----------------
test/unit/transform/ferc1_test.py | 4 +-
4 files changed, 99 insertions(+), 115 deletions(-)
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 9ec691c34f..909891d371 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -868,7 +868,7 @@ def drop_other_fuel_types(df):
] = core_ferc1__yearly_steam_plants_fuel_sched402["fuel_type_code_pudl"].astype(str)
fuel_categories = list(
- pudl.transform.ferc1.FuelFerc1TableTransformer()
+ pudl.transform.ferc1.SteamPlantsFuelTableTransformer()
.params.categorize_strings["fuel_type_code_pudl"]
.categories.keys()
)
diff --git a/src/pudl/transform/classes.py b/src/pudl/transform/classes.py
index fd5911d66d..148a7d55ea 100644
--- a/src/pudl/transform/classes.py
+++ b/src/pudl/transform/classes.py
@@ -1082,7 +1082,7 @@ class AbstractTableTransformer(ABC):
single dataframe. Since Python is lazy about enforcing types and interfaces you can
get away with other kinds of arguments when they're sometimes necessary, but this
isn't a good arrangement and we should figure out how to do it right. See the
- :class:`pudl.transform.ferc1.PlantsSteamFerc1TableTransformer` class for an example.
+ :class:`pudl.transform.ferc1.SteamPlantsTableTransformer` class for an example.
"""
table_id: enum.Enum
@@ -1171,7 +1171,7 @@ def transform_main(self, df: pd.DataFrame, **kwargs) -> pd.DataFrame:
return a single dataframe, and that pattern is implemented in the
:meth:`AbstractTableTransformer.transform` method. In cases where transforms
take or return more than one dataframe, you will need to define a new transform
- method within the child class. See :class:`PlantsSteamFerc1TableTransformer`
+ method within the child class. See :class:`SteamPlantsTableTransformer`
as an example.
"""
...
diff --git a/src/pudl/transform/ferc1.py b/src/pudl/transform/ferc1.py
index 33abcc66b4..ea73a590db 100644
--- a/src/pudl/transform/ferc1.py
+++ b/src/pudl/transform/ferc1.py
@@ -132,39 +132,31 @@ class TableIdFerc1(enum.Enum):
Package. But this works for now.
"""
- FUEL_FERC1 = "core_ferc1__yearly_steam_plants_fuel_sched402"
- PLANTS_STEAM_FERC1 = "core_ferc1__yearly_steam_plants_sched402"
- PLANTS_HYDRO_FERC1 = "core_ferc1__yearly_hydroelectric_plants_sched406"
- PLANTS_SMALL_FERC1 = "core_ferc1__yearly_small_plants_sched410"
- PLANTS_PUMPED_STORAGE_FERC1 = "core_ferc1__yearly_pumped_storage_plants_sched408"
- PLANT_IN_SERVICE_FERC1 = "core_ferc1__yearly_plant_in_service_sched204"
- PURCHASED_POWER_FERC1 = "core_ferc1__yearly_purchased_power_and_exchanges_sched326"
- TRANSMISSION_STATISTICS_FERC1 = "core_ferc1__yearly_transmission_lines_sched422"
- ELECTRIC_ENERGY_SOURCES_FERC1 = "core_ferc1__yearly_energy_sources_sched401"
- ELECTRIC_ENERGY_DISPOSITIONS_FERC1 = (
- "core_ferc1__yearly_energy_dispositions_sched401"
+ STEAM_PLANTS_FUEL = "core_ferc1__yearly_steam_plants_fuel_sched402"
+ STEAM_PLANTS = "core_ferc1__yearly_steam_plants_sched402"
+ HYDROELECTRIC_PLANTS = "core_ferc1__yearly_hydroelectric_plants_sched406"
+ SMALL_PLANTS = "core_ferc1__yearly_small_plants_sched410"
+ PUMPED_STORAGE_PLANTS = "core_ferc1__yearly_pumped_storage_plants_sched408"
+ PLANT_IN_SERVICE = "core_ferc1__yearly_plant_in_service_sched204"
+ PURCHASED_POWER_AND_EXCHANGES = (
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326"
)
- UTILITY_PLANT_SUMMARY_FERC1 = "core_ferc1__yearly_utility_plant_summary_sched200"
- ELECTRIC_OPERATING_EXPENSES_FERC1 = "core_ferc1__yearly_operating_expenses_sched320"
+ TRANSMISSION_LINES = "core_ferc1__yearly_transmission_lines_sched422"
+ ENERGY_SOURCES = "core_ferc1__yearly_energy_sources_sched401"
+ ENERGY_DISPOSITIONS = "core_ferc1__yearly_energy_dispositions_sched401"
+ UTILITY_PLANT_SUMMARY = "core_ferc1__yearly_utility_plant_summary_sched200"
+ OPERATING_EXPENSES = "core_ferc1__yearly_operating_expenses_sched320"
BALANCE_SHEET_LIABILITIES = "core_ferc1__yearly_balance_sheet_liabilities_sched110"
- DEPRECIATION_AMORTIZATION_SUMMARY_FERC1 = (
- "core_ferc1__yearly_depreciation_summary_sched336"
- )
- BALANCE_SHEET_ASSETS_FERC1 = "core_ferc1__yearly_balance_sheet_assets_sched110"
- RETAINED_EARNINGS_FERC1 = "core_ferc1__yearly_retained_earnings_sched118"
- INCOME_STATEMENT_FERC1 = "core_ferc1__yearly_income_statements_sched114"
- ELECTRIC_PLANT_DEPRECIATION_CHANGES_FERC1 = (
- "core_ferc1__yearly_depreciation_changes_sched219"
- )
- ELECTRIC_OPERATING_REVENUES_FERC1 = "core_ferc1__yearly_operating_revenues_sched300"
- ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1 = (
- "core_ferc1__yearly_depreciation_by_function_sched219"
- )
- CASH_FLOW_FERC1 = "core_ferc1__yearly_cash_flows_sched120"
- ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1 = (
- "core_ferc1__yearly_sales_by_rate_schedules_sched304"
- )
- OTHER_REGULATORY_LIABILITIES_FERC1 = (
+ DEPRECIATION_SUMMARY = "core_ferc1__yearly_depreciation_summary_sched336"
+ BALANCE_SHEET_ASSETS = "core_ferc1__yearly_balance_sheet_assets_sched110"
+ RETAINED_EARNINGS = "core_ferc1__yearly_retained_earnings_sched118"
+ INCOME_STATEMENTS = "core_ferc1__yearly_income_statements_sched114"
+ DEPRECIATION_CHANGES = "core_ferc1__yearly_depreciation_changes_sched219"
+ OPERATING_REVENUES = "core_ferc1__yearly_operating_revenues_sched300"
+ DEPRECIATION_BY_FUNCTION = "core_ferc1__yearly_depreciation_by_function_sched219"
+ CASH_FLOWS = "core_ferc1__yearly_cash_flows_sched120"
+ SALES_BY_RATE_SCHEDULES = "core_ferc1__yearly_sales_by_rate_schedules_sched304"
+ OTHER_REGULATORY_LIABILITIES = (
"core_ferc1__yearly_other_regulatory_liabilities_sched278"
)
@@ -2857,7 +2849,7 @@ def reconcile_table_calculations(
return df
-class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class SteamPlantsFuelTableTransformer(Ferc1AbstractTableTransformer):
"""A table transformer specific to the :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table.
The :ref:`core_ferc1__yearly_steam_plants_fuel_sched402` table reports data about fuel consumed by large thermal power
@@ -2913,7 +2905,7 @@ class FuelFerc1TableTransformer(Ferc1AbstractTableTransformer):
* gas: reported in a mix of MMBTU/cubic foot, and MMBTU/thousand cubic feet.
"""
- table_id: TableIdFerc1 = TableIdFerc1.FUEL_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.STEAM_PLANTS_FUEL
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
@@ -3198,15 +3190,15 @@ def drop_invalid_rows(
This method both drops rows in which all required data columns are null (using
the inherited parameterized method) and then also drops those rows we believe
- represent plant totals. See :meth:`FuelFerc1TableTransformer.drop_total_rows`.
+ represent plant totals. See :meth:`SteamPlantsFuelTableTransformer.drop_total_rows`.
"""
return super().drop_invalid_rows(df, params).pipe(self.drop_total_rows)
-class PlantsSteamFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class SteamPlantsTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for the :ref:`core_ferc1__yearly_steam_plants_sched402` table."""
- table_id: TableIdFerc1 = TableIdFerc1.PLANTS_STEAM_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.STEAM_PLANTS
@cache_df(key="main")
def transform_main(
@@ -3225,7 +3217,7 @@ def transform_main(
:func:`plants_steam_assign_plant_ids`
"""
fuel_categories = list(
- FuelFerc1TableTransformer()
+ SteamPlantsFuelTableTransformer()
.params.categorize_strings["fuel_type_code_pudl"]
.categories.keys()
)
@@ -3273,10 +3265,10 @@ def transform(
return df
-class PlantsHydroFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class HydroelectricPlantsTableTransformer(Ferc1AbstractTableTransformer):
"""A table transformer specific to the :ref:`core_ferc1__yearly_hydroelectric_plants_sched406` table."""
- table_id: TableIdFerc1 = TableIdFerc1.PLANTS_HYDRO_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.HYDROELECTRIC_PLANTS
def transform_main(self, df):
"""Add bespoke removal of duplicate record after standard transform_main."""
@@ -3320,13 +3312,13 @@ def targeted_drop_duplicates(self, df):
return df
-class PlantsPumpedStorageFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class PumpedStoragePlantsTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_pumped_storage_plants_sched408` table."""
- table_id: TableIdFerc1 = TableIdFerc1.PLANTS_PUMPED_STORAGE_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.PUMPED_STORAGE_PLANTS
-class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class PurchasedPowerAndExchangesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_purchased_power_and_exchanges_sched326`.
This table has data about inter-utility power purchases into the PUDL DB. This
@@ -3337,13 +3329,13 @@ class PurchasedPowerFerc1TableTransformer(Ferc1AbstractTableTransformer):
eventually.
"""
- table_id: TableIdFerc1 = TableIdFerc1.PURCHASED_POWER_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.PURCHASED_POWER_AND_EXCHANGES
-class PlantInServiceFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class PlantInServiceTableTransformer(Ferc1AbstractTableTransformer):
"""A transformer for the :ref:`core_ferc1__yearly_plant_in_service_sched204` table."""
- table_id: TableIdFerc1 = TableIdFerc1.PLANT_IN_SERVICE_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.PLANT_IN_SERVICE
has_unique_record_ids: bool = False
@cache_df("process_xbrl_metadata")
@@ -3519,10 +3511,10 @@ def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
return df.assign(utility_type="electric")
-class PlantsSmallFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class SmallPlantsTableTransformer(Ferc1AbstractTableTransformer):
"""A table transformer specific to the :ref:`core_ferc1__yearly_small_plants_sched410` table."""
- table_id: TableIdFerc1 = TableIdFerc1.PLANTS_SMALL_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.SMALL_PLANTS
@cache_df(key="main")
def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
@@ -4438,10 +4430,10 @@ def spot_fix_rows(self, df: pd.DataFrame) -> pd.DataFrame:
return df
-class TransmissionStatisticsFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class TransmissionLinesTableTransformer(Ferc1AbstractTableTransformer):
"""A table transformer for the :ref:`core_ferc1__yearly_transmission_lines_sched422` table."""
- table_id: TableIdFerc1 = TableIdFerc1.TRANSMISSION_STATISTICS_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.TRANSMISSION_LINES
has_unique_record_ids: bool = False
def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
@@ -4450,7 +4442,7 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
return super().transform_main(df)
-class ElectricEnergySourcesFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class EnergySourcesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_energy_sources_sched401` table.
The raw DBF and XBRL table will be split up into two tables. This transformer
@@ -4460,7 +4452,7 @@ class ElectricEnergySourcesFerc1TableTransformer(Ferc1AbstractTableTransformer):
anything with the sign.
"""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_ENERGY_SOURCES_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.ENERGY_SOURCES
has_unique_record_ids: bool = False
def convert_xbrl_metadata_json_to_df(
@@ -4489,17 +4481,17 @@ def convert_xbrl_metadata_json_to_df(
return pd.concat([tbl_meta, new_facts])
-class ElectricEnergyDispositionsFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class EnergyDispositionsTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_energy_dispositions_sched401` table."""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_ENERGY_DISPOSITIONS_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.ENERGY_DISPOSITIONS
has_unique_record_ids: bool = False
-class UtilityPlantSummaryFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class UtilityPlantSummaryTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_utility_plant_summary_sched200` table."""
- table_id: TableIdFerc1 = TableIdFerc1.UTILITY_PLANT_SUMMARY_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.UTILITY_PLANT_SUMMARY
has_unique_record_ids: bool = False
def process_xbrl(
@@ -4751,7 +4743,7 @@ def spot_fix_bad_signs(self: Self, df: pd.DataFrame) -> pd.DataFrame:
return apply_pudl_dtypes(df, group="ferc1")
-class BalanceSheetLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class BalanceSheetLiabilitiesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_balance_sheet_liabilities_sched110` table."""
table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_LIABILITIES
@@ -4828,10 +4820,10 @@ def convert_xbrl_metadata_json_to_df(
return pd.concat([tbl_meta, new_facts, duplicated_facts]).reset_index(drop=True)
-class BalanceSheetAssetsFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class BalanceSheetAssetsTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_balance_sheet_assets_sched110` table."""
- table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_ASSETS_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.BALANCE_SHEET_ASSETS
has_unique_record_ids: bool = False
@cache_df(key="main")
@@ -4909,10 +4901,10 @@ def convert_xbrl_metadata_json_to_df(
return pd.concat([tbl_meta, new_facts, duplicated_facts])
-class IncomeStatementFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class IncomeStatementsTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for the :ref:`core_ferc1__yearly_income_statements_sched114` table."""
- table_id: TableIdFerc1 = TableIdFerc1.INCOME_STATEMENT_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.INCOME_STATEMENTS
has_unique_record_ids: bool = False
def convert_xbrl_metadata_json_to_df(
@@ -4989,10 +4981,10 @@ def transform_main(self: Self, df: pd.DataFrame) -> pd.DataFrame:
return apply_pudl_dtypes(df, group="ferc1")
-class RetainedEarningsFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class RetainedEarningsTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_retained_earnings_sched118` table."""
- table_id: TableIdFerc1 = TableIdFerc1.RETAINED_EARNINGS_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.RETAINED_EARNINGS
has_unique_record_ids: bool = False
current_year_types: set[str] = {
@@ -5367,12 +5359,10 @@ def deduplicate_xbrl_factoid_xbrl_metadata(self, tbl_meta) -> pd.DataFrame:
return tbl_meta_cleaned
-class DepreciationAmortizationSummaryFerc1TableTransformer(
- Ferc1AbstractTableTransformer
-):
+class DepreciationSummaryTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_depreciation_summary_sched336` table."""
- table_id: TableIdFerc1 = TableIdFerc1.DEPRECIATION_AMORTIZATION_SUMMARY_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.DEPRECIATION_SUMMARY
has_unique_record_ids: bool = False
@cache_df("process_xbrl_metadata")
@@ -5414,12 +5404,10 @@ def transform_main(self, df):
return df
-class ElectricPlantDepreciationChangesFerc1TableTransformer(
- Ferc1AbstractTableTransformer
-):
+class DepreciationChangesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_depreciation_changes_sched219` table."""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_PLANT_DEPRECIATION_CHANGES_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.DEPRECIATION_CHANGES
has_unique_record_ids: bool = False
def convert_xbrl_metadata_json_to_df(
@@ -5483,12 +5471,10 @@ def process_instant_xbrl(self, df: pd.DataFrame) -> pd.DataFrame:
return df
-class ElectricPlantDepreciationFunctionalFerc1TableTransformer(
- Ferc1AbstractTableTransformer
-):
+class DepreciationByFunctionTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer for :ref:`core_ferc1__yearly_depreciation_by_function_sched219` table."""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_PLANT_DEPRECIATION_FUNCTIONAL_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.DEPRECIATION_BY_FUNCTION
has_unique_record_ids: bool = False
def convert_xbrl_metadata_json_to_df(
@@ -5574,10 +5560,10 @@ def transform_main(self, df: pd.DataFrame) -> pd.DataFrame:
return df
-class ElectricOperatingExpensesFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class OperatingExpensesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_operating_expenses_sched320` table."""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_OPERATING_EXPENSES_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.OPERATING_EXPENSES
has_unique_record_ids: bool = False
def targeted_drop_duplicates_dbf(self, raw_df: pd.DataFrame) -> pd.DataFrame:
@@ -5632,10 +5618,10 @@ def transform_main(self, df):
return super().transform_main(df).assign(utility_type="electric")
-class ElectricOperatingRevenuesFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class OperatingRevenuesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_operating_revenues_sched300` table."""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRIC_OPERATING_REVENUES_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.OPERATING_REVENUES
has_unique_record_ids: bool = False
def deduplicate_xbrl_factoid_xbrl_metadata(
@@ -5708,10 +5694,10 @@ def targeted_drop_duplicates(self, df):
return df[~dupe_mask].copy()
-class CashFlowFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class CashFlowsTableTransformer(Ferc1AbstractTableTransformer):
"""Transform class for :ref:`core_ferc1__yearly_cash_flows_sched120` table."""
- table_id: TableIdFerc1 = TableIdFerc1.CASH_FLOW_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.CASH_FLOWS
has_unique_record_ids: bool = False
@cache_df("process_instant_xbrl")
@@ -5814,12 +5800,10 @@ def convert_xbrl_metadata_json_to_df(
return pd.concat([meta, ending_balance])
-class ElectricitySalesByRateScheduleFerc1TableTransformer(
- Ferc1AbstractTableTransformer
-):
+class SalesByRateSchedulesTableTransformer(Ferc1AbstractTableTransformer):
"""Transform class for :ref:`core_ferc1__yearly_sales_by_rate_schedules_sched304` table."""
- table_id: TableIdFerc1 = TableIdFerc1.ELECTRICITY_SALES_BY_RATE_SCHEDULE_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.SALES_BY_RATE_SCHEDULES
has_unique_record_ids: bool = False
def add_axis_to_total_table_rows(self, df: pd.DataFrame):
@@ -5872,37 +5856,37 @@ def process_xbrl(
)
-class OtherRegulatoryLiabilitiesFerc1TableTransformer(Ferc1AbstractTableTransformer):
+class OtherRegulatoryLiabilitiesTableTransformer(Ferc1AbstractTableTransformer):
"""Transformer class for :ref:`core_ferc1__yearly_other_regulatory_liabilities_sched278` table."""
- table_id: TableIdFerc1 = TableIdFerc1.OTHER_REGULATORY_LIABILITIES_FERC1
+ table_id: TableIdFerc1 = TableIdFerc1.OTHER_REGULATORY_LIABILITIES
has_unique_record_ids = False
FERC1_TFR_CLASSES: Mapping[str, type[Ferc1AbstractTableTransformer]] = {
- "core_ferc1__yearly_steam_plants_fuel_sched402": FuelFerc1TableTransformer,
- "core_ferc1__yearly_steam_plants_sched402": PlantsSteamFerc1TableTransformer,
- "core_ferc1__yearly_small_plants_sched410": PlantsSmallFerc1TableTransformer,
- "core_ferc1__yearly_hydroelectric_plants_sched406": PlantsHydroFerc1TableTransformer,
- "core_ferc1__yearly_plant_in_service_sched204": PlantInServiceFerc1TableTransformer,
- "core_ferc1__yearly_pumped_storage_plants_sched408": PlantsPumpedStorageFerc1TableTransformer,
- "core_ferc1__yearly_transmission_lines_sched422": TransmissionStatisticsFerc1TableTransformer,
- "core_ferc1__yearly_purchased_power_and_exchanges_sched326": PurchasedPowerFerc1TableTransformer,
- "core_ferc1__yearly_energy_sources_sched401": ElectricEnergySourcesFerc1TableTransformer,
- "core_ferc1__yearly_energy_dispositions_sched401": ElectricEnergyDispositionsFerc1TableTransformer,
- "core_ferc1__yearly_utility_plant_summary_sched200": UtilityPlantSummaryFerc1TableTransformer,
- "core_ferc1__yearly_operating_expenses_sched320": ElectricOperatingExpensesFerc1TableTransformer,
- "core_ferc1__yearly_balance_sheet_liabilities_sched110": BalanceSheetLiabilitiesFerc1TableTransformer,
- "core_ferc1__yearly_depreciation_summary_sched336": DepreciationAmortizationSummaryFerc1TableTransformer,
- "core_ferc1__yearly_balance_sheet_assets_sched110": BalanceSheetAssetsFerc1TableTransformer,
- "core_ferc1__yearly_income_statements_sched114": IncomeStatementFerc1TableTransformer,
- "core_ferc1__yearly_depreciation_changes_sched219": ElectricPlantDepreciationChangesFerc1TableTransformer,
- "core_ferc1__yearly_depreciation_by_function_sched219": ElectricPlantDepreciationFunctionalFerc1TableTransformer,
- "core_ferc1__yearly_retained_earnings_sched118": RetainedEarningsFerc1TableTransformer,
- "core_ferc1__yearly_operating_revenues_sched300": ElectricOperatingRevenuesFerc1TableTransformer,
- "core_ferc1__yearly_cash_flows_sched120": CashFlowFerc1TableTransformer,
- "core_ferc1__yearly_sales_by_rate_schedules_sched304": ElectricitySalesByRateScheduleFerc1TableTransformer,
- "core_ferc1__yearly_other_regulatory_liabilities_sched278": OtherRegulatoryLiabilitiesFerc1TableTransformer,
+ "core_ferc1__yearly_steam_plants_fuel_sched402": SteamPlantsFuelTableTransformer,
+ "core_ferc1__yearly_steam_plants_sched402": SteamPlantsTableTransformer,
+ "core_ferc1__yearly_small_plants_sched410": SmallPlantsTableTransformer,
+ "core_ferc1__yearly_hydroelectric_plants_sched406": HydroelectricPlantsTableTransformer,
+ "core_ferc1__yearly_plant_in_service_sched204": PlantInServiceTableTransformer,
+ "core_ferc1__yearly_pumped_storage_plants_sched408": PumpedStoragePlantsTableTransformer,
+ "core_ferc1__yearly_transmission_lines_sched422": TransmissionLinesTableTransformer,
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326": PurchasedPowerAndExchangesTableTransformer,
+ "core_ferc1__yearly_energy_sources_sched401": EnergySourcesTableTransformer,
+ "core_ferc1__yearly_energy_dispositions_sched401": EnergyDispositionsTableTransformer,
+ "core_ferc1__yearly_utility_plant_summary_sched200": UtilityPlantSummaryTableTransformer,
+ "core_ferc1__yearly_operating_expenses_sched320": OperatingExpensesTableTransformer,
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110": BalanceSheetLiabilitiesTableTransformer,
+ "core_ferc1__yearly_depreciation_summary_sched336": DepreciationSummaryTableTransformer,
+ "core_ferc1__yearly_balance_sheet_assets_sched110": BalanceSheetAssetsTableTransformer,
+ "core_ferc1__yearly_income_statements_sched114": IncomeStatementsTableTransformer,
+ "core_ferc1__yearly_depreciation_changes_sched219": DepreciationChangesTableTransformer,
+ "core_ferc1__yearly_depreciation_by_function_sched219": DepreciationByFunctionTableTransformer,
+ "core_ferc1__yearly_retained_earnings_sched118": RetainedEarningsTableTransformer,
+ "core_ferc1__yearly_operating_revenues_sched300": OperatingRevenuesTableTransformer,
+ "core_ferc1__yearly_cash_flows_sched120": CashFlowsTableTransformer,
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304": SalesByRateSchedulesTableTransformer,
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278": OtherRegulatoryLiabilitiesTableTransformer,
}
@@ -6034,7 +6018,7 @@ def core_ferc1__yearly_steam_plants_sched402(
Returns:
Clean core_ferc1__yearly_steam_plants_sched402 table.
"""
- df = PlantsSteamFerc1TableTransformer(
+ df = SteamPlantsTableTransformer(
xbrl_metadata_json=clean_xbrl_metadata_json[
"core_ferc1__yearly_steam_plants_sched402"
]
diff --git a/test/unit/transform/ferc1_test.py b/test/unit/transform/ferc1_test.py
index 0a54c3988c..4bc1935278 100644
--- a/test/unit/transform/ferc1_test.py
+++ b/test/unit/transform/ferc1_test.py
@@ -265,7 +265,7 @@ def test_select_current_year_annual_records_duration_xbrl():
class FakeTransformer(Ferc1AbstractTableTransformer):
# just need any table name here so that one method is callable
- table_id = TableIdFerc1.FUEL_FERC1
+ table_id = TableIdFerc1.STEAM_PLANTS_FUEL
fake_transformer = FakeTransformer()
df_out = fake_transformer.select_current_year_annual_records_duration_xbrl(df=df)
@@ -505,7 +505,7 @@ def test_apply_xbrl_calculation_fixes():
class FakeTransformer(Ferc1AbstractTableTransformer):
# just need any table name here so that one method is callable
- table_id = TableIdFerc1.FUEL_FERC1
+ table_id = TableIdFerc1.STEAM_PLANTS_FUEL
calc_comps_fixed_out = FakeTransformer().apply_xbrl_calculation_fixes(
calc_components=calc_comps_fix_test, calc_fixes=calc_fixes_test
From 33fab91ef2b3b2fdd07a6403049d7c8c49292c82 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 1 Nov 2023 12:05:33 -0800
Subject: [PATCH 44/70] Incorporate some docs changes from #2912
---
README.rst | 97 ++++++++++++++++++++++++---------
docs/dev/naming_conventions.rst | 81 ++++++++++++++-------------
docs/intro.rst | 10 ++--
pyproject.toml | 1 -
4 files changed, 121 insertions(+), 68 deletions(-)
diff --git a/README.rst b/README.rst
index df5edcda3e..3e993f95dc 100644
--- a/README.rst
+++ b/README.rst
@@ -59,23 +59,71 @@ it's often difficult to work with. PUDL takes the original spreadsheets, CSV fil
and databases and turns them into a unified resource. This allows users to spend more
time on novel analysis and less time on data preparation.
+PUDL is comprised of three core components:
+
+- **Raw Data Archives**
+
+ - PUDL `archives `__
+ all the raw data inputs on `Zenodo `__
+ to ensure perminant, versioned access to the data. In the event that an agency
+ changes how they publish data or deletes old files, the ETL will still have access
+ to the original inputs. Each of the data inputs may have several different versions
+ archived, and all are assigned a unique DOI and made available through the REST API.
+ You can read more about the Raw Data Archives in the
+ `docs `__.
+- **ETL Pipeline**
+
+ - The ETL pipeline (this repo) ingests the raw archives, cleans them,
+ integrates them, and outputs them to a series of tables stored in SQLite Databases,
+ Parquet files, and pickle files (the Data Warehouse). Each release of the PUDL
+ Python package is embedded with a set of of DOIs to indicate which version of the
+ raw inputs it is meant to process. This process helps ensure that the ETL and it's
+ outputs are replicable. You can read more about the ETL in the
+ `docs `__.
+- **Data Warehouse**
+
+ - The outputs from the ETL, sometimes called "PUDL outputs",
+ are stored in a data warehouse as a collection of SQLite and Parquet files so that
+ users can access the data without having to run any code. Learn more about how to
+ access the data `here `__.
+
What data is available?
-----------------------
PUDL currently integrates data from:
-* `EIA Form 860 `__: 2001-2022
-* `EIA Form 860m `__: 2023-06
-* `EIA Form 861 `__: 2001-2022
-* `EIA Form 923 `__: 2001-2022
-* `EPA Continuous Emissions Monitoring System (CEMS) `__: 1995-2022
-* `FERC Form 1 `__: 1994-2021
-* `FERC Form 714 `__: 2006-2020
-* `US Census Demographic Profile 1 Geodatabase `__: 2010
+* **EIA Form 860**: 2001-2022
+ - `Source Docs `__
+ - `PUDL Docs `__
+* **EIA Form 860m**: 2023-06
+ - `Source Docs `__
+* **EIA Form 861**: 2001-2022
+ - `Source Docs `__
+ - `PUDL Docs `__
+* **EIA Form 923**: 2001-2022
+ - `Source Docs `__
+ - `PUDL Docs `__
+* **EPA Continuous Emissions Monitoring System (CEMS)**: 1995-2022
+ - `Source Docs `__
+ - `PUDL Docs `__
+* **FERC Form 1**: 1994-2021
+ - `Source Docs `__
+ - `PUDL Docs `__
+* **FERC Form 714**: 2006-2020
+ - `Source Docs `__
+ - `PUDL Docs `__
+* **FERC Form 2**: 2021 (raw only)
+ - `Source Docs `__
+* **FERC Form 6**: 2021 (raw only)
+ - `Source Docs `__
+* **FERC Form 60**: 2021 (raw only)
+ - `Source Docs `__
+* **US Census Demographic Profile 1 Geodatabase**: 2010
+ - `Source Docs `__
Thanks to support from the `Alfred P. Sloan Foundation Energy & Environment
Program `__, from
-2021 to 2024 we will be integrating the following data as well:
+2021 to 2024 we will be cleaning and integrating the following data as well:
* `EIA Form 176 `__
(The Annual Report of Natural Gas Supply and Disposition)
@@ -83,7 +131,6 @@ Program `__, from
* `FERC Form 2 `__
(Annual Report of Major Natural Gas Companies)
* `PHMSA Natural Gas Annual Report `__
-* Machine Readable Specifications of State Clean Energy Standards
Who is PUDL for?
----------------
@@ -101,8 +148,8 @@ resources and everyone in between!
How do I access the data?
-------------------------
-There are several ways to access PUDL outputs. For more details you'll want
-to check out `the complete documentation
+There are several ways to access the information in the PUDL Data Warehouse.
+For more details you'll want to check out `the complete documentation
`__, but here's a quick overview:
Datasette
@@ -118,6 +165,19 @@ This access mode is good for casual data explorers or anyone who just wants to g
small subset of the data. It also lets you share links to a particular subset of the
data and provides a REST API for querying the data from other applications.
+Nightly Data Builds
+^^^^^^^^^^^^^^^^^^^
+If you are less concerned with reproducibility and want the freshest possible data
+we automatically upload the outputs of our nightly builds to public S3 storage buckets
+as part of the `AWS Open Data Registry
+`__. This data is based on
+the `dev branch `__, of PUDL, and
+is updated most weekday mornings. It is also the data used to populate Datasette.
+
+The nightly build outputs can be accessed using the AWS CLI, the S3 API, or downloaded
+directly via the web. See `Accessing Nightly Builds `__
+for links to the individual SQLite, JSON, and Apache Parquet outputs.
+
Docker + Jupyter
^^^^^^^^^^^^^^^^
Want access to all the published data in bulk? If you're familiar with Python
@@ -151,19 +211,6 @@ most users. You should check out the `Development section `__ for more
details.
-Nightly Data Builds
-^^^^^^^^^^^^^^^^^^^
-If you are less concerned with reproducibility and want the freshest possible data
-we automatically upload the outputs of our nightly builds to public S3 storage buckets
-as part of the `AWS Open Data Registry
-`__. This data is based on
-the `dev branch `__, of PUDL, and
-is updated most weekday mornings. It is also the data used to populate Datasette.
-
-The nightly build outputs can be accessed using the AWS CLI, the S3 API, or downloaded
-directly via the web. See `Accessing Nightly Builds `__
-for links to the individual SQLite, JSON, and Apache Parquet outputs.
-
Contributing to PUDL
--------------------
Find PUDL useful? Want to help make it better? There are lots of ways to help!
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 5becde4b9b..178f22934c 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -15,9 +15,9 @@ Asset Naming Conventions
PUDL's data processing is divided into three layers of Dagster assets: Raw, Core
and Output. Dagster assets are the core unit of computation in PUDL. The outputs
of assets can be persisted to any type of storage though PUDL outputs are typically
-tables in a SQLite database, parquet files or pickle files. The asset name is used
-for the table or parquet file name. Asset names should generally follow this naming
-convention:
+tables in a SQLite database, parquet files or pickle files (read more about this here:
+:doc:`../intro`). The asset name is used for the table or parquet file name. Asset
+names should generally follow this naming convention:
.. code-block::
@@ -33,9 +33,11 @@ convention:
Raw layer
^^^^^^^^^
-* This layer contains assets that extract data from spreadsheets and databases
- and are persisted as pickle files.
-* Naming convention: ``raw_{source}__{asset_name}``
+This layer contains assets that extract data from spreadsheets and databases
+and are persisted as pickle files.
+
+Naming convention: ``raw_{source}__{asset_name}``
+
* ``asset_name`` is typically copied from the source data.
* ``asset_type`` is not included in this layer because the data modeling does not
yet conform to PUDL standards. Raw assets are typically just copies of the
@@ -43,14 +45,16 @@ Raw layer
Core layer
^^^^^^^^^^
-* This layer contains assets that typically break denormalized raw assets into
- well-modeled tables that serve as building blocks for downstream wide tables
- and analyses. Well-modeled means tables in the database have logical
- primary keys, foreign keys, datatypes and generally follow
- :ref:`Tidy Data standards `. Assets in this layer create
- consistent categorical variables, decuplicate and impute data.
- These assets are typically stored in parquet files or tables in a database.
-* Naming convention: ``core_{source}__{asset_type}_{asset_name}``
+This layer contains assets that typically break denormalized raw assets into
+well-modeled tables that serve as building blocks for downstream wide tables
+and analyses. Well-modeled means tables in the database have logical
+primary keys, foreign keys, datatypes and generally follow
+:ref:`Tidy Data standards `. Assets in this layer create
+consistent categorical variables, decuplicate and impute data.
+These assets are typically stored in parquet files or tables in a database.
+
+Naming convention: ``core_{source}__{asset_type}_{asset_name}``
+
* ``asset_type`` describes how the asset is modeled and its role in PUDL’s
collection of core assets. There are a handful of table types in this layer:
@@ -84,10 +88,12 @@ Core layer
Output layer
^^^^^^^^^^^^
-* Assets in this layer use the well modeled tables from the Core layer to construct
- wide and complete tables suitable for users to perform analysis on. This layer
- contains intermediate tables that bridge the core and user-facing tables.
-* Naming convention: ``out_{source}__{asset_type}_{asset_name}``
+This layer uses assets in the Core layer to construct wide and complete tables
+suitable for users to perform analysis on. This layer can contain intermediate
+tables that bridge the core and user-facing tables.
+
+Naming convention: ``out_{source}__{asset_type}_{asset_name}``
+
* ``source`` is optional in this layer because there can be assets that join data from
multiple sources.
* ``asset_type`` is also optional. It will likely describe the frequency at which
@@ -95,19 +101,20 @@ Output layer
Intermediate Assets
^^^^^^^^^^^^^^^^^^^
-* Intermediate assets are logical steps towards a final well-modeled core or
- user-facing output asset. These assets are not intended to be persisted in the
- database or accessible to the user. These assets are denoted by a preceding
- underscore, like a private python method. For example, the intermediate asset
- ``_core_eia860__plants`` is a logical step towards the
- ``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets.
- ``_core_eia860__plants`` does some basic cleaning of the ``raw_eia860__plant``
- asset but still contains duplicate plant entities. The computation intensive
- harvesting process deduplicates ``_core_eia860__plants`` and outputs the
- ``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets which
- follow Tiny Data standards.
-* Limit the number of intermediate assets to avoid an extremely
- cluttered DAG. It is appropriate to create an intermediate asset when:
+Intermediate assets are logical steps towards a final well-modeled core or
+user-facing output asset. These assets are not intended to be persisted in the
+database or accessible to the user. These assets are denoted by a preceding
+underscore, like a private python method. For example, the intermediate asset
+``_core_eia860__plants`` is a logical step towards the
+``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets.
+``_core_eia860__plants`` does some basic cleaning of the ``raw_eia860__plant``
+asset but still contains duplicate plant entities. The computation intensive
+harvesting process deduplicates ``_core_eia860__plants`` and outputs the
+``core_eia860__entity_plants`` and ``core_eia860__scd_plants`` assets which
+follow Tiny Data standards.
+
+Limit the number of intermediate assets to avoid an extremely
+cluttered DAG. It is appropriate to create an intermediate asset when:
* there is a short and long running portion of a process. It is convenient to separate
the long and short-running processing portions into separate assets so debugging the
@@ -118,16 +125,16 @@ Intermediate Assets
Columns and Field Names
-^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------
If two columns in different tables record the same quantity in the same units,
give them the same name. That way if they end up in the same dataframe for
comparison it's easy to automatically rename them with suffixes indicating
where they came from. For example, net electricity generation is reported to
-both :doc:`FERC Form 1 <../data_sources/ferc1>` and :doc:`EIA 923
-<../data_sources/eia923>`, so we've named columns ``net_generation_mwh`` in
-each of those data sources. Similarly, give non-comparable quantities reported
-in different data sources **different** column names. This helps make it clear
-that the quantities are actually different.
+both :doc:`FERC Form 1 <../data_sources/ferc1>` and
+:doc:`EIA 923<../data_sources/eia923>`, so we've named columns ``net_generation_mwh``
+in each of those data sources. Similarly, give non-comparable quantities reported in
+different data sources **different** column names. This helps make it clear that the
+quantities are actually different.
* ``total`` should come at the beginning of the name (e.g.
``total_expns_production``)
diff --git a/docs/intro.rst b/docs/intro.rst
index 7bf02258a8..cbb0b78cc4 100644
--- a/docs/intro.rst
+++ b/docs/intro.rst
@@ -74,13 +74,13 @@ needed and organize them in a local :doc:`datastore `.
.. _etl-process:
---------------------------------------------------------------------------------------
-The Data Warehouse Design
+The ETL Process
---------------------------------------------------------------------------------------
-PUDL's data processing produces a data warehouse that can be used for analytics.
+PUDL's ETL produces a data warehouse that can be used for analytics.
The processing happens within Dagster assets that are persisted to storage,
typically pickle, parquet or SQLite files. The raw data moves through three
-layers of the data warehouse.
+layers of processing.
Raw Layer
^^^^^^^^^
@@ -201,7 +201,7 @@ Some data validations are currently only specified within our test suite, includ
* The expected number of records within each table
* The fact that there are no entirely N/A columns
-A variety of database integrity checks are also run either during the ETL process or
-when the data is loaded into SQLite.
+A variety of database integrity checks are also run either during the data processing
+or when the data is loaded into SQLite.
See our :doc:`dev/testing` documentation for more information.
diff --git a/pyproject.toml b/pyproject.toml
index 6f10b2ff8b..feabc5f463 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -130,7 +130,6 @@ dev = [
"twine>=4,<4.1",
]
doc = [
- "astroid<3.0.0",
"doc8>=1.1,<1.2",
"furo>=2022.4.7",
"sphinx-autoapi>=3,<4",
From c5fb34fd5c9a94d46829f225f43bd941563ad6e5 Mon Sep 17 00:00:00 2001
From: Christina Gosnell
Date: Fri, 3 Nov 2023 10:02:35 -0400
Subject: [PATCH 45/70] FINAL FINAL rename of ferc assets
---
...ERC1-EIA_manual_mapping_spreadsheets.ipynb | 2 +-
...te_FERC1-EIA_manually_mapped_records.ipynb | 8 +-
docs/release_notes.rst | 2 +-
...b_wipe_schema_and_ferc1_name_transition.py | 31031 +++++++++++++---
src/pudl/analysis/__init__.py | 2 +-
...linkage.py => eia_ferc1_record_linkage.py} | 10 +-
...{ferc1_eia_train.py => eia_ferc1_train.py} | 80 +-
src/pudl/analysis/plant_parts_eia.py | 4 +-
src/pudl/etl/__init__.py | 4 +-
src/pudl/etl/analysis_assets.py | 2 +-
src/pudl/extract/eia860m.py | 3 +
.../resources/ferc1_eia_record_linkage.py | 2 +-
src/pudl/output/pudltabl.py | 2 +-
...{ferc1_eia_null.csv => eia_ferc1_null.csv} | 0
..._to_many.csv => eia_ferc1_one_to_many.csv} | 0
...rig.csv => eia_ferc1_one_to_many_orig.csv} | 0
...erc1_eia_train.csv => eia_ferc1_train.csv} | 0
test/integration/ferc1_eia_train_test.py | 37 +-
18 files changed, 26906 insertions(+), 4283 deletions(-)
rename src/pudl/analysis/{ferc1_eia_record_linkage.py => eia_ferc1_record_linkage.py} (99%)
rename src/pudl/analysis/{ferc1_eia_train.py => eia_ferc1_train.py} (94%)
rename src/pudl/package_data/glue/{ferc1_eia_null.csv => eia_ferc1_null.csv} (100%)
rename src/pudl/package_data/glue/{ferc1_eia_one_to_many.csv => eia_ferc1_one_to_many.csv} (100%)
rename src/pudl/package_data/glue/{ferc1_eia_one_to_many_orig.csv => eia_ferc1_one_to_many_orig.csv} (100%)
rename src/pudl/package_data/glue/{ferc1_eia_train.csv => eia_ferc1_train.csv} (100%)
diff --git a/devtools/ferc1-eia-glue/training_data/create_FERC1-EIA_manual_mapping_spreadsheets.ipynb b/devtools/ferc1-eia-glue/training_data/create_FERC1-EIA_manual_mapping_spreadsheets.ipynb
index c45e2e008f..c73ff0e8d9 100644
--- a/devtools/ferc1-eia-glue/training_data/create_FERC1-EIA_manual_mapping_spreadsheets.ipynb
+++ b/devtools/ferc1-eia-glue/training_data/create_FERC1-EIA_manual_mapping_spreadsheets.ipynb
@@ -43,7 +43,7 @@
"# Local libraries\n",
"import pudl\n",
"from pudl.workspace.setup import PudlPaths\n",
- "from pudl.analysis.ferc1_eia_train import *"
+ "from pudl.analysis.eia_ferc1_train import *"
]
},
{
diff --git a/devtools/ferc1-eia-glue/training_data/validate_and_integrate_FERC1-EIA_manually_mapped_records.ipynb b/devtools/ferc1-eia-glue/training_data/validate_and_integrate_FERC1-EIA_manually_mapped_records.ipynb
index 22149567ec..72a5b63e01 100644
--- a/devtools/ferc1-eia-glue/training_data/validate_and_integrate_FERC1-EIA_manually_mapped_records.ipynb
+++ b/devtools/ferc1-eia-glue/training_data/validate_and_integrate_FERC1-EIA_manually_mapped_records.ipynb
@@ -44,7 +44,7 @@
"# Local libraries\n",
"import pudl\n",
"from pudl.workspace.setup import PudlPaths\n",
- "from pudl.analysis.ferc1_eia_train import *"
+ "from pudl.analysis.eia_ferc1_train import *"
]
},
{
@@ -188,7 +188,7 @@
"outputs": [],
"source": [
"current_training_df = pd.read_csv(\n",
- " importlib.resources.files(\"pudl.package_data.glue\").joinpath(\"ferc1_eia_train.csv\")\n",
+ " importlib.resources.files(\"pudl.package_data.glue\").joinpath(\"eia_ferc1_train.csv\")\n",
")\n",
"path_to_overrides = \"./add_to_training/\"\n",
"override_files = [\n",
@@ -326,10 +326,10 @@
"# Get paths to CSVs.\n",
"from importlib import resources\n",
"one_to_many = path_to_one_to_many=resources.files(\"pudl.package_data.glue\").joinpath(\n",
- " \"ferc1_eia_one_to_many.csv\",\n",
+ " \"eia_ferc1_one_to_many.csv\",\n",
" )\n",
"nulls = path_to_one_to_many=resources.files(\"pudl.package_data.glue\").joinpath(\n",
- " \"ferc1_eia_null.csv\",\n",
+ " \"eia_ferc1_null.csv\",\n",
" )"
]
},
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 90e79ab1bf..bc71ef9190 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -192,7 +192,7 @@ Data Coverage
granularly connects EPA CAMD with EIA. Thanks to :user:`grgmiller` for his
contribution to this process. See :issue:`2456` & :pr:`2491`.
-* Added new table :ref:`out__yearly_plants_all_ferc1_plant_parts_eia` which links FERC1
+* Added new table :ref:`out_pudl__yearly_assn_eia_ferc1_plant_parts` which links FERC1
records from :ref:`out_ferc1__yearly_all_plants` and
:ref:`out_eia__yearly_plant_parts`.
diff --git a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
index 09da735338..d43a703aa4 100644
--- a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
+++ b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
@@ -10,7 +10,7 @@
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
-revision = '1fef7b82e48b'
+revision = "1fef7b82e48b"
down_revision = None
branch_labels = None
depends_on = None
@@ -18,4215 +18,26834 @@
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.create_table('core_eia861__assn_balancing_authority',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_balancing_authority'))
- )
- op.create_table('core_eia861__assn_utility',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_utility'))
- )
- op.create_table('core_eia861__yearly_balancing_authority',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_core_eia861__yearly_balancing_authority'))
- )
- op.create_table('core_eia__codes_averaging_periods',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_averaging_periods'))
- )
- op.create_table('core_eia__codes_balancing_authorities',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_balancing_authorities'))
- )
- op.create_table('core_eia__codes_boiler_generator_assn_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_generator_assn_types'))
- )
- op.create_table('core_eia__codes_boiler_status',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_status'))
- )
- op.create_table('core_eia__codes_boiler_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_types'))
- )
- op.create_table('core_eia__codes_coalmine_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_coalmine_types'))
- )
- op.create_table('core_eia__codes_contract_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_contract_types'))
- )
- op.create_table('core_eia__codes_emission_control_equipment_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_emission_control_equipment_types'))
- )
- op.create_table('core_eia__codes_energy_sources',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('fuel_units', sa.Enum('barrels', 'mcf', 'mwh', 'short_tons'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('min_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Minimum heat content per physical unit of fuel in MMBtu.'),
- sa.Column('max_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Maximum heat content per physical unit of fuel in MMBtu.'),
- sa.Column('fuel_group_eia', sa.Enum('fossil', 'other', 'renewable'), nullable=True, comment='High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.'),
- sa.Column('fuel_derived_from', sa.Enum('biomass', 'coal', 'gas', 'other', 'petroleum'), nullable=True, comment='Original fuel from which this refined fuel was derived.'),
- sa.Column('fuel_phase', sa.Enum('gas', 'liquid', 'solid'), nullable=True, comment='Physical phase of matter of the fuel.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_energy_sources'))
- )
- op.create_table('core_eia__codes_environmental_equipment_manufacturers',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_environmental_equipment_manufacturers'))
- )
- op.create_table('core_eia__codes_firing_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_firing_types'))
- )
- op.create_table('core_eia__codes_fuel_transportation_modes',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_transportation_modes'))
- )
- op.create_table('core_eia__codes_fuel_types_aer',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_types_aer'))
- )
- op.create_table('core_eia__codes_mercury_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_mercury_compliance_strategies'))
- )
- op.create_table('core_eia__codes_momentary_interruptions',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_momentary_interruptions'))
- )
- op.create_table('core_eia__codes_nox_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_compliance_strategies'))
- )
- op.create_table('core_eia__codes_nox_control_status',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_control_status'))
- )
- op.create_table('core_eia__codes_nox_units',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_units'))
- )
- op.create_table('core_eia__codes_operational_status',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_operational_status'))
- )
- op.create_table('core_eia__codes_particulate_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_compliance_strategies'))
- )
- op.create_table('core_eia__codes_particulate_units',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_units'))
- )
- op.create_table('core_eia__codes_prime_movers',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_prime_movers'))
- )
- op.create_table('core_eia__codes_regulations',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_regulations'))
- )
- op.create_table('core_eia__codes_reporting_frequencies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_reporting_frequencies'))
- )
- op.create_table('core_eia__codes_sector_consolidated',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_sector_consolidated'))
- )
- op.create_table('core_eia__codes_so2_compliance_strategies',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_compliance_strategies'))
- )
- op.create_table('core_eia__codes_so2_units',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_units'))
- )
- op.create_table('core_eia__codes_steam_plant_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_steam_plant_types'))
- )
- op.create_table('core_eia__codes_wet_dry_bottom',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
- )
- op.create_table('core_eia__entity_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_eia__entity_plants'))
- )
- op.create_table('core_eia__entity_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
- )
- op.create_table('core_eia__yearly_fuel_receipts_costs_aggs',
- sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
- sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
- sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
- sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_core_eia__yearly_fuel_receipts_costs_aggs'))
- )
- op.create_table('core_epa__assn_epacamd_eia_subplant_ids',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
- )
- op.create_table('core_ferc1__codes_power_purchase_types',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
- )
- op.create_table('core_ferc714__respondent_id',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
- )
- op.create_table('core_ferc__codes_accounts',
- sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
- sa.Column('ferc_account_description', sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc__codes_accounts'))
- )
- op.create_table('core_pudl__codes_data_maturities',
- sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_pudl__codes_datasources',
- sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'core_epa__assn_epacamd_eia', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
- sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
- sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
- sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
- sa.PrimaryKeyConstraint('datasource', name=op.f('pk_core_pudl__codes_datasources'))
- )
- op.create_table('core_pudl__codes_subdivisions',
- sa.Column('country_code', sa.Enum('USA', 'CAN'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
- sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
- sa.Column('subdivision_code', sa.Enum('AS', 'ID', 'UT', 'IL', 'OH', 'AL', 'KY', 'NH', 'NT', 'ND', 'KS', 'MN', 'MI', 'OR', 'CO', 'QC', 'AB', 'MP', 'WI', 'BC', 'AZ', 'SD', 'RI', 'ME', 'MO', 'NC', 'GA', 'YT', 'ON', 'CA', 'DE', 'FL', 'NE', 'NM', 'VA', 'WA', 'NJ', 'DC', 'MS', 'GU', 'WV', 'CT', 'AK', 'WY', 'TN', 'TX', 'PR', 'SC', 'MD', 'IN', 'NB', 'NS', 'LA', 'OK', 'SK', 'VI', 'NV', 'MT', 'IA', 'NY', 'PA', 'MB', 'MA', 'VT', 'AR', 'PE', 'NU', 'HI', 'NL'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
- sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
- sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
- sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
- sa.Column('division_code_us_census', sa.Enum('ESC', 'MTN', 'PCN', 'ENC', 'SAT', 'PCC', 'WNC', 'MAT', 'NEW', 'WSC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
- sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
- sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
- sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
- )
- op.create_table('core_pudl__entity_plants_pudl',
- sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
- sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_core_pudl__entity_plants_pudl'))
- )
- op.create_table('core_pudl__entity_utilities_pudl',
- sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
- sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia861__compiled_geometry_balancing_authorities',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
- )
- op.create_table('out_eia861__compiled_geometry_utilities',
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
- )
- op.create_table('out_ferc714__hourly_predicted_state_demand',
- sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
- sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
- sa.Column('demand_mwh', sa.Float(), nullable=True),
- sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
- sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
- )
- op.create_table('_out_eia__monthly_heat_rate_by_unit',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__monthly_heat_rate_by_unit'))
- )
- op.create_table('core_eia860__scd_emissions_control_equipment',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_core_eia860__scd_emissions_control_equipment'))
- )
- op.create_table('core_eia860__scd_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
- )
- op.create_table('core_eia861__yearly_advanced_metering_infrastructure',
- sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
- sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
- sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
- sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('home_area_network', sa.Integer(), nullable=True),
- sa.Column('non_amr_ami', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_advanced_metering_infrastructure'))
- )
- op.create_table('core_eia861__yearly_demand_response',
- sa.Column('actual_peak_demand_savings_mw', sa.Float(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('customer_incentives_cost', sa.Float(), nullable=True),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('other_costs', sa.Float(), nullable=True),
- sa.Column('potential_peak_demand_savings_mw', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response'))
- )
- op.create_table('core_eia861__yearly_demand_response_water_heater',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('water_heater', sa.Integer(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response_water_heater'))
- )
- op.create_table('core_eia861__yearly_demand_side_management_ee_dr',
- sa.Column('annual_indirect_program_cost', sa.Float(), nullable=True),
- sa.Column('annual_total_cost', sa.Float(), nullable=True),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('energy_efficiency_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_annual_cost', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_annual_effects_mwh', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_annual_incentive_payment', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('energy_efficiency_incremental_effects_mwh', sa.Float(), nullable=True),
- sa.Column('load_management_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('load_management_annual_cost', sa.Float(), nullable=True),
- sa.Column('load_management_annual_effects_mwh', sa.Float(), nullable=True),
- sa.Column('load_management_annual_incentive_payment', sa.Float(), nullable=True),
- sa.Column('load_management_annual_potential_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('load_management_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('load_management_incremental_effects_mwh', sa.Float(), nullable=True),
- sa.Column('load_management_incremental_potential_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('price_responsiveness_customers', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_demand_side_management_misc',
- sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
- sa.Column('energy_savings_independently_verified', sa.Boolean(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('major_program_changes', sa.Boolean(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('price_responsive_programs', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('reported_as_another_company', sa.Text(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_responsive_programs', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_demand_side_management_sales',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
- sa.Column('sales_to_ultimate_consumers_mwh', sa.Float(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distributed_generation_fuel',
- sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
- sa.Column('fuel_pct', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distributed_generation_misc',
- sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
- sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
- sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
- sa.Column('generators_number', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distributed_generation_tech',
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_distribution_systems',
- sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
- sa.Column('distribution_circuits', sa.Integer(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_dynamic_pricing',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
- sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_energy_efficiency',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
- sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
- sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
- sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
- sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
- sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_green_pricing',
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
- sa.Column('rec_revenue', sa.Float(), nullable=True),
- sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_mergers',
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('merge_address', sa.Text(), nullable=True),
- sa.Column('merge_city', sa.Text(), nullable=True),
- sa.Column('merge_company', sa.Text(), nullable=True),
- sa.Column('merge_date', sa.Date(), nullable=True),
- sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
- sa.Column('new_parent', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_net_metering_customer_fuel_class',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_net_metering_misc',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_non_net_metering_customer_fuel_class',
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_non_net_metering_misc',
- sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('generators_number', sa.Float(), nullable=True),
- sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_operational_data_misc',
- sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
- sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
- sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
- sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
- sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
- sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
- sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
- sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
- sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
- sa.Column('total_sources_mwh', sa.Float(), nullable=True),
- sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
- sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
- sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
- sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_operational_data_revenue',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('revenue', sa.Float(), nullable=True),
- sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_reliability',
- sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
- sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
- sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
- sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
- sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
- sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
- sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
- sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
- sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
- )
- op.create_table('core_eia861__yearly_sales',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
- sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
- sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
- sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_core_eia861__yearly_sales'))
- )
- op.create_table('core_eia861__yearly_service_territory',
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities')),
- sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_core_eia861__yearly_service_territory'))
- )
- op.create_table('core_eia861__yearly_utility_data_misc',
- sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
- sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
- sa.Column('bundled_activity', sa.Boolean(), nullable=True),
- sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
- sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
- sa.Column('distribution_activity', sa.Boolean(), nullable=True),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('generation_activity', sa.Boolean(), nullable=True),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
- sa.Column('short_form', sa.Boolean(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('transmission_activity', sa.Boolean(), nullable=True),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_utility_data_nerc',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia861__yearly_utility_data_rto',
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities'))
- )
- op.create_table('core_eia923__entity_coalmine',
- sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
- sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
- sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
- sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
- )
- op.create_table('core_eia923__monthly_generation_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
- )
- op.create_table('core_eia923__monthly_generation_fuel_nuclear',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
- )
- op.create_table('core_eia__entity_boilers',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
- )
- op.create_table('core_eia__entity_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
- )
- op.create_table('core_ferc714__hourly_demand_pa',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
- sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('demand_mwh', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id')),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_core_ferc714__hourly_demand_pa'))
- )
- op.create_table('core_pudl__assn_plants_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_pudl__assn_plants_eia'))
- )
- op.create_table('core_pudl__assn_utilities_eia',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_pudl__assn_utilities_eia'))
- )
- op.create_table('core_pudl__assn_utilities_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_pudl__assn_utilities_plants',
- sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_core_pudl__assn_utilities_plants'))
- )
- op.create_table('out_eia860__yearly_emissions_control_equipment',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
- sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
- sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
- sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
- sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
- sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
- sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
- sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
- )
- op.create_table('out_eia923__fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
- sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
- sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
- sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
- sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
- sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
- sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
- sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
- )
- op.create_table('out_eia923__monthly_fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
- )
- op.create_table('out_ferc714__respondents_with_fips',
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
- sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
- )
- op.create_table('out_ferc714__summarized_demand',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
- sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
- sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
- sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
- sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
- sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
- sa.Column('eia_code', sa.Integer(), nullable=True),
- sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
- sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
- )
- op.create_table('_out_eia__monthly_capacity_factor_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_capacity_factor_by_generator'))
- )
- op.create_table('_out_eia__monthly_derived_generator_attributes',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_derived_generator_attributes'))
- )
- op.create_table('_out_eia__monthly_fuel_cost_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_fuel_cost_by_generator'))
- )
- op.create_table('_out_eia__monthly_heat_rate_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_heat_rate_by_generator'))
- )
- op.create_table('core_eia860__scd_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
- sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
- sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
- sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
- sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
- sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
- sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
- sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
- sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
- sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
- sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
- sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
- sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
- sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
- sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
- sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
- sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_plants'))
- )
- op.create_table('core_eia923__monthly_boiler_fuel',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_core_eia923__monthly_boiler_fuel'))
- )
- op.create_table('core_eia923__monthly_fuel_receipts_costs',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
- sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
- sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
- sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
- sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
- sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
- sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
- sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['mine_id_pudl'], ['core_eia923__entity_coalmine.mine_id_pudl'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine')),
- sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
- sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
- )
- op.create_table('core_eia923__monthly_generation',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
- )
- op.create_table('core_epa__assn_epacamd_eia',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
- sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
- sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators'))
- )
- op.create_table('core_ferc1__yearly_balance_sheet_assets_sched110',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets_sched110'))
- )
- op.create_table('core_ferc1__yearly_balance_sheet_liabilities_sched110',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities_sched110'))
- )
- op.create_table('core_ferc1__yearly_cash_flows_sched120',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
- sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flows_sched120'))
- )
- op.create_table('core_ferc1__yearly_depreciation_by_function_sched219',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_depreciation_by_function_sched219'))
- )
- op.create_table('core_ferc1__yearly_depreciation_changes_sched219',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_depreciation_changes_sched219'))
- )
- op.create_table('core_ferc1__yearly_depreciation_summary_sched336',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_summary_sched336'))
- )
- op.create_table('core_ferc1__yearly_energy_dispositions_sched401',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_energy_dispositions_sched401'))
- )
- op.create_table('core_ferc1__yearly_energy_sources_sched401',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_energy_sources_sched401'))
- )
- op.create_table('core_ferc1__yearly_income_statements_sched114',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statements_sched114'))
- )
- op.create_table('core_ferc1__yearly_operating_expenses_sched320',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_operating_expenses_sched320'))
- )
- op.create_table('core_ferc1__yearly_operating_revenues_sched300',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_operating_revenues_sched300'))
- )
- op.create_table('core_ferc1__yearly_other_regulatory_liabilities_sched278',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
- sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_plant_in_service_sched204',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service_sched204'))
- )
- op.create_table('core_ferc1__yearly_purchased_power_and_exchanges_sched326',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
- sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
- sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
- sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
- sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
- sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
- sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_retained_earnings_sched118',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings_sched118'))
- )
- op.create_table('core_ferc1__yearly_sales_by_rate_schedules_sched304',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
- sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
- sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
- sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_transmission_lines_sched422',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
- sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
- sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
- sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
- sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
- sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
- sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
- sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
- sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1'))
- )
- op.create_table('core_ferc1__yearly_utility_plant_summary_sched200',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary_sched200'))
- )
- op.create_table('core_pudl__assn_plants_ferc1',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_pudl__assn_utilities_ferc1_dbf',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_core_pudl__assn_utilities_ferc1_dbf'))
- )
- op.create_table('core_pudl__assn_utilities_ferc1_xbrl',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_core_pudl__assn_utilities_ferc1_xbrl'))
- )
- op.create_table('out_eia923__boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
- )
- op.create_table('out_eia923__generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
- )
- op.create_table('out_eia923__monthly_boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
- )
- op.create_table('out_eia923__monthly_generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
- )
- op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
- )
- op.create_table('out_eia__monthly_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__monthly_generators'))
- )
- op.create_table('out_eia__yearly_utilities',
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
- sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
- sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
- sa.Column('attention_line', sa.Text(), nullable=True),
- sa.Column('address_2', sa.Text(), nullable=True),
- sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
- sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
- sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
- sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
- sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
- sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
- sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
- sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
- sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
- sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
- sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
- )
- op.create_table('out_ferc1__yearly_balance_sheet_assets_sched110',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets_sched110'))
- )
- op.create_table('out_ferc1__yearly_balance_sheet_liabilities_sched110',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities_sched110'))
- )
- op.create_table('out_ferc1__yearly_cash_flows_sched120',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
- sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flows_sched120_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flows_sched120'))
- )
- op.create_table('out_ferc1__yearly_depreciation_by_function_sched219',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_depreciation_by_function_sched219'))
- )
- op.create_table('out_ferc1__yearly_depreciation_changes_sched219',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
- sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_depreciation_changes_sched219'))
- )
- op.create_table('out_ferc1__yearly_depreciation_summary_sched336',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_summary_sched336'))
- )
- op.create_table('out_ferc1__yearly_energy_dispositions_sched401',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_energy_dispositions_sched401'))
- )
- op.create_table('out_ferc1__yearly_energy_sources_sched401',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_energy_sources_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_energy_sources_sched401'))
- )
- op.create_table('out_ferc1__yearly_income_statements_sched114',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statements_sched114_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statements_sched114'))
- )
- op.create_table('out_ferc1__yearly_operating_expenses_sched320',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_operating_expenses_sched320'))
- )
- op.create_table('out_ferc1__yearly_operating_revenues_sched300',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_operating_revenues_sched300'))
- )
- op.create_table('out_ferc1__yearly_other_regulatory_liabilities_sched278',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
- sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
- sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_plant_in_service_sched204',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
- sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
- sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service_sched204'))
- )
- op.create_table('out_ferc1__yearly_purchased_power_and_exchanges_sched326',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
- sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
- sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
- sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
- sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
- sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
- sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
- sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
- sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
- sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
- sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
- sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
- sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
- sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
- sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types')),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_retained_earnings_sched118',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
- sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
- sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings_sched118'))
- )
- op.create_table('out_ferc1__yearly_sales_by_rate_schedules_sched304',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
- sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
- sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
- sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
- sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
- sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
- sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
- sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_transmission_lines_sched422',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
- sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
- sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
- sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
- sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
- sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
- sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
- sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
- sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_ferc1__yearly_utility_plant_summary_sched200',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
- sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).'),
- sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
- sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
- sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_utilities_ferc1.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary_sched200'))
- )
- op.create_table('_out_eia__plants_utilities',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
- )
- op.create_table('_out_eia__yearly_heat_rate_by_unit',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__yearly_heat_rate_by_unit'))
- )
- op.create_table('_out_ferc1__yearly_hydroelectric_plants_sched406',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydroelectric_plants_sched406'))
- )
- op.create_table('_out_ferc1__yearly_plants_utilities',
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
- )
- op.create_table('_out_ferc1__yearly_pumped_storage_plants_sched408',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants_sched408'))
- )
- op.create_table('_out_ferc1__yearly_small_plants_sched410',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants_sched410'))
- )
- op.create_table('_out_ferc1__yearly_steam_plants_sched402',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants_sched402'))
- )
- op.create_table('core_eia860__scd_boilers',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
- sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
- sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
- sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
- sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
- sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
- sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
- sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
- sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
- sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
- sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
- sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
- sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
- sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
- sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
- sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
- sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
- sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
- sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
- sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
- sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
- sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
- sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
- sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
- sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
- sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
- sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
- sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
- sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
- sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
- sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
- sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
- sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status')),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units')),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_core_eia860__scd_boilers'))
- )
- op.create_table('core_eia860__scd_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia860__scd_generators'))
- )
- op.create_table('core_ferc1__yearly_hydroelectric_plants_sched406',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('plant_type', sa.Enum('hydro', 'run_of_river', 'storage', 'na_category', 'run_of_river_with_storage'), nullable=True),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_pumped_storage_plants_sched408',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_small_plants_sched410',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_steam_plants_fuel_sched402',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('core_ferc1__yearly_steam_plants_sched402',
- sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Enum('geothermal', 'na_category', 'wind', 'photovoltaic', 'combined_cycle', 'combustion_turbine', 'internal_combustion', 'nuclear', 'steam', 'solar_thermal'), nullable=True),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1'))
- )
- op.create_table('out_eia923__yearly_fuel_receipts_costs',
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
- sa.Column('moisture_content_pct', sa.Float(), nullable=True),
- sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_combined',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
- )
- op.create_table('out_eia__yearly_plants',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
- sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
- sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
- sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
- sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
- sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
- sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
- sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
- sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
- sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
- sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
- sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
- sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
- sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
- sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
- sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
- sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
- sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
- sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
- sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
- sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
- sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
- sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
- sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
- sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
- sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
- sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
- sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
- sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
- )
- op.create_table('out_ferc1__yearly_all_plants',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
- )
- op.create_table('out_ferc1__yearly_steam_plants_fuel_by_plant_sched402',
- sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
- sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
- sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
- sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
- sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
- sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
- sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
- sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
- sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
- sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
- sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402'))
- )
- op.create_table('out_ferc1__yearly_steam_plants_fuel_sched402',
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
- sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_steam_plants_fuel_sched402'))
- )
- op.create_table('_out_eia__yearly_capacity_factor_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_capacity_factor_by_generator'))
- )
- op.create_table('_out_eia__yearly_derived_generator_attributes',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_derived_generator_attributes'))
- )
- op.create_table('_out_eia__yearly_fuel_cost_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_fuel_cost_by_generator'))
- )
- op.create_table('_out_eia__yearly_generators',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk__out_eia__yearly_generators'))
- )
- op.create_table('_out_eia__yearly_heat_rate_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_heat_rate_by_generator'))
- )
- op.create_table('core_eia860__assn_boiler_cooling',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_core_eia860__assn_boiler_cooling'))
- )
- op.create_table('core_eia860__assn_boiler_generator',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_eia', sa.Text(), nullable=True, comment='EIA-assigned unit identification code.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('boiler_generator_assn_type_code', sa.Text(), nullable=True, comment='Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.'),
- sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_core_eia860__assn_boiler_generator'))
- )
- op.create_table('core_eia860__assn_boiler_stack_flue',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('stack_id_eia', sa.Text(), nullable=True, comment='The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.'),
- sa.Column('flue_id_eia', sa.Text(), nullable=True, comment='The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.'),
- sa.Column('stack_flue_id_eia', sa.Text(), nullable=True, comment='The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.'),
- sa.Column('stack_flue_id_pudl', sa.Text(), nullable=False, comment='A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_core_eia860__assn_boiler_stack_flue'))
- )
- op.create_table('core_eia860__scd_ownership',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
- sa.Column('owner_state', sa.Enum('AS', 'ID', 'UT', 'IL', 'OH', 'AL', 'KY', 'NH', 'NT', 'ND', 'KS', 'MN', 'MI', 'OR', 'CO', 'QC', 'AB', 'MP', 'WI', 'BC', 'AZ', 'SD', 'RI', 'ME', 'MO', 'NC', 'GA', 'YT', 'ON', 'CA', 'DE', 'FL', 'NE', 'NM', 'VA', 'WA', 'NJ', 'DC', 'MS', 'GU', 'WV', 'CT', 'AK', 'WY', 'TN', 'TX', 'PR', 'SC', 'MD', 'IN', 'NB', 'NS', 'LA', 'OK', 'SK', 'VI', 'NV', 'MT', 'IA', 'NY', 'PA', 'MB', 'MA', 'VT', 'AR', 'PE', 'NU', 'HI', 'NL'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
- sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
- sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
- sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
- )
- op.create_table('core_eia860__yearly_boiler_emissions_control_equipment_assn',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
- sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__yearly_boiler_emissions_control_equipment_assn'))
- )
- op.create_table('mega_generators_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out__yearly_plants_all_ferc1_plant_parts_eia',
- sa.Column('record_id_ferc1', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
- sa.Column('record_id_eia', sa.Text(), nullable=True, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('match_type', sa.Text(), nullable=True, comment='Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('total_fuel_cost_eia', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('fuel_cost_per_mmbtu_eia', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('net_generation_mwh_eia', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('capacity_mw_eia', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capacity_factor_eia', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('total_mmbtu_eia', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('heat_rate_mmbtu_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('fuel_type_code_pudl_eia', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('installation_year_eia', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
- sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
- sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
- sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
- sa.Column('avg_num_employees', sa.Float(), nullable=True),
- sa.Column('capacity_factor_ferc1', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw_ferc1', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
- sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
- sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
- sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
- sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
- sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
- sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
- sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
- sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
- sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
- sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
- sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
- sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
- sa.Column('construction_year_eia', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('construction_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('installation_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh_ferc1', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
- sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
- sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
- sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
- sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
- sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
- sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
- sa.Column('fuel_cost_per_mwh_eia', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh_ferc1', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
- sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
- sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
- sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
- sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
- sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
- sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
- sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
- sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
- sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
- sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
- sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
- sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
- sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
- sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
- sa.Column('plant_type', sa.Text(), nullable=True),
- sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
- sa.Column('fuel_cost_per_mmbtu_ferc1', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_type', sa.Text(), nullable=True),
- sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
- sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
- sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
- sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
- sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
- sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
- sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
- sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
- sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
- sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
- sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
- sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
- sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
- sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
- sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
- sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
- sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
- sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
- sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
- sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
- sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
- sa.Column('total_fuel_cost_ferc1', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu_ferc1', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('fuel_type_code_pudl_ferc1', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_plants_ferc1.utility_id_ferc1', 'core_pudl__assn_plants_ferc1.plant_name_ferc1'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_ferc1_core_pudl__assn_plants_ferc1')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out__yearly_plants_all_ferc1_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_ferc1', name=op.f('pk_out__yearly_plants_all_ferc1_plant_parts_eia'))
- )
- op.create_table('out_eia860__yearly_ownership',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_state', sa.Enum('AS', 'ID', 'UT', 'IL', 'OH', 'AL', 'KY', 'NH', 'NT', 'ND', 'KS', 'MN', 'MI', 'OR', 'CO', 'QC', 'AB', 'MP', 'WI', 'BC', 'AZ', 'SD', 'RI', 'ME', 'MO', 'NC', 'GA', 'YT', 'ON', 'CA', 'DE', 'FL', 'NE', 'NM', 'VA', 'WA', 'NJ', 'DC', 'MS', 'GU', 'WV', 'CT', 'AK', 'WY', 'TN', 'TX', 'PR', 'SC', 'MD', 'IN', 'NB', 'NS', 'LA', 'OK', 'SK', 'VI', 'NV', 'MT', 'IA', 'NY', 'PA', 'MB', 'MA', 'VT', 'AR', 'PE', 'NU', 'HI', 'NL'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
- sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
- sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
- sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
- sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
- )
- op.create_table('out_eia923__yearly_boiler_fuel',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
- sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
- )
- op.create_table('out_eia923__yearly_generation',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_by_generator',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
- )
- op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
- sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
- sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
- )
- op.create_table('out_eia__yearly_boilers',
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
- sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
- sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
- sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
- sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
- sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
- sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
- sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
- sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
- sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
- sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
- sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
- sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
- sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
- sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
- sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
- sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
- sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
- sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
- sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
- sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
- sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
- sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
- sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
- sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
- sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
- sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
- sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
- sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
- sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
- sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
- sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
- sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
- sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
- sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
- sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
- sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
- sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
- sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
- sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
- sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
- sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
- sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
- sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
- )
- op.create_table('out_eia__yearly_generators',
- sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
- sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
- sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
- sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
- sa.Column('city', sa.Text(), nullable=True),
- sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
- sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
- sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
- sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
- sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
- sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
- sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
- sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
- sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
- sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
- sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
- sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
- sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
- sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
- sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
- sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
- sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
- sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
- sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
- sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
- sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
- sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
- sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
- sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
- sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
- sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
- sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
- sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
- sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
- sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
- sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
- sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
- sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
- sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
- sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
- sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
- sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
- sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
- sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
- sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
- sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
- sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
- sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
- sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
- sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
- sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
- sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
- sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
- sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
- sa.Column('street_address', sa.Text(), nullable=True),
- sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
- sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
- sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
- sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
- sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
- sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
- sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
- sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
- sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
- sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
- sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
- sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
- sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
- sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
- sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
- sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
- sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
- sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
- sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
- sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__yearly_generators'))
- )
- op.create_table('out_eia__yearly_generators_by_ownership',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
- op.create_table('out_eia__yearly_plant_parts',
- sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__yearly_plant_parts'))
- )
- op.create_table('plant_parts_eia',
- sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Enum('SG', 'WAT', 'GEO', 'NG', 'PUR', 'WC', 'JF', 'MSB', 'AB', 'SUB', 'WH', 'LFG', 'ANT', 'SGC', 'PC', 'SLW', 'RC', 'OBL', 'KER', 'DFO', 'PG', 'RFO', 'SC', 'TDF', 'MSN', 'LIG', 'OBG', 'MWH', 'OTH', 'MSW', 'WND', 'SGP', 'NUC', 'BFG', 'WDL', 'BLQ', 'SUN', 'BIT', 'OBS', 'WDS', 'OG', 'WO'), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Enum('Petroleum Liquids', 'Nuclear', 'Municipal Solid Waste', 'Landfill Gas', 'Other Gases', 'All Other', 'Geothermal', 'Natural Gas Internal Combustion Engine', 'Conventional Steam Coal', 'Coal Integrated Gasification Combined Cycle', 'Solar Thermal without Energy Storage', 'Onshore Wind Turbine', 'Natural Gas with Compressed Air Storage', 'Solar Thermal with Energy Storage', 'Natural Gas Fired Combined Cycle', 'Other Waste Biomass', 'Conventional Hydroelectric', 'Hydroelectric Pumped Storage', 'Offshore Wind Turbine', 'Batteries', 'Wood/Wood Waste Biomass', 'Natural Gas Fired Combustion Turbine', 'Petroleum Coke', 'Flywheels', 'Hydrokinetic', 'Solar Photovoltaic', 'Natural Gas Steam Turbine', 'Other Natural Gas'), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_prime_fuel', 'plant_operating_year', 'plant_gen', 'plant_match_ferc1', 'plant_prime_mover', 'plant_technology', 'plant', 'plant_ferc_acct'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_plant_parts_eia'))
+ op.create_table(
+ "core_eia861__assn_balancing_authority",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "balancing_authority_id_eia",
+ "utility_id_eia",
+ "state",
+ name=op.f("pk_core_eia861__assn_balancing_authority"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__assn_utility",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "utility_id_eia",
+ "state",
+ name=op.f("pk_core_eia861__assn_utility"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_balancing_authority",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "balancing_authority_id_eia",
+ name=op.f("pk_core_eia861__yearly_balancing_authority"),
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_averaging_periods",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_averaging_periods")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_balancing_authorities",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_balancing_authorities")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_boiler_generator_assn_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_boiler_generator_assn_types")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_boiler_status",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_status")),
+ )
+ op.create_table(
+ "core_eia__codes_boiler_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_types")),
+ )
+ op.create_table(
+ "core_eia__codes_coalmine_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_coalmine_types")),
+ )
+ op.create_table(
+ "core_eia__codes_contract_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_contract_types")),
+ )
+ op.create_table(
+ "core_eia__codes_emission_control_equipment_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_emission_control_equipment_types")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_energy_sources",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "fuel_units",
+ sa.Enum("barrels", "mcf", "mwh", "short_tons"),
+ nullable=True,
+ comment="Reported unit of measure for fuel.",
+ ),
+ sa.Column(
+ "min_fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Minimum heat content per physical unit of fuel in MMBtu.",
+ ),
+ sa.Column(
+ "max_fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Maximum heat content per physical unit of fuel in MMBtu.",
+ ),
+ sa.Column(
+ "fuel_group_eia",
+ sa.Enum("fossil", "other", "renewable"),
+ nullable=True,
+ comment="High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.",
+ ),
+ sa.Column(
+ "fuel_derived_from",
+ sa.Enum("biomass", "coal", "gas", "other", "petroleum"),
+ nullable=True,
+ comment="Original fuel from which this refined fuel was derived.",
+ ),
+ sa.Column(
+ "fuel_phase",
+ sa.Enum("gas", "liquid", "solid"),
+ nullable=True,
+ comment="Physical phase of matter of the fuel.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_energy_sources")),
+ )
+ op.create_table(
+ "core_eia__codes_environmental_equipment_manufacturers",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code",
+ name=op.f("pk_core_eia__codes_environmental_equipment_manufacturers"),
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_firing_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_firing_types")),
+ )
+ op.create_table(
+ "core_eia__codes_fuel_transportation_modes",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_fuel_transportation_modes")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_fuel_types_aer",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_fuel_types_aer")),
+ )
+ op.create_table(
+ "core_eia__codes_mercury_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_mercury_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_momentary_interruptions",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_momentary_interruptions")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_nox_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_nox_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_nox_control_status",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_nox_control_status")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_nox_units",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_nox_units")),
+ )
+ op.create_table(
+ "core_eia__codes_operational_status",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_operational_status")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_particulate_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_particulate_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_particulate_units",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_particulate_units")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_prime_movers",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_prime_movers")),
+ )
+ op.create_table(
+ "core_eia__codes_regulations",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_regulations")),
+ )
+ op.create_table(
+ "core_eia__codes_reporting_frequencies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_reporting_frequencies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_sector_consolidated",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_sector_consolidated")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_so2_compliance_strategies",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_so2_compliance_strategies")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_so2_units",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_so2_units")),
+ )
+ op.create_table(
+ "core_eia__codes_steam_plant_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_eia__codes_steam_plant_types")
+ ),
+ )
+ op.create_table(
+ "core_eia__codes_wet_dry_bottom",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_wet_dry_bottom")),
+ )
+ op.create_table(
+ "core_eia__entity_plants",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", name=op.f("pk_core_eia__entity_plants")
+ ),
+ )
+ op.create_table(
+ "core_eia__entity_utilities",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", name=op.f("pk_core_eia__entity_utilities")
+ ),
+ )
+ op.create_table(
+ "core_eia__yearly_fuel_receipts_costs_aggs",
+ sa.Column(
+ "fuel_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of fuel aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "geo_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of geographic aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "sector_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of sectoral aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "temporal_agg",
+ sa.Text(),
+ nullable=False,
+ comment="Category of temporal aggregation in EIA bulk electricity data.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "fuel_received_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "fuel_agg",
+ "geo_agg",
+ "sector_agg",
+ "temporal_agg",
+ "report_date",
+ name=op.f("pk_core_eia__yearly_fuel_receipts_costs_aggs"),
+ ),
+ )
+ op.create_table(
+ "core_epa__assn_epacamd_eia_subplant_ids",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_epa",
+ sa.Integer(),
+ nullable=True,
+ comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
+ ),
+ sa.Column(
+ "subplant_id",
+ sa.Integer(),
+ nullable=True,
+ comment="Sub-plant ID links EPA CEMS emissions units to EIA units.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "emissions_unit_id_epa",
+ sa.Text(),
+ nullable=True,
+ comment="Emissions (smokestack) unit monitored by EPA CEMS.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ )
+ op.create_table(
+ "core_ferc1__codes_power_purchase_types",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "label",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human-readable code using snake_case",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_ferc1__codes_power_purchase_types")
+ ),
+ )
+ op.create_table(
+ "core_ferc714__respondent_id",
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
+ sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
+ sa.Column("eia_code", sa.Integer(), nullable=True),
+ sa.PrimaryKeyConstraint(
+ "respondent_id_ferc714", name=op.f("pk_core_ferc714__respondent_id")
+ ),
+ )
+ op.create_table(
+ "core_ferc__codes_accounts",
+ sa.Column(
+ "ferc_account_id",
+ sa.Text(),
+ nullable=False,
+ comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories.",
+ ),
+ sa.Column("ferc_account_description", sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint(
+ "ferc_account_id", name=op.f("pk_core_ferc__codes_accounts")
+ ),
+ )
+ op.create_table(
+ "core_pudl__codes_data_maturities",
+ sa.Column(
+ "code", sa.Text(), nullable=False, comment="Originally reported short code."
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "code", name=op.f("pk_core_pudl__codes_data_maturities")
+ ),
+ )
+ op.create_table(
+ "core_pudl__codes_datasources",
+ sa.Column(
+ "datasource",
+ sa.Enum(
+ "censusdp1tract",
+ "eia176",
+ "eia860",
+ "eia860m",
+ "eia861",
+ "eia923",
+ "eia_bulk_elec",
+ "eiawater",
+ "epacems",
+ "core_epa__assn_epacamd_eia",
+ "ferc1",
+ "ferc2",
+ "ferc6",
+ "ferc60",
+ "ferc714",
+ "ferceqr",
+ "mshamines",
+ "phmsagas",
+ "pudl",
+ ),
+ nullable=False,
+ comment="Code identifying a dataset available within PUDL.",
+ ),
+ sa.Column(
+ "partitions",
+ sa.Text(),
+ nullable=True,
+ comment="The data parititions used to generate this instance of the database.",
+ ),
+ sa.Column(
+ "doi",
+ sa.Text(),
+ nullable=True,
+ comment="Unique digitial object identifier of Zenodo archive.",
+ ),
+ sa.Column(
+ "pudl_version",
+ sa.Text(),
+ nullable=True,
+ comment="The version of PUDL used to generate this database.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "datasource", name=op.f("pk_core_pudl__codes_datasources")
+ ),
+ )
+ op.create_table(
+ "core_pudl__codes_subdivisions",
+ sa.Column(
+ "country_code",
+ sa.Enum("USA", "CAN"),
+ nullable=False,
+ comment="Three letter ISO-3166 country code (e.g. USA or CAN).",
+ ),
+ sa.Column(
+ "country_name",
+ sa.Text(),
+ nullable=True,
+ comment="Full country name (e.g. United States of America).",
+ ),
+ sa.Column(
+ "subdivision_code",
+ sa.Enum(
+ "AS",
+ "ID",
+ "UT",
+ "IL",
+ "OH",
+ "AL",
+ "KY",
+ "NH",
+ "NT",
+ "ND",
+ "KS",
+ "MN",
+ "MI",
+ "OR",
+ "CO",
+ "QC",
+ "AB",
+ "MP",
+ "WI",
+ "BC",
+ "AZ",
+ "SD",
+ "RI",
+ "ME",
+ "MO",
+ "NC",
+ "GA",
+ "YT",
+ "ON",
+ "CA",
+ "DE",
+ "FL",
+ "NE",
+ "NM",
+ "VA",
+ "WA",
+ "NJ",
+ "DC",
+ "MS",
+ "GU",
+ "WV",
+ "CT",
+ "AK",
+ "WY",
+ "TN",
+ "TX",
+ "PR",
+ "SC",
+ "MD",
+ "IN",
+ "NB",
+ "NS",
+ "LA",
+ "OK",
+ "SK",
+ "VI",
+ "NV",
+ "MT",
+ "IA",
+ "NY",
+ "PA",
+ "MB",
+ "MA",
+ "VT",
+ "AR",
+ "PE",
+ "NU",
+ "HI",
+ "NL",
+ ),
+ nullable=False,
+ comment="Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).",
+ ),
+ sa.Column(
+ "subdivision_name",
+ sa.Text(),
+ nullable=True,
+ comment="Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.",
+ ),
+ sa.Column(
+ "subdivision_type",
+ sa.Text(),
+ nullable=True,
+ comment="ISO-3166 political subdivision type. E.g. state, province, outlying_area.",
+ ),
+ sa.Column(
+ "timezone_approx",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.",
+ ),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column(
+ "division_name_us_census",
+ sa.Text(),
+ nullable=True,
+ comment="Longer human readable name describing the US Census division.",
+ ),
+ sa.Column(
+ "division_code_us_census",
+ sa.Enum(
+ "ESC", "MTN", "PCN", "ENC", "SAT", "PCC", "WNC", "MAT", "NEW", "WSC"
+ ),
+ nullable=True,
+ comment="Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf",
+ ),
+ sa.Column(
+ "region_name_us_census",
+ sa.Text(),
+ nullable=True,
+ comment="Human-readable name of a US Census region.",
+ ),
+ sa.Column(
+ "is_epacems_state",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "country_code",
+ "subdivision_code",
+ name=op.f("pk_core_pudl__codes_subdivisions"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__entity_plants_pudl",
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_pudl",
+ sa.Text(),
+ nullable=True,
+ comment="Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_pudl", name=op.f("pk_core_pudl__entity_plants_pudl")
+ ),
+ )
+ op.create_table(
+ "core_pudl__entity_utilities_pudl",
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_pudl",
+ sa.Text(),
+ nullable=True,
+ comment="Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_pudl", name=op.f("pk_core_pudl__entity_utilities_pudl")
+ ),
+ )
+ op.create_table(
+ "out_eia861__compiled_geometry_balancing_authorities",
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "county_name_census",
+ sa.Text(),
+ nullable=True,
+ comment="County name as specified in Census DP1 Data.",
+ ),
+ sa.Column(
+ "population",
+ sa.Float(),
+ nullable=True,
+ comment="County population, sourced from Census DP1 data.",
+ ),
+ sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("county", sa.Text(), nullable=False, comment="County name."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_id_eia",
+ "report_date",
+ "county_id_fips",
+ "county",
+ name=op.f("pk_out_eia861__compiled_geometry_balancing_authorities"),
+ ),
+ )
+ op.create_table(
+ "out_eia861__compiled_geometry_utilities",
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "county_name_census",
+ sa.Text(),
+ nullable=True,
+ comment="County name as specified in Census DP1 Data.",
+ ),
+ sa.Column(
+ "population",
+ sa.Float(),
+ nullable=True,
+ comment="County population, sourced from Census DP1 data.",
+ ),
+ sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia",
+ "report_date",
+ "county_id_fips",
+ name=op.f("pk_out_eia861__compiled_geometry_utilities"),
+ ),
+ )
+ op.create_table(
+ "out_ferc714__hourly_predicted_state_demand",
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
+ sa.Column("demand_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "scaled_demand_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Estimated electricity demand scaled by the total sales within a state.",
+ ),
+ sa.PrimaryKeyConstraint(
+ "state_id_fips",
+ "utc_datetime",
+ name=op.f("pk_out_ferc714__hourly_predicted_state_demand"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_heat_rate_by_unit",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ name=op.f("pk__out_eia__monthly_heat_rate_by_unit"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_emissions_control_equipment",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "emission_control_id_pudl",
+ sa.Float(),
+ nullable=False,
+ comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "emission_control_equipment_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Short code indicating the type of emission control equipment installed.",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "mercury_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Mercury control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "nox_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "particulate_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Particulate matter control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "so2_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "acid_gas_control",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
+ ),
+ sa.Column(
+ "emission_control_equipment_cost",
+ sa.Float(),
+ nullable=True,
+ comment="The total cost to install a piece of emission control equipment.",
+ ),
+ sa.Column(
+ "emission_control_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
+ ),
+ sa.Column(
+ "emission_control_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["emission_control_equipment_type_code"],
+ ["core_eia__codes_emission_control_equipment_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_year",
+ "plant_id_eia",
+ "emission_control_id_pudl",
+ name=op.f("pk_core_eia860__scd_emissions_control_equipment"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_utilities",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "plants_reported_owner",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_operator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_asset_manager",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_other_relationship",
+ sa.Boolean(),
+ nullable=True,
+ comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("attention_line", sa.Text(), nullable=True),
+ sa.Column("address_2", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="Four digit US Zip Code suffix.",
+ ),
+ sa.Column(
+ "contact_firstname",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_lastname",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_title",
+ sa.Text(),
+ nullable=True,
+ comment="Title of of utility contact 1.",
+ ),
+ sa.Column(
+ "phone_number",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 1.",
+ ),
+ sa.Column(
+ "phone_extension",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 1",
+ ),
+ sa.Column(
+ "contact_firstname_2",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_lastname_2",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_title_2",
+ sa.Text(),
+ nullable=True,
+ comment="Title of utility contact 2.",
+ ),
+ sa.Column(
+ "phone_number_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 2.",
+ ),
+ sa.Column(
+ "phone_extension_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 2",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", "report_date", name=op.f("pk_core_eia860__scd_utilities")
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_advanced_metering_infrastructure",
+ sa.Column("advanced_metering_infrastructure", sa.Integer(), nullable=True),
+ sa.Column("automated_meter_reading", sa.Integer(), nullable=True),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=False,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("daily_digital_access_customers", sa.Integer(), nullable=True),
+ sa.Column("direct_load_control_customers", sa.Integer(), nullable=True),
+ sa.Column("energy_served_ami_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("home_area_network", sa.Integer(), nullable=True),
+ sa.Column("non_amr_ami", sa.Integer(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_code_eia",
+ "customer_class",
+ "report_date",
+ "state",
+ "utility_id_eia",
+ name=op.f("pk_core_eia861__yearly_advanced_metering_infrastructure"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_response",
+ sa.Column("actual_peak_demand_savings_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=False,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("customer_incentives_cost", sa.Float(), nullable=True),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("energy_savings_mwh", sa.Float(), nullable=True),
+ sa.Column("other_costs", sa.Float(), nullable=True),
+ sa.Column("potential_peak_demand_savings_mw", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_code_eia",
+ "customer_class",
+ "report_date",
+ "state",
+ "utility_id_eia",
+ name=op.f("pk_core_eia861__yearly_demand_response"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_response_water_heater",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("water_heater", sa.Integer(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "balancing_authority_code_eia",
+ "report_date",
+ "state",
+ "utility_id_eia",
+ name=op.f("pk_core_eia861__yearly_demand_response_water_heater"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_side_management_ee_dr",
+ sa.Column("annual_indirect_program_cost", sa.Float(), nullable=True),
+ sa.Column("annual_total_cost", sa.Float(), nullable=True),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "energy_efficiency_annual_actual_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("energy_efficiency_annual_cost", sa.Float(), nullable=True),
+ sa.Column("energy_efficiency_annual_effects_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "energy_efficiency_annual_incentive_payment", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "energy_efficiency_incremental_actual_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column(
+ "energy_efficiency_incremental_effects_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "load_management_annual_actual_peak_reduction_mw", sa.Float(), nullable=True
+ ),
+ sa.Column("load_management_annual_cost", sa.Float(), nullable=True),
+ sa.Column("load_management_annual_effects_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "load_management_annual_incentive_payment", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "load_management_annual_potential_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column(
+ "load_management_incremental_actual_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("load_management_incremental_effects_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "load_management_incremental_potential_peak_reduction_mw",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("price_responsiveness_customers", sa.Integer(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("time_responsiveness_customers", sa.Integer(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_side_management_misc",
+ sa.Column(
+ "energy_savings_estimates_independently_verified",
+ sa.Boolean(),
+ nullable=True,
+ ),
+ sa.Column("energy_savings_independently_verified", sa.Boolean(), nullable=True),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("major_program_changes", sa.Boolean(), nullable=True),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("price_responsive_programs", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("reported_as_another_company", sa.Text(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("time_responsive_programs", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_demand_side_management_sales",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
+ sa.Column("sales_to_ultimate_consumers_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distributed_generation_fuel",
+ sa.Column(
+ "estimated_or_actual_fuel_data",
+ sa.Enum("estimated", "actual"),
+ nullable=True,
+ ),
+ sa.Column(
+ "fuel_class",
+ sa.Enum("gas", "oil", "other", "renewable", "water", "wind", "wood"),
+ nullable=True,
+ ),
+ sa.Column("fuel_pct", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distributed_generation_misc",
+ sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "distributed_generation_owned_capacity_mw", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "estimated_or_actual_capacity_data",
+ sa.Enum("estimated", "actual"),
+ nullable=True,
+ ),
+ sa.Column("generators_num_less_1_mw", sa.Float(), nullable=True),
+ sa.Column("generators_number", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("total_capacity_less_1_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distributed_generation_tech",
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "estimated_or_actual_tech_data",
+ sa.Enum("estimated", "actual"),
+ nullable=True,
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "tech_class",
+ sa.Enum(
+ "backup",
+ "chp_cogen",
+ "combustion_turbine",
+ "fuel_cell",
+ "hydro",
+ "internal_combustion",
+ "other",
+ "pv",
+ "steam",
+ "storage_pv",
+ "all_storage",
+ "total",
+ "virtual_pv",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_distribution_systems",
+ sa.Column("circuits_with_voltage_optimization", sa.Integer(), nullable=True),
+ sa.Column("distribution_circuits", sa.Integer(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_dynamic_pricing",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("critical_peak_pricing", sa.Boolean(), nullable=True),
+ sa.Column("critical_peak_rebate", sa.Boolean(), nullable=True),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("real_time_pricing", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("time_of_use_pricing", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("variable_peak_pricing", sa.Boolean(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_energy_efficiency",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("customer_incentives_incremental_cost", sa.Float(), nullable=True),
+ sa.Column(
+ "customer_incentives_incremental_life_cycle_cost", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "customer_other_costs_incremental_life_cycle_cost",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("incremental_energy_savings_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "incremental_life_cycle_energy_savings_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "incremental_life_cycle_peak_reduction_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column("incremental_peak_reduction_mw", sa.Float(), nullable=True),
+ sa.Column("other_costs_incremental_cost", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("weighted_average_life_years", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_green_pricing",
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("green_pricing_revenue", sa.Float(), nullable=True),
+ sa.Column("rec_revenue", sa.Float(), nullable=True),
+ sa.Column("rec_sales_mwh", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_mergers",
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("merge_address", sa.Text(), nullable=True),
+ sa.Column("merge_city", sa.Text(), nullable=True),
+ sa.Column("merge_company", sa.Text(), nullable=True),
+ sa.Column("merge_date", sa.Date(), nullable=True),
+ sa.Column(
+ "merge_state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.",
+ ),
+ sa.Column("new_parent", sa.Text(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "zip_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="Four digit US Zip Code suffix.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_net_metering_customer_fuel_class",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column("energy_displaced_mwh", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column("sold_to_utility_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "tech_class",
+ sa.Enum(
+ "backup",
+ "chp_cogen",
+ "combustion_turbine",
+ "fuel_cell",
+ "hydro",
+ "internal_combustion",
+ "other",
+ "pv",
+ "steam",
+ "storage_pv",
+ "all_storage",
+ "total",
+ "virtual_pv",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_net_metering_misc",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_non_net_metering_customer_fuel_class",
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=True,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "tech_class",
+ sa.Enum(
+ "backup",
+ "chp_cogen",
+ "combustion_turbine",
+ "fuel_cell",
+ "hydro",
+ "internal_combustion",
+ "other",
+ "pv",
+ "steam",
+ "storage_pv",
+ "all_storage",
+ "total",
+ "virtual_pv",
+ "wind",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_non_net_metering_misc",
+ sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column("generators_number", sa.Float(), nullable=True),
+ sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("utility_owned_capacity_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_operational_data_misc",
+ sa.Column("consumed_by_facility_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "consumed_by_respondent_without_charge_mwh", sa.Float(), nullable=True
+ ),
+ sa.Column(
+ "data_observed",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the value observed (True) or imputed (False).",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("exchange_energy_delivered_mwh", sa.Float(), nullable=True),
+ sa.Column("exchange_energy_received_mwh", sa.Float(), nullable=True),
+ sa.Column("furnished_without_charge_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column("net_power_exchanged_mwh", sa.Float(), nullable=True),
+ sa.Column("net_wheeled_power_mwh", sa.Float(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("retail_sales_mwh", sa.Float(), nullable=True),
+ sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("summer_peak_demand_mw", sa.Float(), nullable=True),
+ sa.Column("total_disposition_mwh", sa.Float(), nullable=True),
+ sa.Column("total_energy_losses_mwh", sa.Float(), nullable=True),
+ sa.Column("total_sources_mwh", sa.Float(), nullable=True),
+ sa.Column("transmission_by_other_losses_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("wheeled_power_delivered_mwh", sa.Float(), nullable=True),
+ sa.Column("wheeled_power_received_mwh", sa.Float(), nullable=True),
+ sa.Column("wholesale_power_purchases_mwh", sa.Float(), nullable=True),
+ sa.Column("winter_peak_demand_mw", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_operational_data_revenue",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("revenue", sa.Float(), nullable=True),
+ sa.Column(
+ "revenue_class",
+ sa.Enum(
+ "credits_or_adjustments",
+ "delivery_customers",
+ "other",
+ "retail_sales",
+ "sales_for_resale",
+ "total",
+ "transmission",
+ "unbundled",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_reliability",
+ sa.Column(
+ "caidi_w_major_event_days_minus_loss_of_service_minutes",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("caidi_w_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column("caidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("highest_distribution_voltage_kv", sa.Float(), nullable=True),
+ sa.Column("inactive_accounts_included", sa.Boolean(), nullable=True),
+ sa.Column("momentary_interruption_definition", sa.Text(), nullable=True),
+ sa.Column("outages_recorded_automatically", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "saidi_w_major_event_days_minus_loss_of_service_minutes",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("saidi_w_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column("saidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
+ sa.Column("saifi_w_major_event_days_customers", sa.Float(), nullable=True),
+ sa.Column(
+ "saifi_w_major_event_days_minus_loss_of_service_customers",
+ sa.Float(),
+ nullable=True,
+ ),
+ sa.Column("saifi_wo_major_event_days_customers", sa.Float(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "standard", sa.Enum("ieee_standard", "other_standard"), nullable=True
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["momentary_interruption_definition"],
+ ["core_eia__codes_momentary_interruptions.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_sales",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=False,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=False,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "customer_class",
+ sa.Enum(
+ "commercial",
+ "industrial",
+ "direct_connection",
+ "other",
+ "residential",
+ "total",
+ "transportation",
+ ),
+ nullable=False,
+ comment="High level categorization of customer type.",
+ ),
+ sa.Column(
+ "business_model", sa.Enum("retail", "energy_services"), nullable=False
+ ),
+ sa.Column(
+ "data_observed",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the value observed (True) or imputed (False).",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column(
+ "service_type", sa.Enum("bundled", "energy", "delivery"), nullable=False
+ ),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "customers", sa.Float(), nullable=True, comment="Number of customers."
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "sales_revenue",
+ sa.Float(),
+ nullable=True,
+ comment="Revenue from electricity sold.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia",
+ "state",
+ "report_date",
+ "balancing_authority_code_eia",
+ "customer_class",
+ "business_model",
+ "service_type",
+ name=op.f("pk_core_eia861__yearly_sales"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_service_territory",
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=False,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "utility_id_eia",
+ "county_id_fips",
+ name=op.f("pk_core_eia861__yearly_service_territory"),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_utility_data_misc",
+ sa.Column("alternative_fuel_vehicle_2_activity", sa.Boolean(), nullable=True),
+ sa.Column("alternative_fuel_vehicle_activity", sa.Boolean(), nullable=True),
+ sa.Column("bundled_activity", sa.Boolean(), nullable=True),
+ sa.Column("buying_distribution_activity", sa.Boolean(), nullable=True),
+ sa.Column("buying_transmission_activity", sa.Boolean(), nullable=True),
+ sa.Column("distribution_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("generation_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("operates_generating_plant", sa.Boolean(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("retail_marketing_activity", sa.Boolean(), nullable=True),
+ sa.Column("short_form", sa.Boolean(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("transmission_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("wholesale_marketing_activity", sa.Boolean(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_utility_data_nerc",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "nerc_regions_of_operation",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia861__yearly_utility_data_rto",
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "rtos_of_operation",
+ sa.Enum("caiso", "ercot", "isone", "miso", "nyiso", "other", "pjm", "spp"),
+ nullable=True,
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia923__entity_coalmine",
+ sa.Column(
+ "mine_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="Dynamically assigned PUDL mine identifier.",
+ ),
+ sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
+ sa.Column(
+ "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.Column(
+ "mine_id_msha",
+ sa.Integer(),
+ nullable=True,
+ comment="MSHA issued mine identifier.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mine_type_code"],
+ ["core_eia__codes_coalmine_types.code"],
+ name=op.f(
+ "fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "mine_id_pudl", name=op.f("pk_core_eia923__entity_coalmine")
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_generation_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_code_aer",
+ sa.Text(),
+ nullable=True,
+ comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["fuel_type_code_aer"],
+ ["core_eia__codes_fuel_types_aer.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_core_eia923__monthly_generation_fuel"),
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_generation_fuel_nuclear",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "nuclear_unit_id",
+ sa.Text(),
+ nullable=False,
+ comment="For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_code_aer",
+ sa.Text(),
+ nullable=True,
+ comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["fuel_type_code_aer"],
+ ["core_eia__codes_fuel_types_aer.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "nuclear_unit_id",
+ "energy_source_code",
+ "prime_mover_code",
+ name=op.f("pk_core_eia923__monthly_generation_fuel_nuclear"),
+ ),
+ )
+ op.create_table(
+ "core_eia__entity_boilers",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "boiler_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of boiler manufacturer.",
+ ),
+ sa.Column(
+ "boiler_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for boiler manufacturer.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "boiler_id", name=op.f("pk_core_eia__entity_boilers")
+ ),
+ )
+ op.create_table(
+ "core_eia__entity_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "generator_id", name=op.f("pk_core_eia__entity_generators")
+ ),
+ )
+ op.create_table(
+ "core_ferc714__hourly_demand_pa",
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "America/New_York",
+ "America/Chicago",
+ "America/Denver",
+ "America/Los_Angeles",
+ "America/Anchorage",
+ "Pacific/Honolulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column("demand_mwh", sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["respondent_id_ferc714"],
+ ["core_ferc714__respondent_id.respondent_id_ferc714"],
+ name=op.f(
+ "fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "respondent_id_ferc714",
+ "utc_datetime",
+ name=op.f("pk_core_ferc714__hourly_demand_pa"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_plants_eia",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", name=op.f("pk_core_pudl__assn_plants_eia")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_eia",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", name=op.f("pk_core_pudl__assn_utilities_eia")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_ferc1",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1", name=op.f("pk_core_pudl__assn_utilities_ferc1")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_plants",
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_pudl",
+ "plant_id_pudl",
+ name=op.f("pk_core_pudl__assn_utilities_plants"),
+ ),
+ )
+ op.create_table(
+ "out_eia860__yearly_emissions_control_equipment",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "emission_control_id_pudl",
+ sa.Float(),
+ nullable=False,
+ comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "emission_control_equipment_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Short code indicating the type of emission control equipment installed.",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "mercury_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Mercury control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "nox_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "particulate_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Particulate matter control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "so2_control_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
+ ),
+ sa.Column(
+ "acid_gas_control",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
+ ),
+ sa.Column(
+ "emission_control_equipment_cost",
+ sa.Float(),
+ nullable=True,
+ comment="The total cost to install a piece of emission control equipment.",
+ ),
+ sa.Column(
+ "emission_control_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
+ ),
+ sa.Column(
+ "emission_control_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["emission_control_equipment_type_code"],
+ ["core_eia__codes_emission_control_equipment_types.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_year",
+ "plant_id_eia",
+ "emission_control_id_pudl",
+ name=op.f("pk_out_eia860__yearly_emissions_control_equipment"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__fuel_receipts_costs",
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "contract_type_code",
+ sa.Enum("S", "C", "NC", "T"),
+ nullable=True,
+ comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
+ ),
+ sa.Column(
+ "contract_expiration_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date contract expires.Format: MMYY.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=True,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_group_code",
+ sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
+ nullable=True,
+ comment="Fuel groups used in the Electric Power Monthly",
+ ),
+ sa.Column(
+ "supplier_name",
+ sa.Text(),
+ nullable=True,
+ comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "bulk_agg_fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column(
+ "primary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the longest distance transported.",
+ ),
+ sa.Column(
+ "secondary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the second longest distance transported.",
+ ),
+ sa.Column(
+ "natural_gas_transport_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natural gas transportation service.",
+ ),
+ sa.Column(
+ "natural_gas_delivery_contract_type_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natrual gas delivery service:",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "mine_id_msha",
+ sa.Integer(),
+ nullable=True,
+ comment="MSHA issued mine identifier.",
+ ),
+ sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
+ sa.Column(
+ "mine_state",
+ sa.Text(),
+ nullable=True,
+ comment="State where the coal mine is located. Two letter abbreviation.",
+ ),
+ sa.Column(
+ "coalmine_county_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.",
+ ),
+ sa.Column(
+ "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
+ ),
+ sa.ForeignKeyConstraint(
+ ["contract_type_code"],
+ ["core_eia__codes_contract_types.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mine_type_code"],
+ ["core_eia__codes_coalmine_types.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["primary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["secondary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__generation_fuel_combined",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_code_aer",
+ sa.Text(),
+ nullable=True,
+ comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["fuel_type_code_aer"],
+ ["core_eia__codes_fuel_types_aer.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_out_eia923__generation_fuel_combined"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_fuel_receipts_costs",
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_combined",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_out_eia923__monthly_generation_fuel_combined"),
+ ),
+ )
+ op.create_table(
+ "out_ferc714__respondents_with_fips",
+ sa.Column("eia_code", sa.Integer(), nullable=True),
+ sa.Column(
+ "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
+ ),
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=True),
+ sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "state_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="Two digit state FIPS code.",
+ ),
+ sa.Column(
+ "county_id_fips",
+ sa.Text(),
+ nullable=True,
+ comment="County ID from the Federal Information Processing Standard Publication 6-4.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["respondent_id_ferc714"],
+ ["core_ferc714__respondent_id.respondent_id_ferc714"],
+ name=op.f(
+ "fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc714__summarized_demand",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
+ sa.Column("demand_annual_mwh", sa.Float(), nullable=True),
+ sa.Column(
+ "population",
+ sa.Float(),
+ nullable=True,
+ comment="County population, sourced from Census DP1 data.",
+ ),
+ sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
+ sa.Column(
+ "population_density_km2",
+ sa.Float(),
+ nullable=True,
+ comment="Average population per sq. km area of a service territory.",
+ ),
+ sa.Column(
+ "demand_annual_per_capita_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Per-capita annual demand, averaged using Census county-level population estimates.",
+ ),
+ sa.Column(
+ "demand_density_mwh_km2",
+ sa.Float(),
+ nullable=True,
+ comment="Annual demand per km2 of a given service territory.",
+ ),
+ sa.Column("eia_code", sa.Integer(), nullable=True),
+ sa.Column(
+ "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
+ ),
+ sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
+ sa.Column(
+ "balancing_authority_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["respondent_id_ferc714"],
+ ["core_ferc714__respondent_id.respondent_id_ferc714"],
+ name=op.f(
+ "fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "respondent_id_ferc714",
+ "report_date",
+ name=op.f("pk_out_ferc714__summarized_demand"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_capacity_factor_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_capacity_factor_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_derived_generator_attributes",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_derived_generator_attributes"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_fuel_cost_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_fuel_cost_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__monthly_heat_rate_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__monthly_heat_rate_by_generator"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_plants",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "ash_impoundment",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
+ ),
+ sa.Column(
+ "ash_impoundment_lined",
+ sa.Boolean(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, is the impoundment lined?",
+ ),
+ sa.Column(
+ "ash_impoundment_status",
+ sa.Text(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "datum",
+ sa.Text(),
+ nullable=True,
+ comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
+ ),
+ sa.Column(
+ "energy_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility has energy storage capabilities.",
+ ),
+ sa.Column(
+ "ferc_cogen_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_cogen_status",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
+ ),
+ sa.Column(
+ "ferc_small_power_producer_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_small_power_producer",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "grid_voltage_1_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_2_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_3_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "iso_rto_code",
+ sa.Text(),
+ nullable=True,
+ comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
+ ),
+ sa.Column(
+ "liquefied_natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_local_distribution_company",
+ sa.Text(),
+ nullable=True,
+ comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
+ ),
+ sa.Column(
+ "natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have on-site storage of natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_1",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_2",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_3",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "net_metering",
+ sa.Boolean(),
+ nullable=True,
+ comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
+ ),
+ sa.Column(
+ "pipeline_notes",
+ sa.Text(),
+ nullable=True,
+ comment="Additional owner or operator of natural gas pipeline.",
+ ),
+ sa.Column(
+ "primary_purpose_id_naics",
+ sa.Integer(),
+ nullable=True,
+ comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
+ ),
+ sa.Column(
+ "regulatory_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the plant is regulated or non-regulated.",
+ ),
+ sa.Column(
+ "reporting_frequency_code",
+ sa.Enum("A", "AM", "M"),
+ nullable=True,
+ comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
+ ),
+ sa.Column(
+ "sector_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "sector_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "service_area",
+ sa.Text(),
+ nullable=True,
+ comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_id",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_state",
+ sa.Text(),
+ nullable=True,
+ comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "water_source",
+ sa.Text(),
+ nullable=True,
+ comment="Name of water source associated with the plant.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["balancing_authority_code_eia"],
+ ["core_eia__codes_balancing_authorities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["reporting_frequency_code"],
+ ["core_eia__codes_reporting_frequencies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["sector_id_eia"],
+ ["core_eia__codes_sector_consolidated.code"],
+ name=op.f(
+ "fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "report_date", name=op.f("pk_core_eia860__scd_plants")
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_boiler_fuel",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_core_eia923__monthly_boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_fuel_receipts_costs",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "contract_type_code",
+ sa.Enum("S", "C", "NC", "T"),
+ nullable=True,
+ comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
+ ),
+ sa.Column(
+ "contract_expiration_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date contract expires.Format: MMYY.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=True,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_group_code",
+ sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
+ nullable=True,
+ comment="Fuel groups used in the Electric Power Monthly",
+ ),
+ sa.Column(
+ "mine_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL mine identifier.",
+ ),
+ sa.Column(
+ "supplier_name",
+ sa.Text(),
+ nullable=True,
+ comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "primary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the longest distance transported.",
+ ),
+ sa.Column(
+ "secondary_transportation_mode_code",
+ sa.Text(),
+ nullable=True,
+ comment="Transportation mode for the second longest distance transported.",
+ ),
+ sa.Column(
+ "natural_gas_transport_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natural gas transportation service.",
+ ),
+ sa.Column(
+ "natural_gas_delivery_contract_type_code",
+ sa.Enum("firm", "interruptible"),
+ nullable=True,
+ comment="Contract type for natrual gas delivery service:",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["contract_type_code"],
+ ["core_eia__codes_contract_types.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mine_id_pudl"],
+ ["core_eia923__entity_coalmine.mine_id_pudl"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia"],
+ ["core_eia__entity_plants.plant_id_eia"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["primary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["secondary_transportation_mode_code"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_eia923__monthly_generation",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_core_eia923__monthly_generation"),
+ ),
+ )
+ op.create_table(
+ "core_epa__assn_epacamd_eia",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_epa",
+ sa.Integer(),
+ nullable=True,
+ comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
+ ),
+ sa.Column(
+ "emissions_unit_id_epa",
+ sa.Text(),
+ nullable=True,
+ comment="Emissions (smokestack) unit monitored by EPA CEMS.",
+ ),
+ sa.Column(
+ "generator_id_epa",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID used by the EPA.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=True, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_balance_sheet_assets_sched110",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "asset_type",
+ name=op.f("pk_core_ferc1__yearly_balance_sheet_assets_sched110"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_balance_sheet_liabilities_sched110",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "liability_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "liability_type",
+ name=op.f("pk_core_ferc1__yearly_balance_sheet_liabilities_sched110"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_cash_flows_sched120",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "amount_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "amount",
+ sa.Float(),
+ nullable=True,
+ comment="Reported amount of dollars. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "amount_type",
+ name=op.f("pk_core_ferc1__yearly_cash_flows_sched120"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_depreciation_by_function_sched219",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=True,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_core_ferc1__yearly_depreciation_by_function_sched219"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_depreciation_changes_sched219",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "depreciation_type",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_core_ferc1__yearly_depreciation_changes_sched219"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_depreciation_summary_sched336",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "ferc_account_label",
+ name=op.f("pk_core_ferc1__yearly_depreciation_summary_sched336"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_energy_dispositions_sched401",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_disposition_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_disposition_type",
+ name=op.f("pk_core_ferc1__yearly_energy_dispositions_sched401"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_energy_sources_sched401",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_source_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_source_type",
+ name=op.f("pk_core_ferc1__yearly_energy_sources_sched401"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_income_statements_sched114",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "income_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of income reported in income_statement_ferc1 table.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "income_type",
+ name=op.f("pk_core_ferc1__yearly_income_statements_sched114"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_operating_expenses_sched320",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "expense_type", sa.Text(), nullable=False, comment="The type of expense."
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "expense_type",
+ name=op.f("pk_core_ferc1__yearly_operating_expenses_sched320"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_operating_revenues_sched300",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "revenue_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of revenues.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "revenue_type",
+ name=op.f("pk_core_ferc1__yearly_operating_revenues_sched300"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_other_regulatory_liabilities_sched278",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "increase_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The increase during the reporting period of other regulatory liabilities.",
+ ),
+ sa.Column(
+ "account_detail",
+ sa.Text(),
+ nullable=True,
+ comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
+ ),
+ sa.Column(
+ "decrease_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The decrease during the reporting period of other regulatory liabilities.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_plant_in_service_sched204",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "additions",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of acquisition of items classified within the account.",
+ ),
+ sa.Column(
+ "retirements",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of disposal of items classified within the account.",
+ ),
+ sa.Column(
+ "adjustments",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of adjustments to the account.",
+ ),
+ sa.Column(
+ "transfers",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of transfers into (out of) the account.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "ferc_account_label",
+ name=op.f("pk_core_ferc1__yearly_plant_in_service_sched204"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_purchased_power_and_exchanges_sched326",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "seller_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the seller, or the other party in an exchange transaction.",
+ ),
+ sa.Column(
+ "purchase_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
+ ),
+ sa.Column(
+ "tariff",
+ sa.Text(),
+ nullable=True,
+ comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
+ ),
+ sa.Column(
+ "billing_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
+ ),
+ sa.Column(
+ "non_coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
+ ),
+ sa.Column(
+ "coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
+ ),
+ sa.Column(
+ "purchased_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
+ ),
+ sa.Column(
+ "purchased_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for energy storage.",
+ ),
+ sa.Column(
+ "purchased_other_than_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for other than energy storage.",
+ ),
+ sa.Column(
+ "received_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "delivered_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
+ ),
+ sa.Column(
+ "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
+ ),
+ sa.Column(
+ "other_charges",
+ sa.Float(),
+ nullable=True,
+ comment="Other charges, including out-of-period adjustments (USD).",
+ ),
+ sa.Column(
+ "total_settlement",
+ sa.Float(),
+ nullable=True,
+ comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["purchase_type_code"],
+ ["core_ferc1__codes_power_purchase_types.code"],
+ name=op.f(
+ "fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_retained_earnings_sched118",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "earnings_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of earnings.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "earnings_type",
+ name=op.f("pk_core_ferc1__yearly_retained_earnings_sched118"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_sales_by_rate_schedules_sched304",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "rate_schedule_type",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization of rate schedule type.",
+ ),
+ sa.Column(
+ "billing_status",
+ sa.Text(),
+ nullable=True,
+ comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
+ ),
+ sa.Column(
+ "rate_schedule_description",
+ sa.Text(),
+ nullable=True,
+ comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
+ ),
+ sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_transmission_lines_sched422",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "start_point",
+ sa.Text(),
+ nullable=True,
+ comment="The starting point of a transmission line.",
+ ),
+ sa.Column(
+ "end_point",
+ sa.Text(),
+ nullable=True,
+ comment="The end point of a transmission line.",
+ ),
+ sa.Column(
+ "operating_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
+ ),
+ sa.Column(
+ "designed_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
+ ),
+ sa.Column(
+ "supporting_structure_type",
+ sa.Text(),
+ nullable=True,
+ comment="Supporting structure of the transmission line.",
+ ),
+ sa.Column(
+ "transmission_line_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
+ ),
+ sa.Column(
+ "transmission_line_and_structures_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
+ ),
+ sa.Column(
+ "num_transmission_circuits",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of circuits in a transmission line.",
+ ),
+ sa.Column(
+ "conductor_size_and_material",
+ sa.Text(),
+ nullable=True,
+ comment="Size of transmission conductor and material of the transmission line.",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of Land and land rights for the transmission line.",
+ ),
+ sa.Column(
+ "capex_other",
+ sa.Float(),
+ nullable=True,
+ comment="Construction and other costs for the transmission line.",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total costs for the transmission line.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Operating expenses for the transmission line.",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance expenses for the transmission line.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Rent expenses for the transmission line.",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Overall expenses for the transmission line.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_utility_plant_summary_sched200",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "utility_type_other",
+ sa.Text(),
+ nullable=True,
+ comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).",
+ ),
+ sa.Column(
+ "utility_plant_asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "utility_plant_asset_type",
+ name=op.f("pk_core_ferc1__yearly_utility_plant_summary_sched200"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_plants_ferc1",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "plant_name_ferc1",
+ name=op.f("pk_core_pudl__assn_plants_ferc1"),
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_ferc1_dbf",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_ferc1_dbf",
+ sa.Integer(),
+ nullable=False,
+ comment="FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1_dbf", name=op.f("pk_core_pudl__assn_utilities_ferc1_dbf")
+ ),
+ )
+ op.create_table(
+ "core_pudl__assn_utilities_ferc1_xbrl",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_ferc1_xbrl",
+ sa.Text(),
+ nullable=False,
+ comment="FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1_xbrl",
+ name=op.f("pk_core_pudl__assn_utilities_ferc1_xbrl"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__boiler_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_out_eia923__boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__generation",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_out_eia923__generation"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_boiler_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_out_eia923__monthly_boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_out_eia923__monthly_generation"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia923__monthly_generation_fuel_by_generator"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__monthly_generation_fuel_by_generator_energy_source",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f(
+ "pk_out_eia923__monthly_generation_fuel_by_generator_energy_source"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia__monthly_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia"],
+ ["core_eia__entity_utilities.utility_id_eia"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia__monthly_generators"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_utilities",
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "plants_reported_owner",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_operator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_asset_manager",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "plants_reported_other_relationship",
+ sa.Boolean(),
+ nullable=True,
+ comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
+ ),
+ sa.Column(
+ "entity_type",
+ sa.Text(),
+ nullable=True,
+ comment="Entity type of principal owner.",
+ ),
+ sa.Column("attention_line", sa.Text(), nullable=True),
+ sa.Column("address_2", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="Four digit US Zip Code suffix.",
+ ),
+ sa.Column(
+ "contact_firstname",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_lastname",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 1.",
+ ),
+ sa.Column(
+ "contact_title",
+ sa.Text(),
+ nullable=True,
+ comment="Title of of utility contact 1.",
+ ),
+ sa.Column(
+ "phone_number",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 1.",
+ ),
+ sa.Column(
+ "phone_extension",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 1",
+ ),
+ sa.Column(
+ "contact_firstname_2",
+ sa.Text(),
+ nullable=True,
+ comment="First name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_lastname_2",
+ sa.Text(),
+ nullable=True,
+ comment="Last name of utility contact 2.",
+ ),
+ sa.Column(
+ "contact_title_2",
+ sa.Text(),
+ nullable=True,
+ comment="Title of utility contact 2.",
+ ),
+ sa.Column(
+ "phone_number_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone number for utility contact 2.",
+ ),
+ sa.Column(
+ "phone_extension_2",
+ sa.Text(),
+ nullable=True,
+ comment="Phone extension for utility contact 2",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_eia", "report_date", name=op.f("pk_out_eia__yearly_utilities")
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_balance_sheet_assets_sched110",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "asset_type",
+ name=op.f("pk_out_ferc1__yearly_balance_sheet_assets_sched110"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_balance_sheet_liabilities_sched110",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "liability_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "liability_type",
+ name=op.f("pk_out_ferc1__yearly_balance_sheet_liabilities_sched110"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_cash_flows_sched120",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "amount_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "amount",
+ sa.Float(),
+ nullable=True,
+ comment="Reported amount of dollars. This could be a balance or a change in value.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_cash_flows_sched120_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "amount_type",
+ name=op.f("pk_out_ferc1__yearly_cash_flows_sched120"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_depreciation_by_function_sched219",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=True,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_out_ferc1__yearly_depreciation_by_function_sched219"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_depreciation_changes_sched219",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "depreciation_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
+ ),
+ sa.Column(
+ "plant_status",
+ sa.Text(),
+ nullable=False,
+ comment="Utility plant financial status (in service, future, leased, total).",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "depreciation_type",
+ "plant_status",
+ "utility_type",
+ name=op.f("pk_out_ferc1__yearly_depreciation_changes_sched219"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_depreciation_summary_sched336",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_function",
+ sa.Text(),
+ nullable=False,
+ comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "plant_function",
+ "ferc_account_label",
+ name=op.f("pk_out_ferc1__yearly_depreciation_summary_sched336"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_energy_dispositions_sched401",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_disposition_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_disposition_type",
+ name=op.f("pk_out_ferc1__yearly_energy_dispositions_sched401"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_energy_sources_sched401",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "energy_source_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "energy_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Sources and uses of energy in MWh.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_energy_sources_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "energy_source_type",
+ name=op.f("pk_out_ferc1__yearly_energy_sources_sched401"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_income_statements_sched114",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "income_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of income reported in income_statement_ferc1 table.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_income_statements_sched114_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "income_type",
+ name=op.f("pk_out_ferc1__yearly_income_statements_sched114"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_operating_expenses_sched320",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "expense_type", sa.Text(), nullable=False, comment="The type of expense."
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "expense_type",
+ name=op.f("pk_out_ferc1__yearly_operating_expenses_sched320"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_operating_revenues_sched300",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "revenue_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of revenues.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "revenue_type",
+ name=op.f("pk_out_ferc1__yearly_operating_revenues_sched300"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_other_regulatory_liabilities_sched278",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "description",
+ sa.Text(),
+ nullable=True,
+ comment="Long human-readable description of the meaning of a code/label.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "increase_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The increase during the reporting period of other regulatory liabilities.",
+ ),
+ sa.Column(
+ "account_detail",
+ sa.Text(),
+ nullable=True,
+ comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
+ ),
+ sa.Column(
+ "decrease_in_other_regulatory_liabilities",
+ sa.Float(),
+ nullable=True,
+ comment="The decrease during the reporting period of other regulatory liabilities.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_plant_in_service_sched204",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=True,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "additions",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of acquisition of items classified within the account.",
+ ),
+ sa.Column(
+ "adjustments",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of adjustments to the account.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "ferc_account_label",
+ sa.Text(),
+ nullable=False,
+ comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
+ ),
+ sa.Column(
+ "retirements",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of disposal of items classified within the account.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "transfers",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of transfers into (out of) the account.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "ferc_account_label",
+ name=op.f("pk_out_ferc1__yearly_plant_in_service_sched204"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_purchased_power_and_exchanges_sched326",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "seller_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the seller, or the other party in an exchange transaction.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "billing_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
+ ),
+ sa.Column(
+ "coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
+ ),
+ sa.Column(
+ "delivered_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
+ ),
+ sa.Column(
+ "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
+ ),
+ sa.Column(
+ "non_coincident_peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
+ ),
+ sa.Column(
+ "other_charges",
+ sa.Float(),
+ nullable=True,
+ comment="Other charges, including out-of-period adjustments (USD).",
+ ),
+ sa.Column(
+ "purchase_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
+ ),
+ sa.Column(
+ "purchased_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
+ ),
+ sa.Column(
+ "purchased_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for energy storage.",
+ ),
+ sa.Column(
+ "purchased_other_than_storage_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Number of megawatt hours purchased during the period for other than energy storage.",
+ ),
+ sa.Column(
+ "received_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
+ ),
+ sa.Column(
+ "tariff",
+ sa.Text(),
+ nullable=True,
+ comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
+ ),
+ sa.Column(
+ "total_settlement",
+ sa.Float(),
+ nullable=True,
+ comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["purchase_type_code"],
+ ["core_ferc1__codes_power_purchase_types.code"],
+ name=op.f(
+ "fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_retained_earnings_sched118",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "earnings_type",
+ sa.Text(),
+ nullable=False,
+ comment="Label describing types of earnings.",
+ ),
+ sa.Column(
+ "starting_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at beginning of year.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "balance",
+ sa.Text(),
+ nullable=True,
+ comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
+ ),
+ sa.Column(
+ "ferc_account",
+ sa.Text(),
+ nullable=True,
+ comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "earnings_type",
+ name=op.f("pk_out_ferc1__yearly_retained_earnings_sched118"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_sales_by_rate_schedules_sched304",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "rate_schedule_type",
+ sa.Text(),
+ nullable=True,
+ comment="Categorization of rate schedule type.",
+ ),
+ sa.Column(
+ "billing_status",
+ sa.Text(),
+ nullable=True,
+ comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
+ ),
+ sa.Column(
+ "rate_schedule_description",
+ sa.Text(),
+ nullable=True,
+ comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
+ ),
+ sa.Column(
+ "sales_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Quantity of electricity sold in MWh.",
+ ),
+ sa.Column(
+ "dollar_value",
+ sa.Float(),
+ nullable=True,
+ comment="Dollar value of reported income, expense, asset, or liability.",
+ ),
+ sa.Column(
+ "avg_customers_per_month",
+ sa.Float(),
+ nullable=True,
+ comment="Average number of customers per month.",
+ ),
+ sa.Column(
+ "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
+ ),
+ sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_transmission_lines_sched422",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "start_point",
+ sa.Text(),
+ nullable=True,
+ comment="The starting point of a transmission line.",
+ ),
+ sa.Column(
+ "end_point",
+ sa.Text(),
+ nullable=True,
+ comment="The end point of a transmission line.",
+ ),
+ sa.Column(
+ "operating_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
+ ),
+ sa.Column(
+ "designed_voltage_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
+ ),
+ sa.Column(
+ "supporting_structure_type",
+ sa.Text(),
+ nullable=True,
+ comment="Supporting structure of the transmission line.",
+ ),
+ sa.Column(
+ "transmission_line_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
+ ),
+ sa.Column(
+ "transmission_line_and_structures_length_miles",
+ sa.Float(),
+ nullable=True,
+ comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
+ ),
+ sa.Column(
+ "num_transmission_circuits",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of circuits in a transmission line.",
+ ),
+ sa.Column(
+ "conductor_size_and_material",
+ sa.Text(),
+ nullable=True,
+ comment="Size of transmission conductor and material of the transmission line.",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_other",
+ sa.Float(),
+ nullable=True,
+ comment="Other costs associated with the plant (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_utility_plant_summary_sched200",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_type",
+ sa.Text(),
+ nullable=False,
+ comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
+ ),
+ sa.Column(
+ "utility_type_other",
+ sa.Text(),
+ nullable=True,
+ comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).",
+ ),
+ sa.Column(
+ "utility_plant_asset_type",
+ sa.Text(),
+ nullable=False,
+ comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
+ ),
+ sa.Column(
+ "row_type_xbrl",
+ sa.Enum("calculated_value", "reported_value", "correction"),
+ nullable=True,
+ comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
+ ),
+ sa.Column(
+ "ending_balance",
+ sa.Float(),
+ nullable=True,
+ comment="Account balance at end of year.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1"],
+ ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
+ name=op.f(
+ "fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "report_year",
+ "utility_type",
+ "utility_plant_asset_type",
+ name=op.f("pk_out_ferc1__yearly_utility_plant_summary_sched200"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__plants_utilities",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "utility_id_eia",
+ name=op.f("pk__out_eia__plants_utilities"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_heat_rate_by_unit",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=False,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "unit_id_pudl",
+ name=op.f("pk__out_eia__yearly_heat_rate_by_unit"),
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_hydroelectric_plants_sched406",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_hydroelectric_plants_sched406_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id",
+ name=op.f("pk__out_ferc1__yearly_hydroelectric_plants_sched406"),
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_plants_utilities",
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "utility_id_ferc1",
+ "plant_name_ferc1",
+ name=op.f("pk__out_ferc1__yearly_plants_utilities"),
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_pumped_storage_plants_sched408",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_pumped_storage_plants_sched408_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id",
+ name=op.f("pk__out_ferc1__yearly_pumped_storage_plants_sched408"),
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_small_plants_sched410",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_small_plants_sched410_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_small_plants_sched410_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk__out_ferc1__yearly_small_plants_sched410")
+ ),
+ )
+ op.create_table(
+ "_out_ferc1__yearly_steam_plants_sched402",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_annual_addition",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_addition_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_per_kw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per kw.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wo_retirement_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD) without retirements.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_fuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD) per megawatt-hour (Mwh).",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_nonfuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Investments in non-fuel production expenses per Mwh.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plants",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of electrical plant.",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_steam_plants_sched402_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk__out_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_ferc1__yearly_steam_plants_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk__out_ferc1__yearly_steam_plants_sched402")
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_boilers",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "boiler_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the boiler began or is planned to begin commercial operation.",
+ ),
+ sa.Column(
+ "boiler_status",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying boiler operational status.",
+ ),
+ sa.Column(
+ "boiler_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the boiler.",
+ ),
+ sa.Column(
+ "boiler_type",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
+ ),
+ sa.Column(
+ "firing_type_1",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_3",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_rate_using_coal_tons_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_oil_bbls_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_gas_mcf_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_other_fuels",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "waste_heat_input_mmbtu_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
+ ),
+ sa.Column(
+ "wet_dry_bottom",
+ sa.Text(),
+ nullable=True,
+ comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
+ ),
+ sa.Column(
+ "fly_ash_reinjection",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is capable of re-injecting fly ash.",
+ ),
+ sa.Column(
+ "hrsg",
+ sa.Boolean(),
+ nullable=True,
+ comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
+ ),
+ sa.Column(
+ "max_steam_flow_1000_lbs_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Maximum continuous steam flow at 100 percent load.",
+ ),
+ sa.Column(
+ "turndown_ratio",
+ sa.Float(),
+ nullable=True,
+ comment="The turndown ratio for the boiler.",
+ ),
+ sa.Column(
+ "efficiency_100pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "efficiency_50pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "air_flow_100pct_load_cubic_feet_per_minute",
+ sa.Float(),
+ nullable=True,
+ comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
+ ),
+ sa.Column(
+ "new_source_review",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is subject to New Source Review requirements.",
+ ),
+ sa.Column(
+ "new_source_review_date",
+ sa.Date(),
+ nullable=True,
+ comment="Month of issued New Source Review permit.",
+ ),
+ sa.Column(
+ "new_source_review_permit",
+ sa.Text(),
+ nullable=True,
+ comment="New Source Review permit number.",
+ ),
+ sa.Column(
+ "regulation_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
+ ),
+ sa.Column(
+ "regulation_so2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
+ ),
+ sa.Column(
+ "regulation_nox",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
+ ),
+ sa.Column(
+ "standard_particulate_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "standard_so2_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "standard_nox_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "unit_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "unit_so2",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "unit_nox",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "compliance_year_particulate",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
+ ),
+ sa.Column(
+ "compliance_year_nox",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
+ ),
+ sa.Column(
+ "compliance_year_so2",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "compliance_year_mercury",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_4",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_5",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_6",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of nitrogen oxide control manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code indicating the nitrogen oxide control burner manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control status code.",
+ ),
+ sa.Column(
+ "regulation_mercury",
+ sa.Text(),
+ nullable=True,
+ comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "standard_so2_percent_scrubbed",
+ sa.Float(),
+ nullable=True,
+ comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_status"],
+ ["core_eia__codes_boiler_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_type"],
+ ["core_eia__codes_boiler_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_1"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_2"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_3"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_4"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_5"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_6"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_status_code"],
+ ["core_eia__codes_nox_control_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id"],
+ [
+ "core_eia__entity_boilers.plant_id_eia",
+ "core_eia__entity_boilers.boiler_id",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_mercury"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_nox"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_particulate"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_so2"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_nox"],
+ ["core_eia__codes_nox_units.code"],
+ name=op.f("fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_particulate"],
+ ["core_eia__codes_particulate_units.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_so2"],
+ ["core_eia__codes_so2_units.code"],
+ name=op.f("fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["wet_dry_bottom"],
+ ["core_eia__codes_wet_dry_bottom.code"],
+ name=op.f(
+ "fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "report_date",
+ name=op.f("pk_core_eia860__scd_boilers"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id"],
+ [
+ "core_eia__entity_generators.plant_id_eia",
+ "core_eia__entity_generators.generator_id",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_core_eia860__scd_generators"),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_hydroelectric_plants_sched406",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.Column(
+ "plant_type",
+ sa.Enum(
+ "hydro",
+ "run_of_river",
+ "storage",
+ "na_category",
+ "run_of_river_with_storage",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_pumped_storage_plants_sched408",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "project_num",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC Licensed Project Number.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_small_plants_sched410",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_steam_plants_fuel_sched402",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_units",
+ sa.Enum(
+ "mmbtu",
+ "gramsU",
+ "kg",
+ "mwhth",
+ "kgal",
+ "bbl",
+ "klbs",
+ "mcf",
+ "gal",
+ "mwdth",
+ "btu",
+ "ton",
+ ),
+ nullable=True,
+ comment="Reported unit of measure for fuel.",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_burned",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_delivered",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "core_ferc1__yearly_steam_plants_sched402",
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "plant_type",
+ sa.Enum(
+ "geothermal",
+ "na_category",
+ "wind",
+ "photovoltaic",
+ "combined_cycle",
+ "combustion_turbine",
+ "internal_combustion",
+ "nuclear",
+ "steam",
+ "solar_thermal",
+ ),
+ nullable=True,
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_plants",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of electrical plant.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_core_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_fuel_receipts_costs",
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_received_units",
+ sa.Float(),
+ nullable=True,
+ comment="Quanity of fuel received in tons, barrel, or Mcf.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "mercury_content_ppm",
+ sa.Float(),
+ nullable=True,
+ comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
+ ),
+ sa.Column("moisture_content_pct", sa.Float(), nullable=True),
+ sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_combined",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption for electric generation of the fuel type in physical unit.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f("pk_out_eia923__yearly_generation_fuel_combined"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_plants",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "ash_impoundment",
+ sa.Boolean(),
+ nullable=True,
+ comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
+ ),
+ sa.Column(
+ "ash_impoundment_lined",
+ sa.Boolean(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, is the impoundment lined?",
+ ),
+ sa.Column(
+ "ash_impoundment_status",
+ sa.Text(),
+ nullable=True,
+ comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying a balancing authority.",
+ ),
+ sa.Column(
+ "balancing_authority_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the balancing authority.",
+ ),
+ sa.Column(
+ "datum",
+ sa.Text(),
+ nullable=True,
+ comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
+ ),
+ sa.Column(
+ "energy_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility has energy storage capabilities.",
+ ),
+ sa.Column(
+ "ferc_cogen_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_cogen_status",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
+ ),
+ sa.Column(
+ "ferc_exempt_wholesale_generator",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
+ ),
+ sa.Column(
+ "ferc_small_power_producer_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_small_power_producer",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility_docket_no",
+ sa.Text(),
+ nullable=True,
+ comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
+ ),
+ sa.Column(
+ "grid_voltage_1_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_2_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "grid_voltage_3_kv",
+ sa.Float(),
+ nullable=True,
+ comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
+ ),
+ sa.Column(
+ "iso_rto_code",
+ sa.Text(),
+ nullable=True,
+ comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
+ ),
+ sa.Column(
+ "liquefied_natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_local_distribution_company",
+ sa.Text(),
+ nullable=True,
+ comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
+ ),
+ sa.Column(
+ "natural_gas_storage",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates if the facility have on-site storage of natural gas.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_1",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_2",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "natural_gas_pipeline_name_3",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
+ ),
+ sa.Column(
+ "nerc_region",
+ sa.Enum(
+ "BASN",
+ "CALN",
+ "CALS",
+ "DSW",
+ "ASCC",
+ "ISONE",
+ "ERCOT",
+ "NORW",
+ "NYISO",
+ "PJM",
+ "ROCK",
+ "ECAR",
+ "FRCC",
+ "HICC",
+ "MAAC",
+ "MAIN",
+ "MAPP",
+ "MRO",
+ "NPCC",
+ "RFC",
+ "SERC",
+ "SPP",
+ "TRE",
+ "WECC",
+ "WSCC",
+ "MISO",
+ "ECAR_MAAC",
+ "MAPP_WECC",
+ "RFC_SERC",
+ "SPP_WECC",
+ "MRO_WECC",
+ "ERCOT_SPP",
+ "SPP_TRE",
+ "ERCOT_TRE",
+ "MISO_TRE",
+ "VI",
+ "GU",
+ "PR",
+ "AS",
+ "UNK",
+ ),
+ nullable=True,
+ comment="NERC region in which the plant is located",
+ ),
+ sa.Column(
+ "net_metering",
+ sa.Boolean(),
+ nullable=True,
+ comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
+ ),
+ sa.Column(
+ "pipeline_notes",
+ sa.Text(),
+ nullable=True,
+ comment="Additional owner or operator of natural gas pipeline.",
+ ),
+ sa.Column(
+ "primary_purpose_id_naics",
+ sa.Integer(),
+ nullable=True,
+ comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
+ ),
+ sa.Column(
+ "regulatory_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the plant is regulated or non-regulated.",
+ ),
+ sa.Column(
+ "reporting_frequency_code",
+ sa.Enum("A", "AM", "M"),
+ nullable=True,
+ comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
+ ),
+ sa.Column(
+ "sector_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "sector_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
+ ),
+ sa.Column(
+ "service_area",
+ sa.Text(),
+ nullable=True,
+ comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_id",
+ sa.Integer(),
+ nullable=True,
+ comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_name",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "transmission_distribution_owner_state",
+ sa.Text(),
+ nullable=True,
+ comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "water_source",
+ sa.Text(),
+ nullable=True,
+ comment="Name of water source associated with the plant.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "balancing_authority_code_eia_consistent_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Percentage consistency of balancing authority code across entity records.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["balancing_authority_code_eia"],
+ ["core_eia__codes_balancing_authorities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "report_date"],
+ [
+ "core_eia860__scd_plants.plant_id_eia",
+ "core_eia860__scd_plants.report_date",
+ ],
+ name=op.f("fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["reporting_frequency_code"],
+ ["core_eia__codes_reporting_frequencies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["sector_id_eia"],
+ ["core_eia__codes_sector_consolidated.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia", "report_date", name=op.f("pk_out_eia__yearly_plants")
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_all_plants",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_annual_addition",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_addition_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_per_kw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per kw.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wo_retirement_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD) without retirements.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_nonfuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Investments in non-fuel production expenses per Mwh.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "ferc_license_id",
+ sa.Text(),
+ nullable=True,
+ comment="The FERC license ID of a project.",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk_out_ferc1__yearly_all_plants")
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_steam_plants_fuel_by_plant_sched402",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=False,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=False,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "coal_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Coal cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "coal_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Coal heat content as a percentage of overall fuel heat content (mmBTU).",
+ ),
+ sa.Column(
+ "fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total fuel cost for plant (in $USD).",
+ ),
+ sa.Column(
+ "fuel_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total heat content for plant (in MMBtu).",
+ ),
+ sa.Column(
+ "gas_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Natural gas cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "gas_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Natural gas heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.Column(
+ "nuclear_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Nuclear cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "nuclear_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Nuclear heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.Column(
+ "oil_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Oil cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "oil_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Oil heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.Column(
+ "primary_fuel_by_cost",
+ sa.Text(),
+ nullable=True,
+ comment="Primary fuel for plant as a percentage of cost.",
+ ),
+ sa.Column(
+ "primary_fuel_by_mmbtu",
+ sa.Text(),
+ nullable=True,
+ comment="Primary fuel for plant as a percentage of heat content.",
+ ),
+ sa.Column(
+ "waste_fraction_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Waste-heat cost as a percentage of overall fuel cost.",
+ ),
+ sa.Column(
+ "waste_fraction_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_year",
+ "utility_id_ferc1",
+ "plant_name_ferc1",
+ name=op.f("pk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402"),
+ ),
+ )
+ op.create_table(
+ "out_ferc1__yearly_steam_plants_fuel_sched402",
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_total_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of consumed fuel.",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_burned",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_unit_delivered",
+ sa.Float(),
+ nullable=True,
+ comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_units",
+ sa.Enum(
+ "mmbtu",
+ "gramsU",
+ "kg",
+ "mwhth",
+ "kgal",
+ "bbl",
+ "klbs",
+ "mcf",
+ "gal",
+ "mwdth",
+ "btu",
+ "ton",
+ ),
+ nullable=True,
+ comment="Reported unit of measure for fuel.",
+ ),
+ sa.Column(
+ "record_id",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_sched402_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id", name=op.f("pk_out_ferc1__yearly_steam_plants_fuel_sched402")
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_capacity_factor_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_capacity_factor_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_derived_generator_attributes",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_derived_generator_attributes"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_fuel_cost_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_fuel_cost_by_generator"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_generators",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk__out_eia__yearly_generators"),
+ ),
+ )
+ op.create_table(
+ "_out_eia__yearly_heat_rate_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk__out_eia__yearly_heat_rate_by_generator"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__assn_boiler_cooling",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "cooling_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="The cooling system identification number reported to EIA.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "boiler_id",
+ "cooling_id_eia",
+ name=op.f("pk_core_eia860__assn_boiler_cooling"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__assn_boiler_generator",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA-assigned unit identification code.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "boiler_generator_assn_type_code",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.",
+ ),
+ sa.Column(
+ "steam_plant_type_code",
+ sa.Integer(),
+ nullable=True,
+ comment="Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_generator_assn_type_code"],
+ ["core_eia__codes_boiler_generator_assn_types.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["steam_plant_type_code"],
+ ["core_eia__codes_steam_plant_types.code"],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "report_date",
+ "generator_id",
+ "boiler_id",
+ name=op.f("pk_core_eia860__assn_boiler_generator"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__assn_boiler_stack_flue",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "stack_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.",
+ ),
+ sa.Column(
+ "flue_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.",
+ ),
+ sa.Column(
+ "stack_flue_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.",
+ ),
+ sa.Column(
+ "stack_flue_id_pudl",
+ sa.Text(),
+ nullable=False,
+ comment="A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "boiler_id",
+ "stack_flue_id_pudl",
+ name=op.f("pk_core_eia860__assn_boiler_stack_flue"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__scd_ownership",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "owner_utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "owner_utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the EIA owner utility.",
+ ),
+ sa.Column(
+ "owner_state",
+ sa.Enum(
+ "AS",
+ "ID",
+ "UT",
+ "IL",
+ "OH",
+ "AL",
+ "KY",
+ "NH",
+ "NT",
+ "ND",
+ "KS",
+ "MN",
+ "MI",
+ "OR",
+ "CO",
+ "QC",
+ "AB",
+ "MP",
+ "WI",
+ "BC",
+ "AZ",
+ "SD",
+ "RI",
+ "ME",
+ "MO",
+ "NC",
+ "GA",
+ "YT",
+ "ON",
+ "CA",
+ "DE",
+ "FL",
+ "NE",
+ "NM",
+ "VA",
+ "WA",
+ "NJ",
+ "DC",
+ "MS",
+ "GU",
+ "WV",
+ "CT",
+ "AK",
+ "WY",
+ "TN",
+ "TX",
+ "PR",
+ "SC",
+ "MD",
+ "IN",
+ "NB",
+ "NS",
+ "LA",
+ "OK",
+ "SK",
+ "VI",
+ "NV",
+ "MT",
+ "IA",
+ "NY",
+ "PA",
+ "MB",
+ "MA",
+ "VT",
+ "AR",
+ "PE",
+ "NU",
+ "HI",
+ "NL",
+ ),
+ nullable=True,
+ comment="Two letter ISO-3166 political subdivision code.",
+ ),
+ sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
+ sa.Column(
+ "owner_country",
+ sa.Enum("USA", "CAN"),
+ nullable=True,
+ comment="Three letter ISO-3166 country code.",
+ ),
+ sa.Column(
+ "owner_street_address",
+ sa.Text(),
+ nullable=True,
+ comment="Steet address of owner.",
+ ),
+ sa.Column(
+ "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["owner_utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "owner_utility_id_eia",
+ name=op.f("pk_core_eia860__scd_ownership"),
+ ),
+ )
+ op.create_table(
+ "core_eia860__yearly_boiler_emissions_control_equipment_assn",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "emission_control_id_type",
+ sa.Text(),
+ nullable=False,
+ comment="The type of emissions control id: so2, nox, particulate, or mercury.",
+ ),
+ sa.Column(
+ "emission_control_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "boiler_id",
+ "emission_control_id_type",
+ "emission_control_id_eia",
+ name=op.f("pk_core_eia860__yearly_boiler_emissions_control_equipment_assn"),
+ ),
+ )
+ op.create_table(
+ "mega_generators_eia",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_pudl__yearly_assn_eia_ferc1_plant_parts",
+ sa.Column(
+ "record_id_ferc1",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
+ ),
+ sa.Column(
+ "record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Identifier for EIA plant parts analysis records.",
+ ),
+ sa.Column(
+ "match_type",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.",
+ ),
+ sa.Column(
+ "plant_name_ppe",
+ sa.Text(),
+ nullable=True,
+ comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
+ ),
+ sa.Column(
+ "plant_part",
+ sa.Enum(
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_operating_year",
+ "plant_gen",
+ "plant_match_ferc1",
+ "plant_prime_mover",
+ "plant_technology",
+ "plant",
+ "plant_ferc_acct",
+ ),
+ nullable=True,
+ comment="The part of the plant a record corresponds to.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "true_gran",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
+ ),
+ sa.Column(
+ "appro_part_label",
+ sa.Enum(
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_operating_year",
+ "plant_gen",
+ "plant_match_ferc1",
+ "plant_prime_mover",
+ "plant_technology",
+ "plant",
+ "plant_ferc_acct",
+ ),
+ nullable=True,
+ comment="Plant part of the associated true granularity record.",
+ ),
+ sa.Column(
+ "appro_record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA record ID of the associated true granularity record.",
+ ),
+ sa.Column(
+ "record_count",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "ownership_dupe",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether a plant part record has a duplicate record with different ownership status.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column(
+ "total_fuel_cost_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "net_generation_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "capacity_mw_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "total_mmbtu_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl_eia",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "installation_year_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "plant_part_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
+ ),
+ sa.Column(
+ "utility_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
+ ),
+ sa.Column(
+ "utility_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
+ ),
+ sa.Column(
+ "plant_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
+ ),
+ sa.Column(
+ "plant_name_ferc1",
+ sa.Text(),
+ nullable=True,
+ comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
+ ),
+ sa.Column(
+ "asset_retirement_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Asset retirement cost (USD).",
+ ),
+ sa.Column("avg_num_employees", sa.Float(), nullable=True),
+ sa.Column(
+ "capacity_factor_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "capex_annual_addition",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_addition_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total`.",
+ ),
+ sa.Column(
+ "capex_annual_per_kw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per kw.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mw_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MW.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Annual capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_annual_per_mwh_rolling",
+ sa.Float(),
+ nullable=True,
+ comment="Year-to-date capital addition into `capex_total` per MWh.",
+ ),
+ sa.Column(
+ "capex_equipment",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: equipment (USD).",
+ ),
+ sa.Column(
+ "capex_land",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: land and land rights (USD).",
+ ),
+ sa.Column(
+ "capex_per_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
+ ),
+ sa.Column(
+ "capex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: structures and improvements (USD).",
+ ),
+ sa.Column(
+ "capex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD).",
+ ),
+ sa.Column(
+ "capex_wo_retirement_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total cost of plant (USD) without retirements.",
+ ),
+ sa.Column(
+ "construction_type",
+ sa.Enum("conventional", "outdoor", "semioutdoor"),
+ nullable=True,
+ comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
+ ),
+ sa.Column(
+ "construction_year_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "construction_year_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "installation_year_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "not_water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when not limited by condenser water.",
+ ),
+ sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
+ sa.Column(
+ "opex_boiler",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of boiler (or reactor) plant.",
+ ),
+ sa.Column(
+ "opex_coolants",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of coolants and water (nuclear plants only)",
+ ),
+ sa.Column(
+ "opex_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: electric expenses (USD).",
+ ),
+ sa.Column(
+ "opex_engineering",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_fuel",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: fuel (USD).",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "opex_misc_power",
+ sa.Float(),
+ nullable=True,
+ comment="Miscellaneous steam (or nuclear) expenses.",
+ ),
+ sa.Column(
+ "opex_misc_steam",
+ sa.Float(),
+ nullable=True,
+ comment="Maintenance of miscellaneous steam (or nuclear) plant.",
+ ),
+ sa.Column(
+ "opex_nonfuel_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Investments in non-fuel production expenses per Mwh.",
+ ),
+ sa.Column(
+ "opex_operations",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: operations, supervision, and engineering (USD).",
+ ),
+ sa.Column(
+ "opex_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses (USD per MWh generated).",
+ ),
+ sa.Column(
+ "opex_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of electric plant (USD).",
+ ),
+ sa.Column(
+ "opex_production_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total operating expenses.",
+ ),
+ sa.Column(
+ "opex_rents",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: rents (USD).",
+ ),
+ sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
+ sa.Column(
+ "opex_steam_other",
+ sa.Float(),
+ nullable=True,
+ comment="Steam from other sources.",
+ ),
+ sa.Column(
+ "opex_structures",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of structures (USD).",
+ ),
+ sa.Column(
+ "opex_total_nonfuel",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "opex_transfer",
+ sa.Float(),
+ nullable=True,
+ comment="Steam transferred (Credit).",
+ ),
+ sa.Column(
+ "peak_demand_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
+ ),
+ sa.Column(
+ "plant_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability in megawatts.",
+ ),
+ sa.Column(
+ "plant_hours_connected_while_generating",
+ sa.Float(),
+ nullable=True,
+ comment="Hours the plant was connected to load while generating in the report year.",
+ ),
+ sa.Column("plant_type", sa.Text(), nullable=True),
+ sa.Column(
+ "water_limited_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Plant capacity in MW when limited by condenser water.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column("fuel_type", sa.Text(), nullable=True),
+ sa.Column(
+ "license_id_ferc1",
+ sa.Integer(),
+ nullable=True,
+ comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
+ ),
+ sa.Column(
+ "opex_maintenance",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: Maintenance (USD).",
+ ),
+ sa.Column(
+ "opex_total",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses, excluding fuel (USD).",
+ ),
+ sa.Column(
+ "capex_facilities",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "capex_roads",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: roads, railroads, and bridges (USD).",
+ ),
+ sa.Column(
+ "net_capacity_adverse_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the least favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "net_capacity_favorable_conditions_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Net plant capability under the most favorable operating conditions, in megawatts.",
+ ),
+ sa.Column(
+ "opex_dams",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
+ ),
+ sa.Column(
+ "opex_generation_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: miscellaneous power generation expenses (USD).",
+ ),
+ sa.Column(
+ "opex_hydraulic",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: hydraulic expenses (USD).",
+ ),
+ sa.Column(
+ "opex_misc_plant",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
+ ),
+ sa.Column(
+ "opex_water_for_power",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: water for power (USD).",
+ ),
+ sa.Column(
+ "ferc_license_id",
+ sa.Text(),
+ nullable=True,
+ comment="The FERC license ID of a project.",
+ ),
+ sa.Column(
+ "capex_equipment_electric",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: accessory electric equipment (USD).",
+ ),
+ sa.Column(
+ "capex_equipment_misc",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: miscellaneous power plant equipment (USD).",
+ ),
+ sa.Column(
+ "capex_wheels_turbines_generators",
+ sa.Float(),
+ nullable=True,
+ comment="Cost of plant: water wheels, turbines, and generators (USD).",
+ ),
+ sa.Column(
+ "energy_used_for_pumping_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy used for pumping, in megawatt-hours.",
+ ),
+ sa.Column(
+ "net_load_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
+ ),
+ sa.Column(
+ "opex_production_before_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Total production expenses before pumping (USD).",
+ ),
+ sa.Column(
+ "opex_pumped_storage",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: pumped storage (USD).",
+ ),
+ sa.Column(
+ "opex_pumping",
+ sa.Float(),
+ nullable=True,
+ comment="Production expenses: We are here to PUMP YOU UP! (USD).",
+ ),
+ sa.Column(
+ "total_fuel_cost_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl_ferc1",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_ferc1", "plant_name_ferc1"],
+ [
+ "core_pudl__assn_plants_ferc1.utility_id_ferc1",
+ "core_pudl__assn_plants_ferc1.plant_name_ferc1",
+ ],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_ferc1_core_pudl__assn_plants_ferc1"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id_ferc1",
+ name=op.f("pk_out_pudl__yearly_assn_eia_ferc1_plant_parts"),
+ ),
+ )
+ op.create_table(
+ "out_eia860__yearly_ownership",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "owner_utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "owner_utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the EIA owner utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "owner_state",
+ sa.Enum(
+ "AS",
+ "ID",
+ "UT",
+ "IL",
+ "OH",
+ "AL",
+ "KY",
+ "NH",
+ "NT",
+ "ND",
+ "KS",
+ "MN",
+ "MI",
+ "OR",
+ "CO",
+ "QC",
+ "AB",
+ "MP",
+ "WI",
+ "BC",
+ "AZ",
+ "SD",
+ "RI",
+ "ME",
+ "MO",
+ "NC",
+ "GA",
+ "YT",
+ "ON",
+ "CA",
+ "DE",
+ "FL",
+ "NE",
+ "NM",
+ "VA",
+ "WA",
+ "NJ",
+ "DC",
+ "MS",
+ "GU",
+ "WV",
+ "CT",
+ "AK",
+ "WY",
+ "TN",
+ "TX",
+ "PR",
+ "SC",
+ "MD",
+ "IN",
+ "NB",
+ "NS",
+ "LA",
+ "OK",
+ "SK",
+ "VI",
+ "NV",
+ "MT",
+ "IA",
+ "NY",
+ "PA",
+ "MB",
+ "MA",
+ "VT",
+ "AR",
+ "PE",
+ "NU",
+ "HI",
+ "NL",
+ ),
+ nullable=True,
+ comment="Two letter ISO-3166 political subdivision code.",
+ ),
+ sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
+ sa.Column(
+ "owner_country",
+ sa.Enum("USA", "CAN"),
+ nullable=True,
+ comment="Three letter ISO-3166 country code.",
+ ),
+ sa.Column(
+ "owner_street_address",
+ sa.Text(),
+ nullable=True,
+ comment="Steet address of owner.",
+ ),
+ sa.Column(
+ "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["owner_utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "owner_utility_id_eia",
+ name=op.f("pk_out_eia860__yearly_ownership"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_boiler_fuel",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "fuel_consumed_units",
+ sa.Float(),
+ nullable=True,
+ comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_mmbtu_per_unit",
+ sa.Float(),
+ nullable=True,
+ comment="Heat content of the fuel in millions of Btus per physical unit.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "sulfur_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
+ ),
+ sa.Column(
+ "ash_content_pct",
+ sa.Float(),
+ nullable=True,
+ comment="Ash content percentage by weight to the nearest 0.1 percent.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "energy_source_code",
+ "prime_mover_code",
+ "report_date",
+ name=op.f("pk_out_eia923__yearly_boiler_fuel"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "generator_id",
+ "report_date",
+ name=op.f("pk_out_eia923__yearly_generation"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia923__yearly_generation_fuel_by_generator"),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ name=op.f(
+ "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=False,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code",
+ sa.Text(),
+ nullable=False,
+ comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=False,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "energy_source_code_num",
+ sa.Enum(
+ "energy_source_code_1",
+ "energy_source_code_2",
+ "energy_source_code_3",
+ "energy_source_code_4",
+ "energy_source_code_5",
+ "energy_source_code_6",
+ "energy_source_code_7",
+ "energy_source_code_8",
+ ),
+ nullable=True,
+ comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "fuel_consumed_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
+ ),
+ sa.Column(
+ "fuel_consumed_for_electricity_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ "prime_mover_code",
+ "energy_source_code",
+ "utility_id_eia",
+ "ownership_record_type",
+ name=op.f(
+ "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_boilers",
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
+ ),
+ sa.Column(
+ "air_flow_100pct_load_cubic_feet_per_minute",
+ sa.Float(),
+ nullable=True,
+ comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
+ ),
+ sa.Column(
+ "boiler_fuel_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_fuel_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
+ ),
+ sa.Column(
+ "boiler_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of boiler manufacturer.",
+ ),
+ sa.Column(
+ "boiler_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for boiler manufacturer.",
+ ),
+ sa.Column(
+ "boiler_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the boiler began or is planned to begin commercial operation.",
+ ),
+ sa.Column(
+ "boiler_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the boiler.",
+ ),
+ sa.Column(
+ "boiler_status",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code identifying boiler operational status.",
+ ),
+ sa.Column(
+ "boiler_type",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "compliance_year_mercury",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
+ ),
+ sa.Column(
+ "compliance_year_nox",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
+ ),
+ sa.Column(
+ "compliance_year_particulate",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
+ ),
+ sa.Column(
+ "compliance_year_so2",
+ sa.Integer(),
+ nullable=True,
+ comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "efficiency_100pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "efficiency_50pct_load",
+ sa.Float(),
+ nullable=True,
+ comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
+ ),
+ sa.Column(
+ "firing_rate_using_coal_tons_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_gas_mcf_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_oil_bbls_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
+ ),
+ sa.Column(
+ "firing_rate_using_other_fuels",
+ sa.Float(),
+ nullable=True,
+ comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
+ ),
+ sa.Column(
+ "firing_type_1",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "firing_type_3",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code indicating the type of firing used by this boiler.",
+ ),
+ sa.Column(
+ "fly_ash_reinjection",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is capable of re-injecting fly ash.",
+ ),
+ sa.Column(
+ "hrsg",
+ sa.Boolean(),
+ nullable=True,
+ comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "max_steam_flow_1000_lbs_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Maximum continuous steam flow at 100 percent load.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_4",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_5",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_existing_strategy_6",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "mercury_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent mercury regulation.",
+ ),
+ sa.Column(
+ "new_source_review",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the boiler is subject to New Source Review requirements.",
+ ),
+ sa.Column(
+ "new_source_review_date",
+ sa.Date(),
+ nullable=True,
+ comment="Month of issued New Source Review permit.",
+ ),
+ sa.Column(
+ "new_source_review_permit",
+ sa.Text(),
+ nullable=True,
+ comment="New Source Review permit number.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer",
+ sa.Text(),
+ nullable=True,
+ comment="Name of nitrogen oxide control manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_manufacturer_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code indicating the nitrogen oxide control burner manufacturer.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
+ ),
+ sa.Column(
+ "nox_control_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="Nitrogen oxide control status code.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "particulate_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "regulation_mercury",
+ sa.Text(),
+ nullable=True,
+ comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
+ ),
+ sa.Column(
+ "regulation_nox",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
+ ),
+ sa.Column(
+ "regulation_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
+ ),
+ sa.Column(
+ "regulation_so2",
+ sa.Text(),
+ nullable=True,
+ comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_existing_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_out_of_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_planned_caaa_compliance_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_1",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_2",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "so2_control_proposed_strategy_3",
+ sa.Text(),
+ nullable=True,
+ comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "standard_nox_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "standard_particulate_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "standard_so2_percent_scrubbed",
+ sa.Float(),
+ nullable=True,
+ comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
+ ),
+ sa.Column(
+ "standard_so2_rate",
+ sa.Float(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "turndown_ratio",
+ sa.Float(),
+ nullable=True,
+ comment="The turndown ratio for the boiler.",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "unit_nox",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
+ ),
+ sa.Column(
+ "unit_particulate",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for particulate matter.",
+ ),
+ sa.Column(
+ "unit_so2",
+ sa.Text(),
+ nullable=True,
+ comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
+ ),
+ sa.Column(
+ "waste_heat_input_mmbtu_per_hour",
+ sa.Float(),
+ nullable=True,
+ comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
+ ),
+ sa.Column(
+ "wet_dry_bottom",
+ sa.Text(),
+ nullable=True,
+ comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_fuel_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_status"],
+ ["core_eia__codes_boiler_status.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["boiler_type"],
+ ["core_eia__codes_boiler_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_1"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_2"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["firing_type_3"],
+ ["core_eia__codes_firing_types.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_4"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_5"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_existing_strategy_6"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_1"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_2"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["mercury_control_proposed_strategy_3"],
+ ["core_eia__codes_mercury_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_manufacturer_code"],
+ ["core_eia__codes_environmental_equipment_manufacturers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_nox_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["nox_control_status_code"],
+ ["core_eia__codes_nox_control_status.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["particulate_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_particulate_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "boiler_id", "report_date"],
+ [
+ "core_eia860__scd_boilers.plant_id_eia",
+ "core_eia860__scd_boilers.boiler_id",
+ "core_eia860__scd_boilers.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_mercury"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_nox"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_particulate"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["regulation_so2"],
+ ["core_eia__codes_regulations.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_existing_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_out_of_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_1"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_2"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["so2_control_planned_caaa_compliance_strategy_3"],
+ ["core_eia__codes_so2_compliance_strategies.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_nox"],
+ ["core_eia__codes_nox_units.code"],
+ name=op.f("fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_particulate"],
+ ["core_eia__codes_particulate_units.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["unit_so2"],
+ ["core_eia__codes_so2_units.code"],
+ name=op.f("fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["wet_dry_bottom"],
+ ["core_eia__codes_wet_dry_bottom.code"],
+ name=op.f(
+ "fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "plant_id_eia",
+ "boiler_id",
+ "report_date",
+ name=op.f("pk_out_eia__yearly_boilers"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_generators",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=False,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=False,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "associated_combined_heat_power",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is associated with a combined heat and power system",
+ ),
+ sa.Column(
+ "bga_source",
+ sa.Text(),
+ nullable=True,
+ comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
+ ),
+ sa.Column(
+ "bypass_heat_recovery",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can this generator operate while bypassing the heat recovery steam generator?",
+ ),
+ sa.Column(
+ "carbon_capture",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses carbon capture technology.",
+ ),
+ sa.Column("city", sa.Text(), nullable=True),
+ sa.Column(
+ "cofire_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator co-fire fuels?.",
+ ),
+ sa.Column("county", sa.Text(), nullable=True, comment="County name."),
+ sa.Column(
+ "current_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The most recently updated effective date on which the generator is scheduled to start operation",
+ ),
+ sa.Column(
+ "data_maturity",
+ sa.Text(),
+ nullable=True,
+ comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
+ ),
+ sa.Column(
+ "deliver_power_transgrid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicate whether the generator can deliver power to the transmission grid.",
+ ),
+ sa.Column(
+ "distributed_generation",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the generator is considered distributed generation",
+ ),
+ sa.Column(
+ "duct_burners",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
+ ),
+ sa.Column(
+ "energy_source_1_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_1_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 1.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_1",
+ sa.Text(),
+ nullable=True,
+ comment="Primary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_2",
+ sa.Text(),
+ nullable=True,
+ comment="Secondary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_2_transport_3",
+ sa.Text(),
+ nullable=True,
+ comment="Tertiary mode of transport for energy source 2.",
+ ),
+ sa.Column(
+ "energy_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the second most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the third most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fourth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_5",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the fifth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_source_code_6",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the sixth most predominant type of energy that fuels the generator",
+ ),
+ sa.Column(
+ "energy_storage_capacity_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Energy storage capacity in MWh (e.g. for batteries).",
+ ),
+ sa.Column(
+ "ferc_qualifying_facility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
+ ),
+ sa.Column(
+ "fluidized_bed_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses fluidized bed technology",
+ ),
+ sa.Column(
+ "fuel_type_count",
+ sa.Integer(),
+ nullable=True,
+ comment="A count of how many different simple energy sources there are associated with a generator.",
+ ),
+ sa.Column(
+ "latitude",
+ sa.Float(),
+ nullable=True,
+ comment="Latitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "longitude",
+ sa.Float(),
+ nullable=True,
+ comment="Longitude of the plant's location, in degrees.",
+ ),
+ sa.Column(
+ "minimum_load_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The minimum load at which the generator can operate at continuosuly.",
+ ),
+ sa.Column(
+ "multiple_fuels",
+ sa.Boolean(),
+ nullable=True,
+ comment="Can the generator burn multiple fuels?",
+ ),
+ sa.Column(
+ "nameplate_power_factor",
+ sa.Float(),
+ nullable=True,
+ comment="The nameplate power factor of the generator.",
+ ),
+ sa.Column(
+ "net_capacity_mwdc",
+ sa.Float(),
+ nullable=True,
+ comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
+ ),
+ sa.Column(
+ "operating_switch",
+ sa.Text(),
+ nullable=True,
+ comment="Indicates whether the fuel switching generator can switch when operating",
+ ),
+ sa.Column(
+ "operational_status_code",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset.",
+ ),
+ sa.Column(
+ "original_planned_generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date the generator was originally scheduled to be operational",
+ ),
+ sa.Column(
+ "other_combustion_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses other combustion technologies",
+ ),
+ sa.Column(
+ "other_modifications_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
+ ),
+ sa.Column(
+ "other_planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are there other modifications planned for the generator.",
+ ),
+ sa.Column(
+ "owned_by_non_utility",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether any part of generator is owned by a nonutilty",
+ ),
+ sa.Column(
+ "ownership_code",
+ sa.Text(),
+ nullable=True,
+ comment="Identifies the ownership for each generator.",
+ ),
+ sa.Column(
+ "planned_derate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
+ ),
+ sa.Column(
+ "planned_energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="New energy source code for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_modifications",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_summer_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_derate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_net_winter_capacity_uprate_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
+ ),
+ sa.Column(
+ "planned_new_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The expected new namplate capacity for the generator.",
+ ),
+ sa.Column(
+ "planned_new_prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="New prime mover for the planned repowered generator.",
+ ),
+ sa.Column(
+ "planned_repower_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
+ ),
+ sa.Column(
+ "planned_uprate_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
+ ),
+ sa.Column(
+ "previously_canceled",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
+ ),
+ sa.Column(
+ "pulverized_coal_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses pulverized coal technology",
+ ),
+ sa.Column(
+ "reactive_power_output_mvar",
+ sa.Float(),
+ nullable=True,
+ comment="Reactive Power Output (MVAr)",
+ ),
+ sa.Column(
+ "rto_iso_lmp_node_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
+ ),
+ sa.Column(
+ "rto_iso_location_wholesale_reporting_id",
+ sa.Text(),
+ nullable=True,
+ comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
+ ),
+ sa.Column(
+ "solid_fuel_gasification",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator is part of a solid fuel gasification system",
+ ),
+ sa.Column(
+ "startup_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_2",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_3",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "startup_source_code_4",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
+ ),
+ sa.Column(
+ "state",
+ sa.Text(),
+ nullable=True,
+ comment="Two letter US state abbreviation.",
+ ),
+ sa.Column(
+ "stoker_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses stoker technology",
+ ),
+ sa.Column("street_address", sa.Text(), nullable=True),
+ sa.Column(
+ "subcritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses subcritical technology",
+ ),
+ sa.Column(
+ "summer_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the summer capacity value was an estimate",
+ ),
+ sa.Column(
+ "summer_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net summer capacity.",
+ ),
+ sa.Column(
+ "summer_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated summer capacity (in MWh).",
+ ),
+ sa.Column(
+ "supercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses supercritical technology",
+ ),
+ sa.Column(
+ "switch_oil_gas",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator switch between oil and natural gas.",
+ ),
+ sa.Column(
+ "syncronized_transmission_grid",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
+ ),
+ sa.Column(
+ "time_cold_shutdown_full_load_code",
+ sa.Text(),
+ nullable=True,
+ comment="The minimum amount of time required to bring the unit to full load from shutdown.",
+ ),
+ sa.Column(
+ "timezone",
+ sa.Enum(
+ "Africa/Abidjan",
+ "Africa/Accra",
+ "Africa/Addis_Ababa",
+ "Africa/Algiers",
+ "Africa/Asmara",
+ "Africa/Asmera",
+ "Africa/Bamako",
+ "Africa/Bangui",
+ "Africa/Banjul",
+ "Africa/Bissau",
+ "Africa/Blantyre",
+ "Africa/Brazzaville",
+ "Africa/Bujumbura",
+ "Africa/Cairo",
+ "Africa/Casablanca",
+ "Africa/Ceuta",
+ "Africa/Conakry",
+ "Africa/Dakar",
+ "Africa/Dar_es_Salaam",
+ "Africa/Djibouti",
+ "Africa/Douala",
+ "Africa/El_Aaiun",
+ "Africa/Freetown",
+ "Africa/Gaborone",
+ "Africa/Harare",
+ "Africa/Johannesburg",
+ "Africa/Juba",
+ "Africa/Kampala",
+ "Africa/Khartoum",
+ "Africa/Kigali",
+ "Africa/Kinshasa",
+ "Africa/Lagos",
+ "Africa/Libreville",
+ "Africa/Lome",
+ "Africa/Luanda",
+ "Africa/Lubumbashi",
+ "Africa/Lusaka",
+ "Africa/Malabo",
+ "Africa/Maputo",
+ "Africa/Maseru",
+ "Africa/Mbabane",
+ "Africa/Mogadishu",
+ "Africa/Monrovia",
+ "Africa/Nairobi",
+ "Africa/Ndjamena",
+ "Africa/Niamey",
+ "Africa/Nouakchott",
+ "Africa/Ouagadougou",
+ "Africa/Porto-Novo",
+ "Africa/Sao_Tome",
+ "Africa/Timbuktu",
+ "Africa/Tripoli",
+ "Africa/Tunis",
+ "Africa/Windhoek",
+ "America/Adak",
+ "America/Anchorage",
+ "America/Anguilla",
+ "America/Antigua",
+ "America/Araguaina",
+ "America/Argentina/Buenos_Aires",
+ "America/Argentina/Catamarca",
+ "America/Argentina/ComodRivadavia",
+ "America/Argentina/Cordoba",
+ "America/Argentina/Jujuy",
+ "America/Argentina/La_Rioja",
+ "America/Argentina/Mendoza",
+ "America/Argentina/Rio_Gallegos",
+ "America/Argentina/Salta",
+ "America/Argentina/San_Juan",
+ "America/Argentina/San_Luis",
+ "America/Argentina/Tucuman",
+ "America/Argentina/Ushuaia",
+ "America/Aruba",
+ "America/Asuncion",
+ "America/Atikokan",
+ "America/Atka",
+ "America/Bahia",
+ "America/Bahia_Banderas",
+ "America/Barbados",
+ "America/Belem",
+ "America/Belize",
+ "America/Blanc-Sablon",
+ "America/Boa_Vista",
+ "America/Bogota",
+ "America/Boise",
+ "America/Buenos_Aires",
+ "America/Cambridge_Bay",
+ "America/Campo_Grande",
+ "America/Cancun",
+ "America/Caracas",
+ "America/Catamarca",
+ "America/Cayenne",
+ "America/Cayman",
+ "America/Chicago",
+ "America/Chihuahua",
+ "America/Ciudad_Juarez",
+ "America/Coral_Harbour",
+ "America/Cordoba",
+ "America/Costa_Rica",
+ "America/Creston",
+ "America/Cuiaba",
+ "America/Curacao",
+ "America/Danmarkshavn",
+ "America/Dawson",
+ "America/Dawson_Creek",
+ "America/Denver",
+ "America/Detroit",
+ "America/Dominica",
+ "America/Edmonton",
+ "America/Eirunepe",
+ "America/El_Salvador",
+ "America/Ensenada",
+ "America/Fort_Nelson",
+ "America/Fort_Wayne",
+ "America/Fortaleza",
+ "America/Glace_Bay",
+ "America/Godthab",
+ "America/Goose_Bay",
+ "America/Grand_Turk",
+ "America/Grenada",
+ "America/Guadeloupe",
+ "America/Guatemala",
+ "America/Guayaquil",
+ "America/Guyana",
+ "America/Halifax",
+ "America/Havana",
+ "America/Hermosillo",
+ "America/Indiana/Indianapolis",
+ "America/Indiana/Knox",
+ "America/Indiana/Marengo",
+ "America/Indiana/Petersburg",
+ "America/Indiana/Tell_City",
+ "America/Indiana/Vevay",
+ "America/Indiana/Vincennes",
+ "America/Indiana/Winamac",
+ "America/Indianapolis",
+ "America/Inuvik",
+ "America/Iqaluit",
+ "America/Jamaica",
+ "America/Jujuy",
+ "America/Juneau",
+ "America/Kentucky/Louisville",
+ "America/Kentucky/Monticello",
+ "America/Knox_IN",
+ "America/Kralendijk",
+ "America/La_Paz",
+ "America/Lima",
+ "America/Los_Angeles",
+ "America/Louisville",
+ "America/Lower_Princes",
+ "America/Maceio",
+ "America/Managua",
+ "America/Manaus",
+ "America/Marigot",
+ "America/Martinique",
+ "America/Matamoros",
+ "America/Mazatlan",
+ "America/Mendoza",
+ "America/Menominee",
+ "America/Merida",
+ "America/Metlakatla",
+ "America/Mexico_City",
+ "America/Miquelon",
+ "America/Moncton",
+ "America/Monterrey",
+ "America/Montevideo",
+ "America/Montreal",
+ "America/Montserrat",
+ "America/Nassau",
+ "America/New_York",
+ "America/Nipigon",
+ "America/Nome",
+ "America/Noronha",
+ "America/North_Dakota/Beulah",
+ "America/North_Dakota/Center",
+ "America/North_Dakota/New_Salem",
+ "America/Nuuk",
+ "America/Ojinaga",
+ "America/Panama",
+ "America/Pangnirtung",
+ "America/Paramaribo",
+ "America/Phoenix",
+ "America/Port-au-Prince",
+ "America/Port_of_Spain",
+ "America/Porto_Acre",
+ "America/Porto_Velho",
+ "America/Puerto_Rico",
+ "America/Punta_Arenas",
+ "America/Rainy_River",
+ "America/Rankin_Inlet",
+ "America/Recife",
+ "America/Regina",
+ "America/Resolute",
+ "America/Rio_Branco",
+ "America/Rosario",
+ "America/Santa_Isabel",
+ "America/Santarem",
+ "America/Santiago",
+ "America/Santo_Domingo",
+ "America/Sao_Paulo",
+ "America/Scoresbysund",
+ "America/Shiprock",
+ "America/Sitka",
+ "America/St_Barthelemy",
+ "America/St_Johns",
+ "America/St_Kitts",
+ "America/St_Lucia",
+ "America/St_Thomas",
+ "America/St_Vincent",
+ "America/Swift_Current",
+ "America/Tegucigalpa",
+ "America/Thule",
+ "America/Thunder_Bay",
+ "America/Tijuana",
+ "America/Toronto",
+ "America/Tortola",
+ "America/Vancouver",
+ "America/Virgin",
+ "America/Whitehorse",
+ "America/Winnipeg",
+ "America/Yakutat",
+ "America/Yellowknife",
+ "Antarctica/Casey",
+ "Antarctica/Davis",
+ "Antarctica/DumontDUrville",
+ "Antarctica/Macquarie",
+ "Antarctica/Mawson",
+ "Antarctica/McMurdo",
+ "Antarctica/Palmer",
+ "Antarctica/Rothera",
+ "Antarctica/South_Pole",
+ "Antarctica/Syowa",
+ "Antarctica/Troll",
+ "Antarctica/Vostok",
+ "Arctic/Longyearbyen",
+ "Asia/Aden",
+ "Asia/Almaty",
+ "Asia/Amman",
+ "Asia/Anadyr",
+ "Asia/Aqtau",
+ "Asia/Aqtobe",
+ "Asia/Ashgabat",
+ "Asia/Ashkhabad",
+ "Asia/Atyrau",
+ "Asia/Baghdad",
+ "Asia/Bahrain",
+ "Asia/Baku",
+ "Asia/Bangkok",
+ "Asia/Barnaul",
+ "Asia/Beirut",
+ "Asia/Bishkek",
+ "Asia/Brunei",
+ "Asia/Calcutta",
+ "Asia/Chita",
+ "Asia/Choibalsan",
+ "Asia/Chongqing",
+ "Asia/Chungking",
+ "Asia/Colombo",
+ "Asia/Dacca",
+ "Asia/Damascus",
+ "Asia/Dhaka",
+ "Asia/Dili",
+ "Asia/Dubai",
+ "Asia/Dushanbe",
+ "Asia/Famagusta",
+ "Asia/Gaza",
+ "Asia/Harbin",
+ "Asia/Hebron",
+ "Asia/Ho_Chi_Minh",
+ "Asia/Hong_Kong",
+ "Asia/Hovd",
+ "Asia/Irkutsk",
+ "Asia/Istanbul",
+ "Asia/Jakarta",
+ "Asia/Jayapura",
+ "Asia/Jerusalem",
+ "Asia/Kabul",
+ "Asia/Kamchatka",
+ "Asia/Karachi",
+ "Asia/Kashgar",
+ "Asia/Kathmandu",
+ "Asia/Katmandu",
+ "Asia/Khandyga",
+ "Asia/Kolkata",
+ "Asia/Krasnoyarsk",
+ "Asia/Kuala_Lumpur",
+ "Asia/Kuching",
+ "Asia/Kuwait",
+ "Asia/Macao",
+ "Asia/Macau",
+ "Asia/Magadan",
+ "Asia/Makassar",
+ "Asia/Manila",
+ "Asia/Muscat",
+ "Asia/Nicosia",
+ "Asia/Novokuznetsk",
+ "Asia/Novosibirsk",
+ "Asia/Omsk",
+ "Asia/Oral",
+ "Asia/Phnom_Penh",
+ "Asia/Pontianak",
+ "Asia/Pyongyang",
+ "Asia/Qatar",
+ "Asia/Qostanay",
+ "Asia/Qyzylorda",
+ "Asia/Rangoon",
+ "Asia/Riyadh",
+ "Asia/Saigon",
+ "Asia/Sakhalin",
+ "Asia/Samarkand",
+ "Asia/Seoul",
+ "Asia/Shanghai",
+ "Asia/Singapore",
+ "Asia/Srednekolymsk",
+ "Asia/Taipei",
+ "Asia/Tashkent",
+ "Asia/Tbilisi",
+ "Asia/Tehran",
+ "Asia/Tel_Aviv",
+ "Asia/Thimbu",
+ "Asia/Thimphu",
+ "Asia/Tokyo",
+ "Asia/Tomsk",
+ "Asia/Ujung_Pandang",
+ "Asia/Ulaanbaatar",
+ "Asia/Ulan_Bator",
+ "Asia/Urumqi",
+ "Asia/Ust-Nera",
+ "Asia/Vientiane",
+ "Asia/Vladivostok",
+ "Asia/Yakutsk",
+ "Asia/Yangon",
+ "Asia/Yekaterinburg",
+ "Asia/Yerevan",
+ "Atlantic/Azores",
+ "Atlantic/Bermuda",
+ "Atlantic/Canary",
+ "Atlantic/Cape_Verde",
+ "Atlantic/Faeroe",
+ "Atlantic/Faroe",
+ "Atlantic/Jan_Mayen",
+ "Atlantic/Madeira",
+ "Atlantic/Reykjavik",
+ "Atlantic/South_Georgia",
+ "Atlantic/St_Helena",
+ "Atlantic/Stanley",
+ "Australia/ACT",
+ "Australia/Adelaide",
+ "Australia/Brisbane",
+ "Australia/Broken_Hill",
+ "Australia/Canberra",
+ "Australia/Currie",
+ "Australia/Darwin",
+ "Australia/Eucla",
+ "Australia/Hobart",
+ "Australia/LHI",
+ "Australia/Lindeman",
+ "Australia/Lord_Howe",
+ "Australia/Melbourne",
+ "Australia/NSW",
+ "Australia/North",
+ "Australia/Perth",
+ "Australia/Queensland",
+ "Australia/South",
+ "Australia/Sydney",
+ "Australia/Tasmania",
+ "Australia/Victoria",
+ "Australia/West",
+ "Australia/Yancowinna",
+ "Brazil/Acre",
+ "Brazil/DeNoronha",
+ "Brazil/East",
+ "Brazil/West",
+ "CET",
+ "CST6CDT",
+ "Canada/Atlantic",
+ "Canada/Central",
+ "Canada/Eastern",
+ "Canada/Mountain",
+ "Canada/Newfoundland",
+ "Canada/Pacific",
+ "Canada/Saskatchewan",
+ "Canada/Yukon",
+ "Chile/Continental",
+ "Chile/EasterIsland",
+ "Cuba",
+ "EET",
+ "EST",
+ "EST5EDT",
+ "Egypt",
+ "Eire",
+ "Etc/GMT",
+ "Etc/GMT+0",
+ "Etc/GMT+1",
+ "Etc/GMT+10",
+ "Etc/GMT+11",
+ "Etc/GMT+12",
+ "Etc/GMT+2",
+ "Etc/GMT+3",
+ "Etc/GMT+4",
+ "Etc/GMT+5",
+ "Etc/GMT+6",
+ "Etc/GMT+7",
+ "Etc/GMT+8",
+ "Etc/GMT+9",
+ "Etc/GMT-0",
+ "Etc/GMT-1",
+ "Etc/GMT-10",
+ "Etc/GMT-11",
+ "Etc/GMT-12",
+ "Etc/GMT-13",
+ "Etc/GMT-14",
+ "Etc/GMT-2",
+ "Etc/GMT-3",
+ "Etc/GMT-4",
+ "Etc/GMT-5",
+ "Etc/GMT-6",
+ "Etc/GMT-7",
+ "Etc/GMT-8",
+ "Etc/GMT-9",
+ "Etc/GMT0",
+ "Etc/Greenwich",
+ "Etc/UCT",
+ "Etc/UTC",
+ "Etc/Universal",
+ "Etc/Zulu",
+ "Europe/Amsterdam",
+ "Europe/Andorra",
+ "Europe/Astrakhan",
+ "Europe/Athens",
+ "Europe/Belfast",
+ "Europe/Belgrade",
+ "Europe/Berlin",
+ "Europe/Bratislava",
+ "Europe/Brussels",
+ "Europe/Bucharest",
+ "Europe/Budapest",
+ "Europe/Busingen",
+ "Europe/Chisinau",
+ "Europe/Copenhagen",
+ "Europe/Dublin",
+ "Europe/Gibraltar",
+ "Europe/Guernsey",
+ "Europe/Helsinki",
+ "Europe/Isle_of_Man",
+ "Europe/Istanbul",
+ "Europe/Jersey",
+ "Europe/Kaliningrad",
+ "Europe/Kiev",
+ "Europe/Kirov",
+ "Europe/Kyiv",
+ "Europe/Lisbon",
+ "Europe/Ljubljana",
+ "Europe/London",
+ "Europe/Luxembourg",
+ "Europe/Madrid",
+ "Europe/Malta",
+ "Europe/Mariehamn",
+ "Europe/Minsk",
+ "Europe/Monaco",
+ "Europe/Moscow",
+ "Europe/Nicosia",
+ "Europe/Oslo",
+ "Europe/Paris",
+ "Europe/Podgorica",
+ "Europe/Prague",
+ "Europe/Riga",
+ "Europe/Rome",
+ "Europe/Samara",
+ "Europe/San_Marino",
+ "Europe/Sarajevo",
+ "Europe/Saratov",
+ "Europe/Simferopol",
+ "Europe/Skopje",
+ "Europe/Sofia",
+ "Europe/Stockholm",
+ "Europe/Tallinn",
+ "Europe/Tirane",
+ "Europe/Tiraspol",
+ "Europe/Ulyanovsk",
+ "Europe/Uzhgorod",
+ "Europe/Vaduz",
+ "Europe/Vatican",
+ "Europe/Vienna",
+ "Europe/Vilnius",
+ "Europe/Volgograd",
+ "Europe/Warsaw",
+ "Europe/Zagreb",
+ "Europe/Zaporozhye",
+ "Europe/Zurich",
+ "GB",
+ "GB-Eire",
+ "GMT",
+ "GMT+0",
+ "GMT-0",
+ "GMT0",
+ "Greenwich",
+ "HST",
+ "Hongkong",
+ "Iceland",
+ "Indian/Antananarivo",
+ "Indian/Chagos",
+ "Indian/Christmas",
+ "Indian/Cocos",
+ "Indian/Comoro",
+ "Indian/Kerguelen",
+ "Indian/Mahe",
+ "Indian/Maldives",
+ "Indian/Mauritius",
+ "Indian/Mayotte",
+ "Indian/Reunion",
+ "Iran",
+ "Israel",
+ "Jamaica",
+ "Japan",
+ "Kwajalein",
+ "Libya",
+ "MET",
+ "MST",
+ "MST7MDT",
+ "Mexico/BajaNorte",
+ "Mexico/BajaSur",
+ "Mexico/General",
+ "NZ",
+ "NZ-CHAT",
+ "Navajo",
+ "PRC",
+ "PST8PDT",
+ "Pacific/Apia",
+ "Pacific/Auckland",
+ "Pacific/Bougainville",
+ "Pacific/Chatham",
+ "Pacific/Chuuk",
+ "Pacific/Easter",
+ "Pacific/Efate",
+ "Pacific/Enderbury",
+ "Pacific/Fakaofo",
+ "Pacific/Fiji",
+ "Pacific/Funafuti",
+ "Pacific/Galapagos",
+ "Pacific/Gambier",
+ "Pacific/Guadalcanal",
+ "Pacific/Guam",
+ "Pacific/Honolulu",
+ "Pacific/Johnston",
+ "Pacific/Kanton",
+ "Pacific/Kiritimati",
+ "Pacific/Kosrae",
+ "Pacific/Kwajalein",
+ "Pacific/Majuro",
+ "Pacific/Marquesas",
+ "Pacific/Midway",
+ "Pacific/Nauru",
+ "Pacific/Niue",
+ "Pacific/Norfolk",
+ "Pacific/Noumea",
+ "Pacific/Pago_Pago",
+ "Pacific/Palau",
+ "Pacific/Pitcairn",
+ "Pacific/Pohnpei",
+ "Pacific/Ponape",
+ "Pacific/Port_Moresby",
+ "Pacific/Rarotonga",
+ "Pacific/Saipan",
+ "Pacific/Samoa",
+ "Pacific/Tahiti",
+ "Pacific/Tarawa",
+ "Pacific/Tongatapu",
+ "Pacific/Truk",
+ "Pacific/Wake",
+ "Pacific/Wallis",
+ "Pacific/Yap",
+ "Poland",
+ "Portugal",
+ "ROC",
+ "ROK",
+ "Singapore",
+ "Turkey",
+ "UCT",
+ "US/Alaska",
+ "US/Aleutian",
+ "US/Arizona",
+ "US/Central",
+ "US/East-Indiana",
+ "US/Eastern",
+ "US/Hawaii",
+ "US/Indiana-Starke",
+ "US/Michigan",
+ "US/Mountain",
+ "US/Pacific",
+ "US/Samoa",
+ "UTC",
+ "Universal",
+ "W-SU",
+ "WET",
+ "Zulu",
+ ),
+ nullable=True,
+ comment="IANA timezone name",
+ ),
+ sa.Column(
+ "topping_bottoming_code",
+ sa.Text(),
+ nullable=True,
+ comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
+ ),
+ sa.Column(
+ "turbines_inverters_hydrokinetics",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "turbines_num",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of wind turbines, or hydrokinetic buoys.",
+ ),
+ sa.Column(
+ "ultrasupercritical_tech",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the generator uses ultra-supercritical technology",
+ ),
+ sa.Column(
+ "uprate_derate_completed_date",
+ sa.Date(),
+ nullable=True,
+ comment="The date when the uprate or derate was completed.",
+ ),
+ sa.Column(
+ "uprate_derate_during_year",
+ sa.Boolean(),
+ nullable=True,
+ comment="Was an uprate or derate completed on this generator during the reporting year?",
+ ),
+ sa.Column(
+ "winter_capacity_estimate",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether the winter capacity value was an estimate",
+ ),
+ sa.Column(
+ "winter_capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="The net winter capacity.",
+ ),
+ sa.Column(
+ "winter_estimated_capability_mw",
+ sa.Float(),
+ nullable=True,
+ comment="EIA estimated winter capacity (in MWh).",
+ ),
+ sa.Column(
+ "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
+ ),
+ sa.ForeignKeyConstraint(
+ ["data_maturity"],
+ ["core_pudl__codes_data_maturities.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_1_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_1"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_2"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_2_transport_3"],
+ ["core_eia__codes_fuel_transportation_modes.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_5"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_6"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["operational_status_code"],
+ ["core_eia__codes_operational_status.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["planned_new_prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_2"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_3"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["startup_source_code_4"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "report_date",
+ "plant_id_eia",
+ "generator_id",
+ name=op.f("pk_out_eia__yearly_generators"),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_generators_by_ownership",
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "utility_name_eia",
+ sa.Text(),
+ nullable=True,
+ comment="The name of the utility.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "generator_operating_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date the generator began commercial operation.",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "fuel_cost_from_eiaapi",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether the fuel cost was derived from the EIA API.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ )
+ op.create_table(
+ "out_eia__yearly_plant_parts",
+ sa.Column(
+ "record_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier for EIA plant parts analysis records.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_part",
+ sa.Enum(
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_operating_year",
+ "plant_gen",
+ "plant_match_ferc1",
+ "plant_prime_mover",
+ "plant_technology",
+ "plant",
+ "plant_ferc_acct",
+ ),
+ nullable=True,
+ comment="The part of the plant a record corresponds to.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Text(),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Text(),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "true_gran",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
+ ),
+ sa.Column(
+ "appro_part_label",
+ sa.Enum(
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_operating_year",
+ "plant_gen",
+ "plant_match_ferc1",
+ "plant_prime_mover",
+ "plant_technology",
+ "plant",
+ "plant_ferc_acct",
+ ),
+ nullable=True,
+ comment="Plant part of the associated true granularity record.",
+ ),
+ sa.Column(
+ "appro_record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA record ID of the associated true granularity record.",
+ ),
+ sa.Column(
+ "ferc1_generator_agg_id",
+ sa.Integer(),
+ nullable=True,
+ comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column(
+ "ownership_dupe",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether a plant part record has a duplicate record with different ownership status.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_name_ppe",
+ sa.Text(),
+ nullable=True,
+ comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
+ ),
+ sa.Column(
+ "plant_part_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
+ ),
+ sa.Column(
+ "record_count",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_report_year",
+ sa.Text(),
+ nullable=True,
+ comment="PUDL plant ID and report year of the record.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint(
+ "record_id_eia", name=op.f("pk_out_eia__yearly_plant_parts")
+ ),
+ )
+ op.create_table(
+ "plant_parts_eia",
+ sa.Column(
+ "record_id_eia",
+ sa.Text(),
+ nullable=False,
+ comment="Identifier for EIA plant parts analysis records.",
+ ),
+ sa.Column(
+ "plant_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
+ ),
+ sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
+ sa.Column(
+ "plant_part",
+ sa.Enum(
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_operating_year",
+ "plant_gen",
+ "plant_match_ferc1",
+ "plant_prime_mover",
+ "plant_technology",
+ "plant",
+ "plant_ferc_acct",
+ ),
+ nullable=True,
+ comment="The part of the plant a record corresponds to.",
+ ),
+ sa.Column(
+ "generator_id",
+ sa.Text(),
+ nullable=True,
+ comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
+ ),
+ sa.Column(
+ "unit_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
+ ),
+ sa.Column(
+ "prime_mover_code",
+ sa.Text(),
+ nullable=True,
+ comment="Code for the type of prime mover (e.g. CT, CG)",
+ ),
+ sa.Column(
+ "energy_source_code_1",
+ sa.Enum(
+ "SG",
+ "WAT",
+ "GEO",
+ "NG",
+ "PUR",
+ "WC",
+ "JF",
+ "MSB",
+ "AB",
+ "SUB",
+ "WH",
+ "LFG",
+ "ANT",
+ "SGC",
+ "PC",
+ "SLW",
+ "RC",
+ "OBL",
+ "KER",
+ "DFO",
+ "PG",
+ "RFO",
+ "SC",
+ "TDF",
+ "MSN",
+ "LIG",
+ "OBG",
+ "MWH",
+ "OTH",
+ "MSW",
+ "WND",
+ "SGP",
+ "NUC",
+ "BFG",
+ "WDL",
+ "BLQ",
+ "SUN",
+ "BIT",
+ "OBS",
+ "WDS",
+ "OG",
+ "WO",
+ ),
+ nullable=True,
+ comment="The code representing the most predominant type of energy that fuels the generator.",
+ ),
+ sa.Column(
+ "technology_description",
+ sa.Enum(
+ "Petroleum Liquids",
+ "Nuclear",
+ "Municipal Solid Waste",
+ "Landfill Gas",
+ "Other Gases",
+ "All Other",
+ "Geothermal",
+ "Natural Gas Internal Combustion Engine",
+ "Conventional Steam Coal",
+ "Coal Integrated Gasification Combined Cycle",
+ "Solar Thermal without Energy Storage",
+ "Onshore Wind Turbine",
+ "Natural Gas with Compressed Air Storage",
+ "Solar Thermal with Energy Storage",
+ "Natural Gas Fired Combined Cycle",
+ "Other Waste Biomass",
+ "Conventional Hydroelectric",
+ "Hydroelectric Pumped Storage",
+ "Offshore Wind Turbine",
+ "Batteries",
+ "Wood/Wood Waste Biomass",
+ "Natural Gas Fired Combustion Turbine",
+ "Petroleum Coke",
+ "Flywheels",
+ "Hydrokinetic",
+ "Solar Photovoltaic",
+ "Natural Gas Steam Turbine",
+ "Other Natural Gas",
+ ),
+ nullable=True,
+ comment="High level description of the technology used by the generator to produce electricity.",
+ ),
+ sa.Column(
+ "ferc_acct_name",
+ sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
+ nullable=True,
+ comment="Name of FERC account, derived from technology description and prime mover code.",
+ ),
+ sa.Column(
+ "utility_id_eia",
+ sa.Integer(),
+ nullable=True,
+ comment="The EIA Utility Identification number.",
+ ),
+ sa.Column(
+ "true_gran",
+ sa.Boolean(),
+ nullable=True,
+ comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
+ ),
+ sa.Column(
+ "appro_part_label",
+ sa.Enum(
+ "plant_unit",
+ "plant_prime_fuel",
+ "plant_operating_year",
+ "plant_gen",
+ "plant_match_ferc1",
+ "plant_prime_mover",
+ "plant_technology",
+ "plant",
+ "plant_ferc_acct",
+ ),
+ nullable=True,
+ comment="Plant part of the associated true granularity record.",
+ ),
+ sa.Column(
+ "appro_record_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="EIA record ID of the associated true granularity record.",
+ ),
+ sa.Column(
+ "ferc1_generator_agg_id",
+ sa.Integer(),
+ nullable=True,
+ comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
+ ),
+ sa.Column(
+ "capacity_eoy_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
+ ),
+ sa.Column(
+ "capacity_factor",
+ sa.Float(),
+ nullable=True,
+ comment="Fraction of potential generation that was actually reported for a plant part.",
+ ),
+ sa.Column(
+ "capacity_mw",
+ sa.Float(),
+ nullable=True,
+ comment="Total installed (nameplate) capacity, in megawatts.",
+ ),
+ sa.Column(
+ "construction_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's oldest still operational unit was built.",
+ ),
+ sa.Column(
+ "fraction_owned",
+ sa.Float(),
+ nullable=True,
+ comment="Proportion of generator ownership attributable to this utility.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Average fuel cost per mmBTU of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_cost_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
+ ),
+ sa.Column(
+ "fuel_type_code_pudl",
+ sa.Enum(
+ "coal",
+ "gas",
+ "hydro",
+ "nuclear",
+ "oil",
+ "other",
+ "solar",
+ "waste",
+ "wind",
+ ),
+ nullable=True,
+ comment="Simplified fuel type code used in PUDL",
+ ),
+ sa.Column(
+ "generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Date of the scheduled or effected retirement of the generator.",
+ ),
+ sa.Column(
+ "heat_rate_mmbtu_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ ),
+ sa.Column(
+ "installation_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year the plant's most recently built unit was installed.",
+ ),
+ sa.Column(
+ "net_generation_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
+ ),
+ sa.Column(
+ "generator_operating_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Year a generator went into service.",
+ ),
+ sa.Column(
+ "operational_status",
+ sa.Text(),
+ nullable=True,
+ comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
+ ),
+ sa.Column(
+ "operational_status_pudl",
+ sa.Enum("operating", "retired", "proposed"),
+ nullable=True,
+ comment="The operating status of the asset using PUDL categories.",
+ ),
+ sa.Column(
+ "ownership_record_type",
+ sa.Enum("owned", "total"),
+ nullable=True,
+ comment="Whether each generator record is for one owner or represents a total of all ownerships.",
+ ),
+ sa.Column(
+ "ownership_dupe",
+ sa.Boolean(),
+ nullable=True,
+ comment="Whether a plant part record has a duplicate record with different ownership status.",
+ ),
+ sa.Column(
+ "planned_generator_retirement_date",
+ sa.Date(),
+ nullable=True,
+ comment="Planned effective date of the scheduled retirement of the generator.",
+ ),
+ sa.Column(
+ "plant_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL plant ID. May not be constant over time.",
+ ),
+ sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
+ sa.Column(
+ "plant_name_ppe",
+ sa.Text(),
+ nullable=True,
+ comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
+ ),
+ sa.Column(
+ "plant_part_id_eia",
+ sa.Text(),
+ nullable=True,
+ comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
+ ),
+ sa.Column(
+ "record_count",
+ sa.Integer(),
+ nullable=True,
+ comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
+ ),
+ sa.Column(
+ "total_fuel_cost",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
+ ),
+ sa.Column(
+ "total_mmbtu",
+ sa.Float(),
+ nullable=True,
+ comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
+ ),
+ sa.Column(
+ "utility_id_pudl",
+ sa.Integer(),
+ nullable=True,
+ comment="A manually assigned PUDL utility ID. May not be stable over time.",
+ ),
+ sa.Column(
+ "report_year",
+ sa.Integer(),
+ nullable=True,
+ comment="Four-digit year in which the data was reported.",
+ ),
+ sa.Column(
+ "plant_id_report_year",
+ sa.Text(),
+ nullable=True,
+ comment="PUDL plant ID and report year of the record.",
+ ),
+ sa.ForeignKeyConstraint(
+ ["energy_source_code_1"],
+ ["core_eia__codes_energy_sources.code"],
+ name=op.f(
+ "fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_eia", "generator_id", "report_date"],
+ [
+ "core_eia860__scd_generators.plant_id_eia",
+ "core_eia860__scd_generators.generator_id",
+ "core_eia860__scd_generators.report_date",
+ ],
+ name=op.f("fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["plant_id_pudl"],
+ ["core_pudl__entity_plants_pudl.plant_id_pudl"],
+ name=op.f("fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["prime_mover_code"],
+ ["core_eia__codes_prime_movers.code"],
+ name=op.f(
+ "fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers"
+ ),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_eia", "report_date"],
+ [
+ "core_eia860__scd_utilities.utility_id_eia",
+ "core_eia860__scd_utilities.report_date",
+ ],
+ name=op.f("fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities"),
+ ),
+ sa.ForeignKeyConstraint(
+ ["utility_id_pudl"],
+ ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
+ name=op.f(
+ "fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
+ ),
+ ),
+ sa.PrimaryKeyConstraint("record_id_eia", name=op.f("pk_plant_parts_eia")),
)
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.drop_table('plant_parts_eia')
- op.drop_table('out_eia__yearly_plant_parts')
- op.drop_table('out_eia__yearly_generators_by_ownership')
- op.drop_table('out_eia__yearly_generators')
- op.drop_table('out_eia__yearly_boilers')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
- op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
- op.drop_table('out_eia923__yearly_generation')
- op.drop_table('out_eia923__yearly_boiler_fuel')
- op.drop_table('out_eia860__yearly_ownership')
- op.drop_table('out__yearly_plants_all_ferc1_plant_parts_eia')
- op.drop_table('mega_generators_eia')
- op.drop_table('core_eia860__yearly_boiler_emissions_control_equipment_assn')
- op.drop_table('core_eia860__scd_ownership')
- op.drop_table('core_eia860__assn_boiler_stack_flue')
- op.drop_table('core_eia860__assn_boiler_generator')
- op.drop_table('core_eia860__assn_boiler_cooling')
- op.drop_table('_out_eia__yearly_heat_rate_by_generator')
- op.drop_table('_out_eia__yearly_generators')
- op.drop_table('_out_eia__yearly_fuel_cost_by_generator')
- op.drop_table('_out_eia__yearly_derived_generator_attributes')
- op.drop_table('_out_eia__yearly_capacity_factor_by_generator')
- op.drop_table('out_ferc1__yearly_steam_plants_fuel_sched402')
- op.drop_table('out_ferc1__yearly_steam_plants_fuel_by_plant_sched402')
- op.drop_table('out_ferc1__yearly_all_plants')
- op.drop_table('out_eia__yearly_plants')
- op.drop_table('out_eia923__yearly_generation_fuel_combined')
- op.drop_table('out_eia923__yearly_fuel_receipts_costs')
- op.drop_table('core_ferc1__yearly_steam_plants_sched402')
- op.drop_table('core_ferc1__yearly_steam_plants_fuel_sched402')
- op.drop_table('core_ferc1__yearly_small_plants_sched410')
- op.drop_table('core_ferc1__yearly_pumped_storage_plants_sched408')
- op.drop_table('core_ferc1__yearly_hydroelectric_plants_sched406')
- op.drop_table('core_eia860__scd_generators')
- op.drop_table('core_eia860__scd_boilers')
- op.drop_table('_out_ferc1__yearly_steam_plants_sched402')
- op.drop_table('_out_ferc1__yearly_small_plants_sched410')
- op.drop_table('_out_ferc1__yearly_pumped_storage_plants_sched408')
- op.drop_table('_out_ferc1__yearly_plants_utilities')
- op.drop_table('_out_ferc1__yearly_hydroelectric_plants_sched406')
- op.drop_table('_out_eia__yearly_heat_rate_by_unit')
- op.drop_table('_out_eia__plants_utilities')
- op.drop_table('out_ferc1__yearly_utility_plant_summary_sched200')
- op.drop_table('out_ferc1__yearly_transmission_lines_sched422')
- op.drop_table('out_ferc1__yearly_sales_by_rate_schedules_sched304')
- op.drop_table('out_ferc1__yearly_retained_earnings_sched118')
- op.drop_table('out_ferc1__yearly_purchased_power_and_exchanges_sched326')
- op.drop_table('out_ferc1__yearly_plant_in_service_sched204')
- op.drop_table('out_ferc1__yearly_other_regulatory_liabilities_sched278')
- op.drop_table('out_ferc1__yearly_operating_revenues_sched300')
- op.drop_table('out_ferc1__yearly_operating_expenses_sched320')
- op.drop_table('out_ferc1__yearly_income_statements_sched114')
- op.drop_table('out_ferc1__yearly_energy_sources_sched401')
- op.drop_table('out_ferc1__yearly_energy_dispositions_sched401')
- op.drop_table('out_ferc1__yearly_depreciation_summary_sched336')
- op.drop_table('out_ferc1__yearly_depreciation_changes_sched219')
- op.drop_table('out_ferc1__yearly_depreciation_by_function_sched219')
- op.drop_table('out_ferc1__yearly_cash_flows_sched120')
- op.drop_table('out_ferc1__yearly_balance_sheet_liabilities_sched110')
- op.drop_table('out_ferc1__yearly_balance_sheet_assets_sched110')
- op.drop_table('out_eia__yearly_utilities')
- op.drop_table('out_eia__monthly_generators')
- op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
- op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
- op.drop_table('out_eia923__monthly_generation')
- op.drop_table('out_eia923__monthly_boiler_fuel')
- op.drop_table('out_eia923__generation')
- op.drop_table('out_eia923__boiler_fuel')
- op.drop_table('core_pudl__assn_utilities_ferc1_xbrl')
- op.drop_table('core_pudl__assn_utilities_ferc1_dbf')
- op.drop_table('core_pudl__assn_plants_ferc1')
- op.drop_table('core_ferc1__yearly_utility_plant_summary_sched200')
- op.drop_table('core_ferc1__yearly_transmission_lines_sched422')
- op.drop_table('core_ferc1__yearly_sales_by_rate_schedules_sched304')
- op.drop_table('core_ferc1__yearly_retained_earnings_sched118')
- op.drop_table('core_ferc1__yearly_purchased_power_and_exchanges_sched326')
- op.drop_table('core_ferc1__yearly_plant_in_service_sched204')
- op.drop_table('core_ferc1__yearly_other_regulatory_liabilities_sched278')
- op.drop_table('core_ferc1__yearly_operating_revenues_sched300')
- op.drop_table('core_ferc1__yearly_operating_expenses_sched320')
- op.drop_table('core_ferc1__yearly_income_statements_sched114')
- op.drop_table('core_ferc1__yearly_energy_sources_sched401')
- op.drop_table('core_ferc1__yearly_energy_dispositions_sched401')
- op.drop_table('core_ferc1__yearly_depreciation_summary_sched336')
- op.drop_table('core_ferc1__yearly_depreciation_changes_sched219')
- op.drop_table('core_ferc1__yearly_depreciation_by_function_sched219')
- op.drop_table('core_ferc1__yearly_cash_flows_sched120')
- op.drop_table('core_ferc1__yearly_balance_sheet_liabilities_sched110')
- op.drop_table('core_ferc1__yearly_balance_sheet_assets_sched110')
- op.drop_table('core_epa__assn_epacamd_eia')
- op.drop_table('core_eia923__monthly_generation')
- op.drop_table('core_eia923__monthly_fuel_receipts_costs')
- op.drop_table('core_eia923__monthly_boiler_fuel')
- op.drop_table('core_eia860__scd_plants')
- op.drop_table('_out_eia__monthly_heat_rate_by_generator')
- op.drop_table('_out_eia__monthly_fuel_cost_by_generator')
- op.drop_table('_out_eia__monthly_derived_generator_attributes')
- op.drop_table('_out_eia__monthly_capacity_factor_by_generator')
- op.drop_table('out_ferc714__summarized_demand')
- op.drop_table('out_ferc714__respondents_with_fips')
- op.drop_table('out_eia923__monthly_generation_fuel_combined')
- op.drop_table('out_eia923__monthly_fuel_receipts_costs')
- op.drop_table('out_eia923__generation_fuel_combined')
- op.drop_table('out_eia923__fuel_receipts_costs')
- op.drop_table('out_eia860__yearly_emissions_control_equipment')
- op.drop_table('core_pudl__assn_utilities_plants')
- op.drop_table('core_pudl__assn_utilities_ferc1')
- op.drop_table('core_pudl__assn_utilities_eia')
- op.drop_table('core_pudl__assn_plants_eia')
- op.drop_table('core_ferc714__hourly_demand_pa')
- op.drop_table('core_eia__entity_generators')
- op.drop_table('core_eia__entity_boilers')
- op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
- op.drop_table('core_eia923__monthly_generation_fuel')
- op.drop_table('core_eia923__entity_coalmine')
- op.drop_table('core_eia861__yearly_utility_data_rto')
- op.drop_table('core_eia861__yearly_utility_data_nerc')
- op.drop_table('core_eia861__yearly_utility_data_misc')
- op.drop_table('core_eia861__yearly_service_territory')
- op.drop_table('core_eia861__yearly_sales')
- op.drop_table('core_eia861__yearly_reliability')
- op.drop_table('core_eia861__yearly_operational_data_revenue')
- op.drop_table('core_eia861__yearly_operational_data_misc')
- op.drop_table('core_eia861__yearly_non_net_metering_misc')
- op.drop_table('core_eia861__yearly_non_net_metering_customer_fuel_class')
- op.drop_table('core_eia861__yearly_net_metering_misc')
- op.drop_table('core_eia861__yearly_net_metering_customer_fuel_class')
- op.drop_table('core_eia861__yearly_mergers')
- op.drop_table('core_eia861__yearly_green_pricing')
- op.drop_table('core_eia861__yearly_energy_efficiency')
- op.drop_table('core_eia861__yearly_dynamic_pricing')
- op.drop_table('core_eia861__yearly_distribution_systems')
- op.drop_table('core_eia861__yearly_distributed_generation_tech')
- op.drop_table('core_eia861__yearly_distributed_generation_misc')
- op.drop_table('core_eia861__yearly_distributed_generation_fuel')
- op.drop_table('core_eia861__yearly_demand_side_management_sales')
- op.drop_table('core_eia861__yearly_demand_side_management_misc')
- op.drop_table('core_eia861__yearly_demand_side_management_ee_dr')
- op.drop_table('core_eia861__yearly_demand_response_water_heater')
- op.drop_table('core_eia861__yearly_demand_response')
- op.drop_table('core_eia861__yearly_advanced_metering_infrastructure')
- op.drop_table('core_eia860__scd_utilities')
- op.drop_table('core_eia860__scd_emissions_control_equipment')
- op.drop_table('_out_eia__monthly_heat_rate_by_unit')
- op.drop_table('out_ferc714__hourly_predicted_state_demand')
- op.drop_table('out_eia861__compiled_geometry_utilities')
- op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
- op.drop_table('core_pudl__entity_utilities_pudl')
- op.drop_table('core_pudl__entity_plants_pudl')
- op.drop_table('core_pudl__codes_subdivisions')
- op.drop_table('core_pudl__codes_datasources')
- op.drop_table('core_pudl__codes_data_maturities')
- op.drop_table('core_ferc__codes_accounts')
- op.drop_table('core_ferc714__respondent_id')
- op.drop_table('core_ferc1__codes_power_purchase_types')
- op.drop_table('core_epa__assn_epacamd_eia_subplant_ids')
- op.drop_table('core_eia__yearly_fuel_receipts_costs_aggs')
- op.drop_table('core_eia__entity_utilities')
- op.drop_table('core_eia__entity_plants')
- op.drop_table('core_eia__codes_wet_dry_bottom')
- op.drop_table('core_eia__codes_steam_plant_types')
- op.drop_table('core_eia__codes_so2_units')
- op.drop_table('core_eia__codes_so2_compliance_strategies')
- op.drop_table('core_eia__codes_sector_consolidated')
- op.drop_table('core_eia__codes_reporting_frequencies')
- op.drop_table('core_eia__codes_regulations')
- op.drop_table('core_eia__codes_prime_movers')
- op.drop_table('core_eia__codes_particulate_units')
- op.drop_table('core_eia__codes_particulate_compliance_strategies')
- op.drop_table('core_eia__codes_operational_status')
- op.drop_table('core_eia__codes_nox_units')
- op.drop_table('core_eia__codes_nox_control_status')
- op.drop_table('core_eia__codes_nox_compliance_strategies')
- op.drop_table('core_eia__codes_momentary_interruptions')
- op.drop_table('core_eia__codes_mercury_compliance_strategies')
- op.drop_table('core_eia__codes_fuel_types_aer')
- op.drop_table('core_eia__codes_fuel_transportation_modes')
- op.drop_table('core_eia__codes_firing_types')
- op.drop_table('core_eia__codes_environmental_equipment_manufacturers')
- op.drop_table('core_eia__codes_energy_sources')
- op.drop_table('core_eia__codes_emission_control_equipment_types')
- op.drop_table('core_eia__codes_contract_types')
- op.drop_table('core_eia__codes_coalmine_types')
- op.drop_table('core_eia__codes_boiler_types')
- op.drop_table('core_eia__codes_boiler_status')
- op.drop_table('core_eia__codes_boiler_generator_assn_types')
- op.drop_table('core_eia__codes_balancing_authorities')
- op.drop_table('core_eia__codes_averaging_periods')
- op.drop_table('core_eia861__yearly_balancing_authority')
- op.drop_table('core_eia861__assn_utility')
- op.drop_table('core_eia861__assn_balancing_authority')
+ op.drop_table("plant_parts_eia")
+ op.drop_table("out_eia__yearly_plant_parts")
+ op.drop_table("out_eia__yearly_generators_by_ownership")
+ op.drop_table("out_eia__yearly_generators")
+ op.drop_table("out_eia__yearly_boilers")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source_owner")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source")
+ op.drop_table("out_eia923__yearly_generation_fuel_by_generator")
+ op.drop_table("out_eia923__yearly_generation")
+ op.drop_table("out_eia923__yearly_boiler_fuel")
+ op.drop_table("out_eia860__yearly_ownership")
+ op.drop_table("out_pudl__yearly_assn_eia_ferc1_plant_parts")
+ op.drop_table("mega_generators_eia")
+ op.drop_table("core_eia860__yearly_boiler_emissions_control_equipment_assn")
+ op.drop_table("core_eia860__scd_ownership")
+ op.drop_table("core_eia860__assn_boiler_stack_flue")
+ op.drop_table("core_eia860__assn_boiler_generator")
+ op.drop_table("core_eia860__assn_boiler_cooling")
+ op.drop_table("_out_eia__yearly_heat_rate_by_generator")
+ op.drop_table("_out_eia__yearly_generators")
+ op.drop_table("_out_eia__yearly_fuel_cost_by_generator")
+ op.drop_table("_out_eia__yearly_derived_generator_attributes")
+ op.drop_table("_out_eia__yearly_capacity_factor_by_generator")
+ op.drop_table("out_ferc1__yearly_steam_plants_fuel_sched402")
+ op.drop_table("out_ferc1__yearly_steam_plants_fuel_by_plant_sched402")
+ op.drop_table("out_ferc1__yearly_all_plants")
+ op.drop_table("out_eia__yearly_plants")
+ op.drop_table("out_eia923__yearly_generation_fuel_combined")
+ op.drop_table("out_eia923__yearly_fuel_receipts_costs")
+ op.drop_table("core_ferc1__yearly_steam_plants_sched402")
+ op.drop_table("core_ferc1__yearly_steam_plants_fuel_sched402")
+ op.drop_table("core_ferc1__yearly_small_plants_sched410")
+ op.drop_table("core_ferc1__yearly_pumped_storage_plants_sched408")
+ op.drop_table("core_ferc1__yearly_hydroelectric_plants_sched406")
+ op.drop_table("core_eia860__scd_generators")
+ op.drop_table("core_eia860__scd_boilers")
+ op.drop_table("_out_ferc1__yearly_steam_plants_sched402")
+ op.drop_table("_out_ferc1__yearly_small_plants_sched410")
+ op.drop_table("_out_ferc1__yearly_pumped_storage_plants_sched408")
+ op.drop_table("_out_ferc1__yearly_plants_utilities")
+ op.drop_table("_out_ferc1__yearly_hydroelectric_plants_sched406")
+ op.drop_table("_out_eia__yearly_heat_rate_by_unit")
+ op.drop_table("_out_eia__plants_utilities")
+ op.drop_table("out_ferc1__yearly_utility_plant_summary_sched200")
+ op.drop_table("out_ferc1__yearly_transmission_lines_sched422")
+ op.drop_table("out_ferc1__yearly_sales_by_rate_schedules_sched304")
+ op.drop_table("out_ferc1__yearly_retained_earnings_sched118")
+ op.drop_table("out_ferc1__yearly_purchased_power_and_exchanges_sched326")
+ op.drop_table("out_ferc1__yearly_plant_in_service_sched204")
+ op.drop_table("out_ferc1__yearly_other_regulatory_liabilities_sched278")
+ op.drop_table("out_ferc1__yearly_operating_revenues_sched300")
+ op.drop_table("out_ferc1__yearly_operating_expenses_sched320")
+ op.drop_table("out_ferc1__yearly_income_statements_sched114")
+ op.drop_table("out_ferc1__yearly_energy_sources_sched401")
+ op.drop_table("out_ferc1__yearly_energy_dispositions_sched401")
+ op.drop_table("out_ferc1__yearly_depreciation_summary_sched336")
+ op.drop_table("out_ferc1__yearly_depreciation_changes_sched219")
+ op.drop_table("out_ferc1__yearly_depreciation_by_function_sched219")
+ op.drop_table("out_ferc1__yearly_cash_flows_sched120")
+ op.drop_table("out_ferc1__yearly_balance_sheet_liabilities_sched110")
+ op.drop_table("out_ferc1__yearly_balance_sheet_assets_sched110")
+ op.drop_table("out_eia__yearly_utilities")
+ op.drop_table("out_eia__monthly_generators")
+ op.drop_table("out_eia923__monthly_generation_fuel_by_generator_energy_source")
+ op.drop_table("out_eia923__monthly_generation_fuel_by_generator")
+ op.drop_table("out_eia923__monthly_generation")
+ op.drop_table("out_eia923__monthly_boiler_fuel")
+ op.drop_table("out_eia923__generation")
+ op.drop_table("out_eia923__boiler_fuel")
+ op.drop_table("core_pudl__assn_utilities_ferc1_xbrl")
+ op.drop_table("core_pudl__assn_utilities_ferc1_dbf")
+ op.drop_table("core_pudl__assn_plants_ferc1")
+ op.drop_table("core_ferc1__yearly_utility_plant_summary_sched200")
+ op.drop_table("core_ferc1__yearly_transmission_lines_sched422")
+ op.drop_table("core_ferc1__yearly_sales_by_rate_schedules_sched304")
+ op.drop_table("core_ferc1__yearly_retained_earnings_sched118")
+ op.drop_table("core_ferc1__yearly_purchased_power_and_exchanges_sched326")
+ op.drop_table("core_ferc1__yearly_plant_in_service_sched204")
+ op.drop_table("core_ferc1__yearly_other_regulatory_liabilities_sched278")
+ op.drop_table("core_ferc1__yearly_operating_revenues_sched300")
+ op.drop_table("core_ferc1__yearly_operating_expenses_sched320")
+ op.drop_table("core_ferc1__yearly_income_statements_sched114")
+ op.drop_table("core_ferc1__yearly_energy_sources_sched401")
+ op.drop_table("core_ferc1__yearly_energy_dispositions_sched401")
+ op.drop_table("core_ferc1__yearly_depreciation_summary_sched336")
+ op.drop_table("core_ferc1__yearly_depreciation_changes_sched219")
+ op.drop_table("core_ferc1__yearly_depreciation_by_function_sched219")
+ op.drop_table("core_ferc1__yearly_cash_flows_sched120")
+ op.drop_table("core_ferc1__yearly_balance_sheet_liabilities_sched110")
+ op.drop_table("core_ferc1__yearly_balance_sheet_assets_sched110")
+ op.drop_table("core_epa__assn_epacamd_eia")
+ op.drop_table("core_eia923__monthly_generation")
+ op.drop_table("core_eia923__monthly_fuel_receipts_costs")
+ op.drop_table("core_eia923__monthly_boiler_fuel")
+ op.drop_table("core_eia860__scd_plants")
+ op.drop_table("_out_eia__monthly_heat_rate_by_generator")
+ op.drop_table("_out_eia__monthly_fuel_cost_by_generator")
+ op.drop_table("_out_eia__monthly_derived_generator_attributes")
+ op.drop_table("_out_eia__monthly_capacity_factor_by_generator")
+ op.drop_table("out_ferc714__summarized_demand")
+ op.drop_table("out_ferc714__respondents_with_fips")
+ op.drop_table("out_eia923__monthly_generation_fuel_combined")
+ op.drop_table("out_eia923__monthly_fuel_receipts_costs")
+ op.drop_table("out_eia923__generation_fuel_combined")
+ op.drop_table("out_eia923__fuel_receipts_costs")
+ op.drop_table("out_eia860__yearly_emissions_control_equipment")
+ op.drop_table("core_pudl__assn_utilities_plants")
+ op.drop_table("core_pudl__assn_utilities_ferc1")
+ op.drop_table("core_pudl__assn_utilities_eia")
+ op.drop_table("core_pudl__assn_plants_eia")
+ op.drop_table("core_ferc714__hourly_demand_pa")
+ op.drop_table("core_eia__entity_generators")
+ op.drop_table("core_eia__entity_boilers")
+ op.drop_table("core_eia923__monthly_generation_fuel_nuclear")
+ op.drop_table("core_eia923__monthly_generation_fuel")
+ op.drop_table("core_eia923__entity_coalmine")
+ op.drop_table("core_eia861__yearly_utility_data_rto")
+ op.drop_table("core_eia861__yearly_utility_data_nerc")
+ op.drop_table("core_eia861__yearly_utility_data_misc")
+ op.drop_table("core_eia861__yearly_service_territory")
+ op.drop_table("core_eia861__yearly_sales")
+ op.drop_table("core_eia861__yearly_reliability")
+ op.drop_table("core_eia861__yearly_operational_data_revenue")
+ op.drop_table("core_eia861__yearly_operational_data_misc")
+ op.drop_table("core_eia861__yearly_non_net_metering_misc")
+ op.drop_table("core_eia861__yearly_non_net_metering_customer_fuel_class")
+ op.drop_table("core_eia861__yearly_net_metering_misc")
+ op.drop_table("core_eia861__yearly_net_metering_customer_fuel_class")
+ op.drop_table("core_eia861__yearly_mergers")
+ op.drop_table("core_eia861__yearly_green_pricing")
+ op.drop_table("core_eia861__yearly_energy_efficiency")
+ op.drop_table("core_eia861__yearly_dynamic_pricing")
+ op.drop_table("core_eia861__yearly_distribution_systems")
+ op.drop_table("core_eia861__yearly_distributed_generation_tech")
+ op.drop_table("core_eia861__yearly_distributed_generation_misc")
+ op.drop_table("core_eia861__yearly_distributed_generation_fuel")
+ op.drop_table("core_eia861__yearly_demand_side_management_sales")
+ op.drop_table("core_eia861__yearly_demand_side_management_misc")
+ op.drop_table("core_eia861__yearly_demand_side_management_ee_dr")
+ op.drop_table("core_eia861__yearly_demand_response_water_heater")
+ op.drop_table("core_eia861__yearly_demand_response")
+ op.drop_table("core_eia861__yearly_advanced_metering_infrastructure")
+ op.drop_table("core_eia860__scd_utilities")
+ op.drop_table("core_eia860__scd_emissions_control_equipment")
+ op.drop_table("_out_eia__monthly_heat_rate_by_unit")
+ op.drop_table("out_ferc714__hourly_predicted_state_demand")
+ op.drop_table("out_eia861__compiled_geometry_utilities")
+ op.drop_table("out_eia861__compiled_geometry_balancing_authorities")
+ op.drop_table("core_pudl__entity_utilities_pudl")
+ op.drop_table("core_pudl__entity_plants_pudl")
+ op.drop_table("core_pudl__codes_subdivisions")
+ op.drop_table("core_pudl__codes_datasources")
+ op.drop_table("core_pudl__codes_data_maturities")
+ op.drop_table("core_ferc__codes_accounts")
+ op.drop_table("core_ferc714__respondent_id")
+ op.drop_table("core_ferc1__codes_power_purchase_types")
+ op.drop_table("core_epa__assn_epacamd_eia_subplant_ids")
+ op.drop_table("core_eia__yearly_fuel_receipts_costs_aggs")
+ op.drop_table("core_eia__entity_utilities")
+ op.drop_table("core_eia__entity_plants")
+ op.drop_table("core_eia__codes_wet_dry_bottom")
+ op.drop_table("core_eia__codes_steam_plant_types")
+ op.drop_table("core_eia__codes_so2_units")
+ op.drop_table("core_eia__codes_so2_compliance_strategies")
+ op.drop_table("core_eia__codes_sector_consolidated")
+ op.drop_table("core_eia__codes_reporting_frequencies")
+ op.drop_table("core_eia__codes_regulations")
+ op.drop_table("core_eia__codes_prime_movers")
+ op.drop_table("core_eia__codes_particulate_units")
+ op.drop_table("core_eia__codes_particulate_compliance_strategies")
+ op.drop_table("core_eia__codes_operational_status")
+ op.drop_table("core_eia__codes_nox_units")
+ op.drop_table("core_eia__codes_nox_control_status")
+ op.drop_table("core_eia__codes_nox_compliance_strategies")
+ op.drop_table("core_eia__codes_momentary_interruptions")
+ op.drop_table("core_eia__codes_mercury_compliance_strategies")
+ op.drop_table("core_eia__codes_fuel_types_aer")
+ op.drop_table("core_eia__codes_fuel_transportation_modes")
+ op.drop_table("core_eia__codes_firing_types")
+ op.drop_table("core_eia__codes_environmental_equipment_manufacturers")
+ op.drop_table("core_eia__codes_energy_sources")
+ op.drop_table("core_eia__codes_emission_control_equipment_types")
+ op.drop_table("core_eia__codes_contract_types")
+ op.drop_table("core_eia__codes_coalmine_types")
+ op.drop_table("core_eia__codes_boiler_types")
+ op.drop_table("core_eia__codes_boiler_status")
+ op.drop_table("core_eia__codes_boiler_generator_assn_types")
+ op.drop_table("core_eia__codes_balancing_authorities")
+ op.drop_table("core_eia__codes_averaging_periods")
+ op.drop_table("core_eia861__yearly_balancing_authority")
+ op.drop_table("core_eia861__assn_utility")
+ op.drop_table("core_eia861__assn_balancing_authority")
# ### end Alembic commands ###
diff --git a/src/pudl/analysis/__init__.py b/src/pudl/analysis/__init__.py
index 3b489e3d8e..44b2019e7a 100644
--- a/src/pudl/analysis/__init__.py
+++ b/src/pudl/analysis/__init__.py
@@ -7,8 +7,8 @@
"""
from . import (
allocate_gen_fuel,
+ eia_ferc1_record_linkage,
epacamd_eia,
- ferc1_eia_record_linkage,
mcoe,
plant_parts_eia,
service_territory,
diff --git a/src/pudl/analysis/ferc1_eia_record_linkage.py b/src/pudl/analysis/eia_ferc1_record_linkage.py
similarity index 99%
rename from src/pudl/analysis/ferc1_eia_record_linkage.py
rename to src/pudl/analysis/eia_ferc1_record_linkage.py
index 18ba804aba..874342202f 100644
--- a/src/pudl/analysis/ferc1_eia_record_linkage.py
+++ b/src/pudl/analysis/eia_ferc1_record_linkage.py
@@ -55,7 +55,7 @@
io_manager_key="pudl_sqlite_io_manager",
compute_kind="Python",
)
-def out__yearly_plants_all_ferc1_plant_parts_eia(
+def out_pudl__yearly_assn_eia_ferc1_plant_parts(
out_ferc1__yearly_all_plants: pd.DataFrame,
out_ferc1__yearly_steam_plants_fuel_by_plant_sched402: pd.DataFrame,
out_eia__yearly_plant_parts: pd.DataFrame,
@@ -100,7 +100,7 @@ def out__yearly_plants_all_ferc1_plant_parts_eia(
add_null_overrides
) # Override specified values with NA record_id_eia
connects_ferc1_eia = Resource.from_id(
- "out__yearly_plants_all_ferc1_plant_parts_eia"
+ "out_pudl__yearly_assn_eia_ferc1_plant_parts"
).enforce_schema(connects_ferc1_eia)
return connects_ferc1_eia
@@ -696,7 +696,7 @@ def prep_train_connections(
one_to_many = (
pd.read_csv(
importlib.resources.files("pudl.package_data.glue")
- / "ferc1_eia_one_to_many.csv"
+ / "eia_ferc1_one_to_many.csv"
)
.pipe(pudl.helpers.cleanstrings_snake, ["record_id_eia"])
.drop_duplicates(subset=["record_id_ferc1", "record_id_eia"])
@@ -744,7 +744,7 @@ def prep_train_connections(
train_df = (
pd.read_csv(
- importlib.resources.files("pudl.package_data.glue") / "ferc1_eia_train.csv"
+ importlib.resources.files("pudl.package_data.glue") / "eia_ferc1_train.csv"
)
.pipe(pudl.helpers.cleanstrings_snake, ["record_id_eia"])
.drop_duplicates(subset=["record_id_ferc1", "record_id_eia"])
@@ -1032,7 +1032,7 @@ def add_null_overrides(connects_ferc1_eia):
logger.info("Overriding specified record_id_ferc1 values with NA record_id_eia")
# Get record_id_ferc1 values that should be overriden to have no EIA match
null_overrides = pd.read_csv(
- importlib.resources.files("pudl.package_data.glue") / "ferc1_eia_null.csv"
+ importlib.resources.files("pudl.package_data.glue") / "eia_ferc1_null.csv"
).pipe(
restrict_train_connections_on_date_range,
id_col="record_id_ferc1",
diff --git a/src/pudl/analysis/ferc1_eia_train.py b/src/pudl/analysis/eia_ferc1_train.py
similarity index 94%
rename from src/pudl/analysis/ferc1_eia_train.py
rename to src/pudl/analysis/eia_ferc1_train.py
index 23f69c387c..f441219b3f 100644
--- a/src/pudl/analysis/ferc1_eia_train.py
+++ b/src/pudl/analysis/eia_ferc1_train.py
@@ -149,25 +149,25 @@ def _is_best_match(
return df
-def _prep_ferc1_eia(ferc1_eia, utils_eia860) -> pd.DataFrame:
+def _prep_eia_ferc1(eia_ferc1, utils_eia860) -> pd.DataFrame:
"""Prep FERC-EIA for use in override output sheet pre-utility subgroups.
Args:
- ferc1_eia (pd.DataFrame): The dataframe resulting from pudl_out.ferc1_eia().
+ eia_ferc1 (pd.DataFrame): The dataframe resulting from pudl_out.ferc1_eia().
utils_eia860 (pd.DataFrame): The dataframe resulting from pudl_out.utils_eia860.
Returns:
- pd.DataFrame: A version of the ferc1_eia table that's been modified for
+ pd.DataFrame: A version of the eia_ferc1 table that's been modified for
the purposes of creating an manual mapping spreadsheet.
"""
logger.debug("Prepping FERC-EIA table")
# Only want to keep the plant_name_ppe field which replaces plant_name_eia
- ferc1_eia_prep = ferc1_eia.copy().drop(columns="plant_name_eia")
+ eia_ferc1_prep = eia_ferc1.copy().drop(columns="plant_name_eia")
# Add utility_name_eia - this must happen before renaming the cols or else there
# will be duplicate utility_name_eia columns.
utils_eia860.loc[:, "report_year"] = utils_eia860.report_date.dt.year
- ferc1_eia_prep = pd.merge(
- ferc1_eia_prep,
+ eia_ferc1_prep = pd.merge(
+ eia_ferc1_prep,
utils_eia860[["utility_id_eia", "utility_name_eia", "report_year"]].copy(),
on=["utility_id_eia", "report_year"],
how="left",
@@ -176,43 +176,43 @@ def _prep_ferc1_eia(ferc1_eia, utils_eia860) -> pd.DataFrame:
# Add the new columns to the df
for new_col in [x for x in RENAME_COLS_FERC1_EIA if "new_" in x]:
- ferc1_eia_prep.loc[:, new_col] = pd.NA
+ eia_ferc1_prep.loc[:, new_col] = pd.NA
# Rename the columns, and remove unwanted columns from ferc-eia table
- ferc1_eia_prep = ferc1_eia_prep.rename(columns=RENAME_COLS_FERC1_EIA)[
+ eia_ferc1_prep = eia_ferc1_prep.rename(columns=RENAME_COLS_FERC1_EIA)[
list(RENAME_COLS_FERC1_EIA.values())
]
# Add in pct diff values
for pct_diff_col in [x for x in RENAME_COLS_FERC1_EIA.values() if "_pct_diff" in x]:
- ferc1_eia_prep = _pct_diff(ferc1_eia_prep, pct_diff_col)
+ eia_ferc1_prep = _pct_diff(eia_ferc1_prep, pct_diff_col)
# Add in fuel_type_code_pudl diff (qualitative bool)
- ferc1_eia_prep["fuel_type_code_pudl_diff"] = False
- ferc1_eia_prep_nona = ferc1_eia_prep[
- ferc1_eia_prep.fuel_type_code_pudl_eia.notna()
- & ferc1_eia_prep.fuel_type_code_pudl_ferc1.notna()
+ eia_ferc1_prep["fuel_type_code_pudl_diff"] = False
+ eia_ferc1_prep_nona = eia_ferc1_prep[
+ eia_ferc1_prep.fuel_type_code_pudl_eia.notna()
+ & eia_ferc1_prep.fuel_type_code_pudl_ferc1.notna()
].copy()
- ferc1_eia_prep_nona["fuel_type_code_pudl_diff"] = (
- ferc1_eia_prep_nona.fuel_type_code_pudl_eia
- == ferc1_eia_prep_nona.fuel_type_code_pudl_ferc1
+ eia_ferc1_prep_nona["fuel_type_code_pudl_diff"] = (
+ eia_ferc1_prep_nona.fuel_type_code_pudl_eia
+ == eia_ferc1_prep_nona.fuel_type_code_pudl_ferc1
)
- ferc1_eia_prep.update(ferc1_eia_prep_nona)
+ eia_ferc1_prep.update(eia_ferc1_prep_nona)
# Add in installation_year diff (diff vs. pct_diff)
- ferc1_eia_prep.loc[
- ferc1_eia_prep.installation_year_ferc1.notna(), "installation_year_ferc1"
- ] = ferc1_eia_prep.installation_year_ferc1.astype("Int64")
+ eia_ferc1_prep.loc[
+ eia_ferc1_prep.installation_year_ferc1.notna(), "installation_year_ferc1"
+ ] = eia_ferc1_prep.installation_year_ferc1.astype("Int64")
- ferc1_eia_prep.loc[
- ferc1_eia_prep.installation_year_eia.notna()
- & ferc1_eia_prep.installation_year_ferc1.notna(),
+ eia_ferc1_prep.loc[
+ eia_ferc1_prep.installation_year_eia.notna()
+ & eia_ferc1_prep.installation_year_ferc1.notna(),
"installation_year_diff",
] = (
- ferc1_eia_prep.installation_year_eia - ferc1_eia_prep.installation_year_ferc1
+ eia_ferc1_prep.installation_year_eia - eia_ferc1_prep.installation_year_ferc1
)
# Add best match col
- ferc1_eia_prep = _is_best_match(ferc1_eia_prep)
- return ferc1_eia_prep
+ eia_ferc1_prep = _is_best_match(eia_ferc1_prep)
+ return eia_ferc1_prep
def _prep_ppe(ppe, utils_eia860) -> pd.DataFrame:
@@ -291,9 +291,9 @@ def _get_util_year_subsets(inputs_dict, util_id_eia_list, years) -> dict:
or year subset"
)
- if df_name == "ferc1_eia":
+ if df_name == "eia_ferc1":
# Add column with excel formula to check if the override record id is the
- # same as the AI assigend id. Doing this here instead of prep_ferc1_eia
+ # same as the AI assigend id. Doing this here instead of prep_eia_ferc1
# because it is based on row index number which is changes when you take a
# subset of the data.
subset_df = subset_df.reset_index(drop=True)
@@ -338,7 +338,7 @@ def _output_override_spreadsheet(
def generate_all_override_spreadsheets(
- ferc1_eia, ppe, utils_eia860, util_dict, years, output_dir_path
+ eia_ferc1, ppe, utils_eia860, util_dict, years, output_dir_path
) -> None:
"""Output override spreadsheets for all specified utilities and years.
@@ -346,7 +346,7 @@ def generate_all_override_spreadsheets(
output directory.
Args:
- ferc1_eia (pd.DataFrame): The dataframe resulting from pudl_out.ferc1_eia().
+ eia_ferc1 (pd.DataFrame): The dataframe resulting from pudl_out.ferc1_eia().
ppe (pd.DataFrame): The dataframe resulting from pudl_out.plant_parts_eia
utils_eia860 (pd.DataFrame): The dataframe resulting from pudl_out.utils_eia860.
util_dict (dict): A dictionary with keys that are the names of utility
@@ -360,7 +360,7 @@ def generate_all_override_spreadsheets(
# Generate full input tables
# inputs_dict = _generate_input_dfs(pudl_out)
inputs_dict = {
- "ferc1_eia": _prep_ferc1_eia(ferc1_eia, utils_eia860),
+ "eia_ferc1": _prep_eia_ferc1(eia_ferc1, utils_eia860),
"ppe": _prep_ppe(ppe, utils_eia860),
}
@@ -427,7 +427,7 @@ def check_if_already_in_training(training_data, validated_connections):
def validate_override_fixes(
validated_connections,
ppe,
- ferc1_eia,
+ eia_ferc1,
training_data,
expect_override_overrides=False,
allow_mismatched_utilities=True,
@@ -439,7 +439,7 @@ def validate_override_fixes(
directory that is ready to be added to be validated and subsumed into the
training data.
ppe (pd.DataFrame): The dataframe resulting from pudl_out.plant_parts_eia
- ferc1_eia (pd.DataFrame): The dataframe resulting from pudl_out.ferc1_eia
+ eia_ferc1 (pd.DataFrame): The dataframe resulting from pudl_out.ferc1_eia
training_data (pd.DataFrame): The current FERC-EIA training data
expect_override_overrides (boolean): Whether you expect the tables to have
overridden matches already in the training data.
@@ -496,7 +496,7 @@ def validate_override_fixes(
)
# It's unlikely that this changed, but check FERC id too just in case!
- actual_ferc_ids = ferc1_eia.record_id_ferc1.unique()
+ actual_ferc_ids = eia_ferc1.record_id_ferc1.unique()
_check_id_consistency(
"record_id_ferc1", only_overrides, actual_ferc_ids, "values that don't exist"
)
@@ -686,7 +686,7 @@ def _add_to_one_to_many_overrides(one_to_many, current_one_to_many_path) -> None
def validate_and_add_to_training(
utils_eia860,
ppe,
- ferc1_eia,
+ eia_ferc1,
input_dir_path,
expect_override_overrides=False,
allow_mismatched_utilities=True,
@@ -712,12 +712,12 @@ def validate_and_add_to_training(
pandas.DataFrame: A DataFrame with all of the new overrides combined.
"""
glue_resource_path = importlib.resources.files("pudl.package_data.glue")
- path_to_current_training = glue_resource_path / "ferc1_eia_train.csv"
+ path_to_current_training = glue_resource_path / "eia_ferc1_train.csv"
path_to_new_training = input_dir_path
current_training_df = pd.read_csv(path_to_current_training)
- path_to_null_overrides = glue_resource_path / "ferc1_eia_null.csv"
+ path_to_null_overrides = glue_resource_path / "eia_ferc1_null.csv"
if one_to_many:
- path_to_one_to_many = glue_resource_path / "ferc1_eia_one_to_many.csv"
+ path_to_one_to_many = glue_resource_path / "eia_ferc1_one_to_many.csv"
override_cols = [
"record_id_eia",
"record_id_ferc1",
@@ -742,7 +742,7 @@ def validate_and_add_to_training(
file_df = file_raw.pipe(
validate_override_fixes,
ppe,
- ferc1_eia,
+ eia_ferc1,
current_training_df,
expect_override_overrides=expect_override_overrides,
allow_mismatched_utilities=allow_mismatched_utilities,
@@ -766,7 +766,7 @@ def validate_and_add_to_training(
multi_file_df = multi_df.pipe(
validate_override_fixes,
ppe=ppe,
- ferc1_eia=ferc1_eia,
+ eia_ferc1=eia_ferc1,
training_data=current_training_df,
expect_override_overrides=expect_override_overrides,
allow_mismatched_utilities=allow_mismatched_utilities,
diff --git a/src/pudl/analysis/plant_parts_eia.py b/src/pudl/analysis/plant_parts_eia.py
index 1a1cc5b5df..ff0a93d759 100644
--- a/src/pudl/analysis/plant_parts_eia.py
+++ b/src/pudl/analysis/plant_parts_eia.py
@@ -645,7 +645,7 @@ def execute(self, gens_mega, plants_eia860, utils_eia860):
plant_parts_eia=plant_parts_eia,
part_name="plant_match_ferc1",
path_to_one_to_many=resources.files("pudl.package_data.glue").joinpath(
- "ferc1_eia_one_to_many.csv",
+ "eia_ferc1_one_to_many.csv",
),
)
self.plant_parts_eia = TrueGranLabeler().execute(self.plant_parts_eia)
@@ -761,7 +761,7 @@ def add_one_to_many(
assert (
double_df.empty
- ), f"The following record ids have >1 faked part. Double-check these records or move them to the ferc1_eia_null.csv: {one_to_many.loc[one_to_many.gen_id.isin(orig_ids.record_id_eia), 'record_id_ferc1'].drop_duplicates().tolist()}"
+ ), f"The following record ids have >1 faked part. Double-check these records or move them to the eia_ferc1_null.csv: {one_to_many.loc[one_to_many.gen_id.isin(orig_ids.record_id_eia), 'record_id_ferc1'].drop_duplicates().tolist()}"
return pd.concat([plant_parts_eia, part_df])
diff --git a/src/pudl/etl/__init__.py b/src/pudl/etl/__init__.py
index bb5f5c9a5a..d9a67dc897 100644
--- a/src/pudl/etl/__init__.py
+++ b/src/pudl/etl/__init__.py
@@ -77,8 +77,8 @@
[pudl.analysis.state_demand], group_name="out_state_demand_ferc714"
),
*load_assets_from_modules(
- [pudl.analysis.plant_parts_eia, pudl.analysis.ferc1_eia_record_linkage],
- group_name="ferc1_eia_record_linkage",
+ [pudl.analysis.plant_parts_eia, pudl.analysis.eia_ferc1_record_linkage],
+ group_name="eia_ferc1_record_linkage",
),
)
diff --git a/src/pudl/etl/analysis_assets.py b/src/pudl/etl/analysis_assets.py
index a605000bb9..37455f5d48 100644
--- a/src/pudl/etl/analysis_assets.py
+++ b/src/pudl/etl/analysis_assets.py
@@ -9,7 +9,7 @@
* state_demand_assets
* depreciation_assets
* plant_parts_eia_assets
-* ferc1_eia_record_linkage_assets
+* eia_ferc1_record_linkage_assets
Not sure what the right organization is but they'll be defined across a bunch of
different modules. Eventually I imagine these would just be the novel derived values,
diff --git a/src/pudl/extract/eia860m.py b/src/pudl/extract/eia860m.py
index 69134235c1..a0a33bf866 100644
--- a/src/pudl/extract/eia860m.py
+++ b/src/pudl/extract/eia860m.py
@@ -43,6 +43,9 @@ def process_raw(self, df, page, **partition):
df["report_year"] = datetime.strptime(
list(partition.values())[0], "%Y-%m"
).year
+ df["report_date"] = pd.to_datetime(
+ list(partition.values())[0], format="%Y-%m", exact=False
+ )
df = self.add_data_maturity(df, page, **partition)
self.cols_added.append("report_year")
# Eventually we should probably make this a transform
diff --git a/src/pudl/metadata/resources/ferc1_eia_record_linkage.py b/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
index e6cb93a781..3c04c82ab0 100644
--- a/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
+++ b/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
@@ -123,7 +123,7 @@
"etl_group": "outputs",
"field_namespace": "eia",
},
- "out__yearly_plants_all_ferc1_plant_parts_eia": {
+ "out_pudl__yearly_assn_eia_ferc1_plant_parts": {
"description": """This table links power plant data reported in FERC Form 1 to related EIA data. It
answers the question "What EIA data reported about plants or generators should be
associated with a given plant record found in the FERC Form 1."
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 87aa9a1ce2..41f8dbd455 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -221,7 +221,7 @@ def _register_output_methods(self: Self):
# plant parts
"out_eia__yearly_generators_by_ownership": "gens_mega_eia",
"out_eia__yearly_plant_parts": "plant_parts_eia",
- "out__yearly_plants_all_ferc1_plant_parts_eia": "ferc1_eia",
+ "out_pudl__yearly_assn_eia_ferc1_plant_parts": "ferc1_eia",
}
table_method_map_any_agg = {
diff --git a/src/pudl/package_data/glue/ferc1_eia_null.csv b/src/pudl/package_data/glue/eia_ferc1_null.csv
similarity index 100%
rename from src/pudl/package_data/glue/ferc1_eia_null.csv
rename to src/pudl/package_data/glue/eia_ferc1_null.csv
diff --git a/src/pudl/package_data/glue/ferc1_eia_one_to_many.csv b/src/pudl/package_data/glue/eia_ferc1_one_to_many.csv
similarity index 100%
rename from src/pudl/package_data/glue/ferc1_eia_one_to_many.csv
rename to src/pudl/package_data/glue/eia_ferc1_one_to_many.csv
diff --git a/src/pudl/package_data/glue/ferc1_eia_one_to_many_orig.csv b/src/pudl/package_data/glue/eia_ferc1_one_to_many_orig.csv
similarity index 100%
rename from src/pudl/package_data/glue/ferc1_eia_one_to_many_orig.csv
rename to src/pudl/package_data/glue/eia_ferc1_one_to_many_orig.csv
diff --git a/src/pudl/package_data/glue/ferc1_eia_train.csv b/src/pudl/package_data/glue/eia_ferc1_train.csv
similarity index 100%
rename from src/pudl/package_data/glue/ferc1_eia_train.csv
rename to src/pudl/package_data/glue/eia_ferc1_train.csv
diff --git a/test/integration/ferc1_eia_train_test.py b/test/integration/ferc1_eia_train_test.py
index ddde78d521..54f0ecf238 100644
--- a/test/integration/ferc1_eia_train_test.py
+++ b/test/integration/ferc1_eia_train_test.py
@@ -1,4 +1,4 @@
-"""Tests for the validation functions in the ferc1_eia_train module.
+"""Tests for the validation functions in the eia_ferc1_train module.
The functions that this module is testing were not designed with tests in mind. Ideally
we would refactor the functions to be more testable, but for now we are just focusing on
@@ -19,10 +19,10 @@
import pandas as pd
import pytest
-from pudl.analysis.ferc1_eia_record_linkage import (
+from pudl.analysis.eia_ferc1_record_linkage import (
restrict_train_connections_on_date_range,
)
-from pudl.analysis.ferc1_eia_train import (
+from pudl.analysis.eia_ferc1_train import (
generate_all_override_spreadsheets,
validate_override_fixes,
)
@@ -43,16 +43,17 @@ def plant_parts_eia(fast_out_annual):
@pytest.fixture(scope="module")
-def ferc1_eia(fast_out_annual):
- """The ferc1_eia output table."""
+def eia_ferc1(fast_out_annual):
+ """The eia_ferc1 output table."""
+ # the pudl_out name here is the old, non-alphabetized ordering.
return fast_out_annual.ferc1_eia()
@pytest.fixture(scope="module")
-def ferc1_eia_training_data():
- """The training data for the ferc1_eia matching."""
+def eia_ferc1_training_data():
+ """The training data for the eia_ferc1 matching."""
return pd.read_csv(
- importlib.resources.files("pudl.package_data.glue") / "ferc1_eia_train.csv"
+ importlib.resources.files("pudl.package_data.glue") / "eia_ferc1_train.csv"
)
@@ -129,8 +130,8 @@ def ferc1_eia_training_data():
)
def test_validate_override_fixes(
plant_parts_eia,
- ferc1_eia,
- ferc1_eia_training_data,
+ eia_ferc1,
+ eia_ferc1_training_data,
verified,
report_year,
record_id_eia_override_1,
@@ -147,27 +148,27 @@ def test_validate_override_fixes(
"utility_id_pudl_ferc1": utility_id_pudl_ferc1,
}
).assign(verified=lambda x: x.verified.astype("bool"))
- ferc1_eia_training_data_restricted = restrict_train_connections_on_date_range(
- train_df=ferc1_eia_training_data,
+ eia_ferc1_training_data_restricted = restrict_train_connections_on_date_range(
+ train_df=eia_ferc1_training_data,
id_col="record_id_ferc1",
- start_date=min(ferc1_eia.report_date),
- end_date=max(ferc1_eia.report_date),
+ start_date=min(eia_ferc1.report_date),
+ end_date=max(eia_ferc1.report_date),
)
validate_override_fixes(
validated_connections=test_df,
ppe=plant_parts_eia,
- ferc1_eia=ferc1_eia,
- training_data=ferc1_eia_training_data_restricted,
+ eia_ferc1=eia_ferc1,
+ training_data=eia_ferc1_training_data_restricted,
expect_override_overrides=True,
allow_mismatched_utilities=True,
)
-def test_generate_all_override_spreadsheets(plant_parts_eia, ferc1_eia, utils_eia860):
+def test_generate_all_override_spreadsheets(plant_parts_eia, eia_ferc1, utils_eia860):
"""Test the genation of the override spreadsheet for mapping FERC-EIA records."""
# Create the test spreadsheet
generate_all_override_spreadsheets(
- ferc1_eia,
+ eia_ferc1,
plant_parts_eia,
utils_eia860,
util_dict={"NextEra": [6452, 7801]},
From fc7de0e34181458ccf261fdb2200111630c12e6f Mon Sep 17 00:00:00 2001
From: Christina Gosnell
Date: Fri, 3 Nov 2023 10:22:38 -0400
Subject: [PATCH 46/70] ooooops remove the eia860m extraction edit bc that was
not supposed to be in here ooop
---
src/pudl/extract/eia860m.py | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/pudl/extract/eia860m.py b/src/pudl/extract/eia860m.py
index a0a33bf866..69134235c1 100644
--- a/src/pudl/extract/eia860m.py
+++ b/src/pudl/extract/eia860m.py
@@ -43,9 +43,6 @@ def process_raw(self, df, page, **partition):
df["report_year"] = datetime.strptime(
list(partition.values())[0], "%Y-%m"
).year
- df["report_date"] = pd.to_datetime(
- list(partition.values())[0], format="%Y-%m", exact=False
- )
df = self.add_data_maturity(df, page, **partition)
self.cols_added.append("report_year")
# Eventually we should probably make this a transform
From 10111e4ae61c976c0ec9c9e86b2e185dc87f2731 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 6 Nov 2023 17:01:49 -0900
Subject: [PATCH 47/70] Remove README.rst from index.rst and move intro content
to index
---
README.rst | 23 ++--
docs/data_access.rst | 10 +-
docs/dev/naming_conventions.rst | 2 +-
docs/index.rst | 210 +++++++++++++++++++++++++++++++-
docs/intro.rst | 207 -------------------------------
docs/release_notes.rst | 2 +-
6 files changed, 224 insertions(+), 230 deletions(-)
delete mode 100644 docs/intro.rst
diff --git a/README.rst b/README.rst
index 3e993f95dc..45e08b00e3 100644
--- a/README.rst
+++ b/README.rst
@@ -59,6 +59,16 @@ it's often difficult to work with. PUDL takes the original spreadsheets, CSV fil
and databases and turns them into a unified resource. This allows users to spend more
time on novel analysis and less time on data preparation.
+The project is focused on serving researchers, activists, journalists, policy makers,
+and small businesses that might not otherwise be able to afford access to this data
+from commercial sources and who may not have the time or expertise to do all the
+data processing themselves from scratch.
+
+We want to make this data accessible and easy to work with for as wide an audience as
+possible: anyone from a grassroots youth climate organizers working with Google
+sheets to university researchers with access to scalable cloud computing
+resources and everyone in between!
+
PUDL is comprised of three core components:
- **Raw Data Archives**
@@ -132,19 +142,6 @@ Program `__, from
(Annual Report of Major Natural Gas Companies)
* `PHMSA Natural Gas Annual Report `__
-Who is PUDL for?
-----------------
-
-The project is focused on serving researchers, activists, journalists, policy makers,
-and small businesses that might not otherwise be able to afford access to this data
-from commercial sources and who may not have the time or expertise to do all the
-data processing themselves from scratch.
-
-We want to make this data accessible and easy to work with for as wide an audience as
-possible: anyone from a grassroots youth climate organizers working with Google
-sheets to university researchers with access to scalable cloud computing
-resources and everyone in between!
-
How do I access the data?
-------------------------
diff --git a/docs/data_access.rst b/docs/data_access.rst
index dde39b0510..282cdb9bff 100644
--- a/docs/data_access.rst
+++ b/docs/data_access.rst
@@ -2,16 +2,16 @@
Data Access
=======================================================================================
-We publish the :doc:`PUDL pipeline ` outputs in several ways to serve
+We publish the PUDL pipeline outputs in several ways to serve
different users and use cases. We're always trying to increase accessibility of the
PUDL data, so if you have a suggestion please `open a GitHub issue
`__. If you have a question you
can `create a GitHub discussion `__.
-PUDL's primary data output is the ``pudl.sqlite`` database. We recommend working
-with tables with the ``out_`` prefix as these tables contain the most complete
-data. For more information about the different types of tables, read through
-:ref:`PUDL's naming conventions `.
+PUDL's primary data output is the ``pudl.sqlite`` database. We recommend working with
+tables with the ``out_`` prefix, as these tables contain the most complete and easiest
+to work with data. For more information about the different types
+of tables, read through :ref:`PUDL's naming conventions `.
.. _access-modes:
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 178f22934c..2cbe6145de 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -16,7 +16,7 @@ PUDL's data processing is divided into three layers of Dagster assets: Raw, Core
and Output. Dagster assets are the core unit of computation in PUDL. The outputs
of assets can be persisted to any type of storage though PUDL outputs are typically
tables in a SQLite database, parquet files or pickle files (read more about this here:
-:doc:`../intro`). The asset name is used for the table or parquet file name. Asset
+:doc:`../index`). The asset name is used for the table or parquet file name. Asset
names should generally follow this naming convention:
.. code-block::
diff --git a/docs/index.rst b/docs/index.rst
index f7904d4a97..d21bfc3044 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -2,14 +2,218 @@
The Public Utility Data Liberation Project
===============================================================================
-.. include:: ../README.rst
- :start-after: readme-intro
+PUDL is a data processing pipeline created by `Catalyst Cooperative
+`__ that cleans, integrates, and standardizes some of the most
+widely used public energy datasets in the US. The data serve researchers, activists,
+journalists, and policy makers that might not have the technical expertise to access it
+in its raw form, the time to clean and prepare the data for bulk analysis, or the means
+to purchase it from existing commercial providers.
+
+---------------------------------------------------------------------------------------
+Available Data
+---------------------------------------------------------------------------------------
+
+We focus primarily on poorly curated data published by the US government in
+semi-structured but machine readable formats. For details on exactly what data is
+available from these data sources and what state it is in, see the the individual
+pages for each source:
+
+* :doc:`data_sources/eia860`
+* :doc:`data_sources/eia861`
+* :doc:`data_sources/eia923`
+* :doc:`data_sources/epacems`
+* :doc:`data_sources/ferc1`
+* :doc:`data_sources/ferc714`
+
+PUDL's clean and complete versions of these data sources are stored in the
+``pudl.sqlite`` database and ``core_epacems__hourly_emissions.parquet`` files.
+To get started using PUDL data, visit our :doc:`data_access` page, or continue reading
+to learn more about the PUDL data processing pipeline.
+
+We also publish SQLite databases containing relatively pristine versions of our more
+difficult to parse inputs, especially the old Visual FoxPro (DBF, pre-2021) and new XBRL
+data (2021+) published by FERC:
+
+* `FERC Form 1 (DBF) `__
+* `FERC Form 1 (XBRL) `__
+* `FERC Form 2 (XBRL) `__
+* `FERC Form 6 (XBRL) `__
+* `FERC Form 60 (XBRL) `__
+* `FERC Form 714 (XBRL) `__
+
+.. _raw-data-archive:
+
+---------------------------------------------------------------------------------------
+Raw Data Archives
+---------------------------------------------------------------------------------------
+
+PUDL depends on "raw" data inputs from sources that are known to occasionally update
+their data or alter the published format. These changes may be incompatible with the way
+the data are read and interpreted by PUDL, so, to ensure the integrity of our data
+processing, we periodically create archives of `the raw inputs on Zenodo
+`__. Each of the data inputs may
+have several different versions archived, and all are assigned a unique DOI and made
+available through the REST API. Each release of the PUDL Python package is embedded
+with a set of of DOIs to indicate which version of the raw inputs it is meant to
+process. This process helps ensure that our outputs are replicable.
+
+To enable programmatic access to individual partitions of the data (by year, state,
+etc.), we archive the raw inputs as `Frictionless Data Packages
+`__. The data packages contain both the
+raw data in their originally published format (CSVs, Excel spreadsheets, and Visual
+FoxPro database (DBF) files) and metadata that describes how each the
+dataset is partitioned.
+
+The PUDL software will download a copy of the appropriate raw inputs automatically as
+needed and organize them in a local :doc:`datastore `.
+
+.. seealso::
+
+ The software that creates and archives the raw inputs can be found in our
+ `PUDL Archiver `__
+ repository on GitHub.
+
+.. _etl-process:
+
+---------------------------------------------------------------------------------------
+The ETL Process
+---------------------------------------------------------------------------------------
+
+PUDL's ETL produces a data warehouse that can be used for analytics.
+The processing happens within Dagster assets that are persisted to storage,
+typically pickle, parquet or SQLite files. The raw data moves through three
+layers of processing.
+
+Raw Layer
+^^^^^^^^^
+
+Assets in the Raw layer read the raw data from the original heterogeneous formats into
+a collection of :class:`pandas.DataFrame` with uniform column names across all years so
+that it can be easily processed in bulk. Data distributed as binary database files, such
+as the DBF files from FERC Form 1, may be converted into a unified SQLite database
+before individual dataframes are created. Raw data assets are not written to
+``pudl.sqlite``. Instead they are persisted to pickle files and not distributed
+to users.
+
+.. seealso::
+
+ Module documentation within the :mod:`pudl.extract` subpackage.
+
+Core Layer
+^^^^^^^^^^
+
+The Core layer contains well-modeled assets that serve as building blocks for
+downstream wide tables and analyses. Well-modeled means tables in the database
+have logical primary keys, foreign keys, datatypes and generally follow
+:ref:`Tidy Data standards `. The assets are loaded to a SQLite
+database or Parquet file.
+
+These outputs can be accessed via Python, R, and many other tools. See the
+:doc:`data_dictionaries/pudl_db` page for a list of the normalized database tables and
+their contents.
+
+Data processing in the Core layer is generally broken down into two phases. Phase one
+focuses on cleaning and organizing data within individual tables while phase two focuses
+on the integration and deduplication of data between tables. These tasks can be tedious
+`data wrangling toil `__ that impose a
+huge amount of overhead on anyone trying to do analysis based on the publicly
+available data. PUDL implements common data cleaning operations in the hopes that we
+can all work on more interesting problems most of the time. These operations include:
+
+* Standardization of units (e.g. dollars not thousands of dollars)
+* Standardization of N/A values
+* Standardization of freeform names and IDs
+* Use of controlled vocabularies for categorical values like fuel type
+* Use of more readable codes and column names
+* Imposition of well defined, rich data types for each column
+* Converting local timestamps to UTC
+* Reshaping of data into well normalized tables which minimize data duplication
+* Inferring Plant IDs which link records across many years of FERC Form 1 data
+* Inferring linkages between FERC and EIA Plants and Utilities.
+* Inferring more complete associations between EIA boilers and generators
+
+.. seealso::
+
+ The module and per-table transform functions in the :mod:`pudl.transform`
+ sub-package have more details on the specific transformations applied to each
+ table.
+
+Many of the original datasets contain large amounts of duplicated data. For instance,
+the EIA reports the name of each power plant in every table that refers to otherwise
+unique plant-related data. Similarly, many attributes like plant latitude and
+longitude are reported separately every year. Often, these reported values are not
+self-consistent. There may be several different spellings of a plant's name, or an
+incorrectly reported latitude in one year.
+
+Assets in the Core layer attempt to eliminate this kind of inconsistent and duplicate
+information when normalizing the tables by choosing only the most consistently reported
+value for inclusion in the final database. If a value which should be static is not
+consistently reported, it may also be set to N/A.
+
+Output Layer
+^^^^^^^^^^^^^^^^^^^^
+
+Assets in the Core layer normalize the data to make storage more efficient and avoid
+data integrity issues, but you may want to combine information from more than one of
+the tables to make the data more readable and readily interpretable. For example, PUDL
+stores the name that EIA uses to refer to a power plant in the
+:ref:`core_eia__entity_plants` table in association with the plant's unique numeric ID.
+If you are working with data from the :ref:`core_eia923__monthly_fuel_receipts_costs`
+table, which records monthly per-plant fuel deliveries, you may want to have the name
+of the plant alongside the fuel delivery information since it's more recognizable than
+the plant ID.
+
+Rather than requiring everyone to write their own SQL ``SELECT`` and ``JOIN`` statements
+or do a bunch of :func:`pandas.merge` operations to bring together data, PUDL provides a
+variety of output tables that contain all of the useful information in one place. In
+some cases, like with EIA, the output tables are composed to closely resemble the raw
+spreadsheet tables you're familiar with.
+
+The Output layer also contains tables produced by analytical routines for
+calculating derived values like the heat rate by generation unit (:meth:`hr_by_unit
+`) or the capacity factor by generator
+(:meth:`capacity_factor `). We intend to
+integrate more analytical outputs into the library over time.
+
+.. seealso::
+
+ * `The PUDL Examples GitHub repo `__
+ to see how to access the PUDL Database directly, use the output functions, or
+ work with the EPA CEMS data using Dask.
+ * `How to Learn Dask in 2021 `__
+ is a great collection of self-guided resources if you are already familiar with
+ Python, Pandas, and NumPy.
+
+.. _test-and-validate:
+
+---------------------------------------------------------------------------------------
+Data Validation
+---------------------------------------------------------------------------------------
+We have a growing collection of data validation test cases that we run before
+publishing a data release to try and avoid publishing data with known issues. Most of
+these validations are described in the :mod:`pudl.validate` module. They check things
+like:
+
+* The heat content of various fuel types are within expected bounds.
+* Coal ash, moisture, mercury, sulfur etc. content are within expected bounds
+* Generator heat rates and capacity factors are realistic for the type of prime mover
+ being reported.
+
+Some data validations are currently only specified within our test suite, including:
+
+* The expected number of records within each table
+* The fact that there are no entirely N/A columns
+
+A variety of database integrity checks are also run either during the data processing
+or when the data is loaded into SQLite.
+
+See our :doc:`dev/testing` documentation for more information.
+
.. toctree::
:hidden:
:maxdepth: 2
- intro
data_access
data_sources/index
data_dictionaries/index
diff --git a/docs/intro.rst b/docs/intro.rst
deleted file mode 100644
index cbb0b78cc4..0000000000
--- a/docs/intro.rst
+++ /dev/null
@@ -1,207 +0,0 @@
-=======================================================================================
-Introduction
-=======================================================================================
-
-PUDL is a data processing pipeline created by `Catalyst Cooperative
-`__ that cleans, integrates, and standardizes some of the most
-widely used public energy datasets in the US. The data serve researchers, activists,
-journalists, and policy makers that might not have the technical expertise to access it
-in its raw form, the time to clean and prepare the data for bulk analysis, or the means
-to purchase it from existing commercial providers.
-
----------------------------------------------------------------------------------------
-Available Data
----------------------------------------------------------------------------------------
-
-We focus primarily on poorly curated data published by the US government in
-semi-structured but machine readable formats. For details on exactly what data is
-available from these data sources and what state it is in, see the the individual
-pages for each source:
-
-* :doc:`data_sources/eia860`
-* :doc:`data_sources/eia861`
-* :doc:`data_sources/eia923`
-* :doc:`data_sources/epacems`
-* :doc:`data_sources/ferc1`
-* :doc:`data_sources/ferc714`
-
-We also publish SQLite databases containing relatively pristine versions of our more
-difficult to parse inputs, especially the old Visual FoxPro (DBF, pre-2021) and new XBRL
-data (2021+) published by FERC:
-
-* `FERC Form 1 (DBF) `__
-* `FERC Form 1 (XBRL) `__
-* `FERC Form 2 (XBRL) `__
-* `FERC Form 6 (XBRL) `__
-* `FERC Form 60 (XBRL) `__
-* `FERC Form 714 (XBRL) `__
-
-To get started using PUDL data, visit our :doc:`data_access` page, or continue reading
-to learn more about the PUDL data processing pipeline.
-
-.. _raw-data-archive:
-
----------------------------------------------------------------------------------------
-Raw Data Archives
----------------------------------------------------------------------------------------
-
-PUDL depends on "raw" data inputs from sources that are known to occasionally update
-their data or alter the published format. These changes may be incompatible with the way
-the data are read and interpreted by PUDL, so, to ensure the integrity of our data
-processing, we periodically create archives of `the raw inputs on Zenodo
-`__. Each of the data inputs may
-have several different versions archived, and all are assigned a unique DOI and made
-available through the REST API. Each release of the PUDL Python package is embedded
-with a set of of DOIs to indicate which version of the raw inputs it is meant to
-process. This process helps ensure that our outputs are replicable.
-
-To enable programmatic access to individual partitions of the data (by year, state,
-etc.), we archive the raw inputs as `Frictionless Data Packages
-`__. The data packages contain both the
-raw data in their originally published format (CSVs, Excel spreadsheets, and Visual
-FoxPro database (DBF) files) and metadata that describes how each the
-dataset is partitioned.
-
-The PUDL software will download a copy of the appropriate raw inputs automatically as
-needed and organize them in a local :doc:`datastore `.
-
-.. seealso::
-
- The software that creates and archives the raw inputs can be found in our
- `PUDL Archiver `__
- repository on GitHub.
-
-.. _etl-process:
-
----------------------------------------------------------------------------------------
-The ETL Process
----------------------------------------------------------------------------------------
-
-PUDL's ETL produces a data warehouse that can be used for analytics.
-The processing happens within Dagster assets that are persisted to storage,
-typically pickle, parquet or SQLite files. The raw data moves through three
-layers of processing.
-
-Raw Layer
-^^^^^^^^^
-
-Assets in the Raw layer read the raw data from the original heterogeneous formats into
-a collection of :class:`pandas.DataFrame` with uniform column names across all years so
-that it can be easily processed in bulk. Data distributed as binary database files, such
-as the DBF files from FERC Form 1, may be converted into a unified SQLite database
-before individual dataframes are created. Raw data assets are not written to
-``pudl.sqlite``, persisted to pickle files and not distributed to users.
-
-.. seealso::
-
- Module documentation within the :mod:`pudl.extract` subpackage.
-
-Core Layer
-^^^^^^^^^^
-
-The Core layer contains well-modeled assets that serve as building blocks for
-downstream wide tables and analyses. Well-modeled means tables in the database
-have logical primary keys, foreign keys, datatypes and generally follow
-:ref:`Tidy Data standards `. The assets are loaded to a SQLite
-database or Parquet file.
-
-These outputs can be accessed via Python, R, and many other tools. See the
-:doc:`data_dictionaries/pudl_db` page for a list of the normalized database tables and
-their contents.
-
-Data processing in the Core layer is generally broken down into two phases. Phase one
-focuses on cleaning and organizing data within individual tables while phase two focuses
-on the integration and deduplication of data between tables. These tasks can be tedious
-`data wrangling toil `__ that impose a
-huge amount of overhead on anyone trying to do analysis based on the publicly
-available data. PUDL implements common data cleaning operations in the hopes that we
-can all work on more interesting problems most of the time. These operations include:
-
-* Standardization of units (e.g. dollars not thousands of dollars)
-* Standardization of N/A values
-* Standardization of freeform names and IDs
-* Use of controlled vocabularies for categorical values like fuel type
-* Use of more readable codes and column names
-* Imposition of well defined, rich data types for each column
-* Converting local timestamps to UTC
-* Reshaping of data into well normalized tables which minimize data duplication
-* Inferring Plant IDs which link records across many years of FERC Form 1 data
-* Inferring linkages between FERC and EIA Plants and Utilities.
-* Inferring more complete associations between EIA boilers and generators
-
-.. seealso::
-
- The module and per-table transform functions in the :mod:`pudl.transform`
- sub-package have more details on the specific transformations applied to each
- table.
-
-Many of the original datasets contain large amounts of duplicated data. For instance,
-the EIA reports the name of each power plant in every table that refers to otherwise
-unique plant-related data. Similarly, many attributes like plant latitude and
-longitude are reported separately every year. Often, these reported values are not
-self-consistent. There may be several different spellings of a plant's name, or an
-incorrectly reported latitude in one year.
-
-Assets in the Core layer attempt to eliminate this kind of inconsistent and duplicate
-information when normalizing the tables by choosing only the most consistently reported
-value for inclusion in the final database. If a value which should be static is not
-consistently reported, it may also be set to N/A.
-
-Output Layer
-^^^^^^^^^^^^^^^^^^^^
-
-Assets in the Core layer normalize the data to make storage more efficient and avoid
-data integrity issues, but you may want to combine information from more than one of
-the tables to make the data more readable and readily interpretable. For example, PUDL
-stores the name that EIA uses to refer to a power plant in the
-:ref:`core_eia__entity_plants` table in association with the plant's unique numeric ID.
-If you are working with data from the :ref:`core_eia923__monthly_fuel_receipts_costs`
-table, which records monthly per-plant fuel deliveries, you may want to have the name
-of the plant alongside the fuel delivery information since it's more recognizable than
-the plant ID.
-
-Rather than requiring everyone to write their own SQL ``SELECT`` and ``JOIN`` statements
-or do a bunch of :func:`pandas.merge` operations to bring together data, PUDL provides a
-variety of output tables that contain all of the useful information in one place. In
-some cases, like with EIA, the output tables are composed to closely resemble the raw
-spreadsheet tables you're familiar with.
-
-The Output layer also contains tables produced by analytical routines for
-calculating derived values like the heat rate by generation unit (:meth:`hr_by_unit
-`) or the capacity factor by generator
-(:meth:`capacity_factor `). We intend to
-integrate more analytical outputs into the library over time.
-
-.. seealso::
-
- * `The PUDL Examples GitHub repo `__
- to see how to access the PUDL Database directly, use the output functions, or
- work with the EPA CEMS data using Dask.
- * `How to Learn Dask in 2021 `__
- is a great collection of self-guided resources if you are already familiar with
- Python, Pandas, and NumPy.
-
-.. _test-and-validate:
-
----------------------------------------------------------------------------------------
-Data Validation
----------------------------------------------------------------------------------------
-We have a growing collection of data validation test cases that we run before
-publishing a data release to try and avoid publishing data with known issues. Most of
-these validations are described in the :mod:`pudl.validate` module. They check things
-like:
-
-* The heat content of various fuel types are within expected bounds.
-* Coal ash, moisture, mercury, sulfur etc. content are within expected bounds
-* Generator heat rates and capacity factors are realistic for the type of prime mover
- being reported.
-
-Some data validations are currently only specified within our test suite, including:
-
-* The expected number of records within each table
-* The fact that there are no entirely N/A columns
-
-A variety of database integrity checks are also run either during the data processing
-or when the data is loaded into SQLite.
-
-See our :doc:`dev/testing` documentation for more information.
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 9b477f8fa6..fc37f23a0c 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -296,7 +296,7 @@ Deprecations
* Replace references to deprecated ``pudl-scrapers`` and
``pudl-zenodo-datastore`` repositories with references to `pudl-archiver
`__ repository in
- :doc:`intro`, :doc:`dev/datastore`, and :doc:`dev/annual_updates`. See :pr:`2190`.
+ ``intro``, :doc:`dev/datastore`, and :doc:`dev/annual_updates`. See :pr:`2190`.
* :mod:`pudl.etl` is now a subpackage that collects all pudl assets into a dagster
`Definition `__. All
``pudl.etl._etl_{datasource}`` functions have been deprecated. The coordination
From 85c6fe35612cd23755b4b4fab279323ebb70b5f9 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Tue, 7 Nov 2023 16:27:30 -0900
Subject: [PATCH 48/70] Add deprecation warnings to PudlTabl and add minor
naming docs updates
---
docs/dev/naming_conventions.rst | 15 +++++++++++++--
docs/release_notes.rst | 17 +++++++++++++++++
src/pudl/output/pudltabl.py | 11 +++++++++++
3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 178f22934c..3c2d0908b0 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -29,7 +29,9 @@ names should generally follow this naming convention:
``eia860``, ``ferc1`` and ``epacems``.
* ``asset_type`` describes how the asset in modeled.
* ``asset_name`` should describe the entity, categorical code type, or measurement of
- the asset.
+ the asset. Note: FERC Form 1 assets typically include the schedule number in the
+ ``asset_name`` so users and contributors know which schedule the cleaned asset
+ refers to.
Raw layer
^^^^^^^^^
@@ -55,14 +57,23 @@ These assets are typically stored in parquet files or tables in a database.
Naming convention: ``core_{source}__{asset_type}_{asset_name}``
+* ``source`` is sometimes ``pudl``. This means the asset
+ is a derived connection the contributors of PUDL created to connect multiple
+ datasets via manual or machine learning methods.
+
* ``asset_type`` describes how the asset is modeled and its role in PUDL’s
collection of core assets. There are a handful of table types in this layer:
* ``assn``: Association tables provide connections between entities. This data
- can be manually compiled or extracted from data sources. Examples:
+ can be manually compiled or extracted from data sources. If the asset associates
+ data from two sources, the source names should be included in the ``asset_name``.
+ The source names should appear in the same order for all assets that associate
+ the two sources. Examples:
* ``core_pudl__assn_plants_eia`` associates EIA Plant IDs and manually assigned
PUDL Plant IDs.
+ * ``core_epa__assn_epacamd_eia`` associates EPA units with EIA plants, boilers,
+ and generators.
* ``codes``: Code tables contain more verbose descriptions of categorical codes
typically manually compiled from source data dictionaries. Examples:
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 9b477f8fa6..5c2536dbd9 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -67,6 +67,23 @@ Dagster Adoption
* :mod:`pudl.convert.censusdp1tract_to_sqlite` and :mod:`pudl.output.censusdp1tract`
are now integrated into dagster. See :issue:`1973` and :pr:`2621`.
+New Asset Naming Convention
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+There are hundreds of new tables in ``pudl.sqlite`` now that the methods in ``PudlTabl``
+have been converted to Dagster assets. This significant increase in tables and diversity
+of table types prompted us to create a new naming convention to make the table names
+more descriptive and organized. You can read about the new naming convention in the
+:ref:`docs `.
+
+To help users migrate away from using ``PudlTabl`` and our temporary table names,
+we've created a `google sheet `__
+that maps the old table names and ``PudlTabl`` methods to the new table names.
+
+We plan to remove ``PudlTabl`` from the pudl package once our known users have
+succesfully migrated to pulling data directly from ``pudl.sqlite``. We've added
+deprecation warnings to the ``PudlTabl`` class. We expect to remove ``PudlTabl``
+at the end of February 2024.
+
Data Coverage
^^^^^^^^^^^^^
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 08f03a9137..eefc4bb63b 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -89,6 +89,12 @@ def __init__(
unit_ids: If True, use several heuristics to assign
individual generators to functional units. EXPERIMENTAL.
"""
+ logger.warning(
+ "PudlTabl is deprecated and will be removed from the pudl package"
+ "at the end of February 2024. To acccess the data returned by"
+ "this class, pull the desired table directly from the pudl.sqlite"
+ "database."
+ )
if not isinstance(pudl_engine, sa.engine.base.Engine):
raise TypeError(
"PudlTabl needs pudl_engine to be a SQLAlchemy Engine, but we "
@@ -296,6 +302,11 @@ def _get_table_from_db(
"It is retained for backwards compatibility only."
)
table_name = self._agg_table_name(table_name)
+ logger.warning(
+ "PudlTabl is deprecated and will be removed from the pudl package"
+ "at the end of February 2024. To access the data returned by this method,"
+ f"use the {table_name} table in the pudl.sqlite database."
+ )
resource = Resource.from_id(table_name)
return pd.concat(
[
From d61005d497cfa9e81fb28e8a18316046aec854fd Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 4 Oct 2023 08:37:45 +0200
Subject: [PATCH 49/70] Rename heat_rate_mmbtu_mwh ->
heat_rate_mmbtu_mwh_by_unit
---
...ename_heat_rate_mmbtu_mwh_to_heat_rate_.py | 121 ++++++++++++++++++
src/pudl/analysis/eia_ferc1_record_linkage.py | 24 +++-
src/pudl/analysis/eia_ferc1_train.py | 2 +-
src/pudl/analysis/mcoe.py | 25 ++--
src/pudl/analysis/plant_parts_eia.py | 2 +-
src/pudl/metadata/fields.py | 2 +-
src/pudl/metadata/resources/eia.py | 4 +-
src/pudl/metadata/resources/mcoe.py | 10 +-
src/pudl/validate.py | 12 +-
test/unit/analysis/plant_parts_eia_test.py | 4 +-
10 files changed, 172 insertions(+), 34 deletions(-)
create mode 100644 migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py
diff --git a/migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py b/migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py
new file mode 100644
index 0000000000..e5e2f9d299
--- /dev/null
+++ b/migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py
@@ -0,0 +1,121 @@
+"""Rename heat_rate_mmbtu_mwh to heat_rate_mmbtu_mwh_by_unit
+
+Revision ID: c415b55c4dcf
+Revises: ab0540a6484c
+Create Date: 2023-10-04 08:08:23.744433
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'c415b55c4dcf'
+down_revision = 'ab0540a6484c'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/eia_ferc1_record_linkage.py b/src/pudl/analysis/eia_ferc1_record_linkage.py
index 874342202f..786e19d047 100644
--- a/src/pudl/analysis/eia_ferc1_record_linkage.py
+++ b/src/pudl/analysis/eia_ferc1_record_linkage.py
@@ -209,7 +209,9 @@ def get_plants_ferc1(self, clobber: bool = False) -> pd.DataFrame:
x.plant_id_report_year + "_" + x.utility_id_pudl.map(str)
),
fuel_cost_per_mmbtu=lambda x: (x.fuel_cost / x.fuel_mmbtu),
- heat_rate_mmbtu_mwh=lambda x: (x.fuel_mmbtu / x.net_generation_mwh),
+ heat_rate_mmbtu_mwh_by_unit=lambda x: (
+ x.fuel_mmbtu / x.net_generation_mwh
+ ),
)
.rename(
columns={
@@ -419,9 +421,9 @@ def make_features(
label="fuel_cost_per_mmbtu",
),
Numeric(
- "heat_rate_mmbtu_mwh",
- "heat_rate_mmbtu_mwh",
- label="heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
+ "heat_rate_mmbtu_mwh_by_unit",
+ label="heat_rate_mmbtu_mwh_by_unit",
),
Exact(
"fuel_type_code_pudl",
@@ -816,6 +818,20 @@ def prettyify_best_matches(
and FERC plant data. This removes the comparison vectors (the floats between 0 and 1
that compare the two columns from each dataset).
"""
+ # if utility_id_pudl is not in the `PPE_COLS`, we need to include it
+ ppe_cols_to_grab = pudl.analysis.plant_parts_eia.PPE_COLS + [
+ "plant_id_pudl",
+ "total_fuel_cost",
+ "fuel_cost_per_mmbtu",
+ "net_generation_mwh",
+ "capacity_mw",
+ "capacity_factor",
+ "total_mmbtu",
+ "heat_rate_mmbtu_mwh_by_unit",
+ "fuel_type_code_pudl",
+ "installation_year",
+ "plant_part_id_eia",
+ ]
connects_ferc1_eia = (
# first merge in the EIA plant-parts
pd.merge(
diff --git a/src/pudl/analysis/eia_ferc1_train.py b/src/pudl/analysis/eia_ferc1_train.py
index f441219b3f..0a9911a0cb 100644
--- a/src/pudl/analysis/eia_ferc1_train.py
+++ b/src/pudl/analysis/eia_ferc1_train.py
@@ -103,7 +103,7 @@
"total_fuel_cost",
"total_mmbtu",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
]
# --------------------------------------------------------------------------------------
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 8522d6abca..6b3f7b1bab 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -258,7 +258,7 @@ def heat_rate_by_unit(gen_fuel_by_energy_source: pd.DataFrame, bga: pd.DataFrame
- unit_id_pudl
- net_generation_mwh
- fuel_consumed_for_electricity_mmbtu
- - heat_rate_mmbtu_mwh
+ - heat_rate_mmbtu_mwh_by_unit
"""
gen_fuel_by_unit = pudl.helpers.date_merge(
left=gen_fuel_by_energy_source,
@@ -274,7 +274,7 @@ def heat_rate_by_unit(gen_fuel_by_energy_source: pd.DataFrame, bga: pd.DataFrame
.sum()
.convert_dtypes()
.assign(
- heat_rate_mmbtu_mwh=lambda x: x.fuel_consumed_for_electricity_mmbtu
+ heat_rate_mmbtu_mwh_by_unit=lambda x: x.fuel_consumed_for_electricity_mmbtu
/ x.net_generation_mwh
)
)
@@ -299,7 +299,7 @@ def heat_rate_by_gen(
Returns:
DataFrame with columns report_date, plant_id_eia, unit_id_pudl, generator_id,
- heat_rate_mmbtu_mwh, fuel_type_code_pudl, fuel_type_count, prime_mover_code.
+ heat_rate_mmbtu_mwh_by_unit, fuel_type_code_pudl, fuel_type_count, prime_mover_code.
The output will have a time frequency corresponding to that of the input
pudl_out. Output data types are set to their canonical values before returning.
"""
@@ -312,7 +312,7 @@ def heat_rate_by_gen(
"report_date",
"plant_id_eia",
"unit_id_pudl",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
],
]
@@ -377,7 +377,7 @@ def fuel_cost(
"generator_id",
"unit_id_pudl",
"report_date",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
],
]
gens = gens.loc[
@@ -488,7 +488,7 @@ def fuel_cost(
"plant_id_eia",
"report_date",
"generator_id",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"fuel_cost_from_eiaapi",
]
],
@@ -505,7 +505,7 @@ def fuel_cost(
"report_date",
"generator_id",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"fuel_cost_from_eiaapi",
]
]
@@ -513,13 +513,14 @@ def fuel_cost(
fc = (
pd.concat([one_fuel, multi_fuel], sort=True)
.assign(
- fuel_cost_per_mwh=lambda x: x.fuel_cost_per_mmbtu * x.heat_rate_mmbtu_mwh
+ fuel_cost_per_mwh=lambda x: x.fuel_cost_per_mmbtu
+ * x.heat_rate_mmbtu_mwh_by_unit
)
.sort_values(["report_date", "plant_id_eia", "generator_id"])
)
out_df = (
- gen_w_ft.drop("heat_rate_mmbtu_mwh", axis=1)
+ gen_w_ft.drop("heat_rate_mmbtu_mwh_by_unit", axis=1)
.drop_duplicates()
.merge(fc, on=["report_date", "plant_id_eia", "generator_id"])
)
@@ -606,7 +607,7 @@ def mcoe(
"unit_id_pudl",
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"fuel_cost_per_mwh",
],
],
@@ -618,12 +619,12 @@ def mcoe(
)
# Calculate a couple more derived values:
.assign(
- total_mmbtu=lambda x: x.net_generation_mwh * x.heat_rate_mmbtu_mwh,
+ total_mmbtu=lambda x: x.net_generation_mwh * x.heat_rate_mmbtu_mwh_by_unit,
total_fuel_cost=lambda x: x.total_mmbtu * x.fuel_cost_per_mmbtu,
)
.pipe(
pudl.helpers.oob_to_nan_with_dependent_cols,
- cols=["heat_rate_mmbtu_mwh"],
+ cols=["heat_rate_mmbtu_mwh_by_unit"],
dependent_cols=["total_mmbtu", "fuel_cost_per_mwh"],
lb=min_heat_rate,
ub=None,
diff --git a/src/pudl/analysis/plant_parts_eia.py b/src/pudl/analysis/plant_parts_eia.py
index ff0a93d759..62c56bcc49 100644
--- a/src/pudl/analysis/plant_parts_eia.py
+++ b/src/pudl/analysis/plant_parts_eia.py
@@ -281,7 +281,7 @@
WTAVG_DICT = {
"fuel_cost_per_mwh": "capacity_mw",
- "heat_rate_mmbtu_mwh": "capacity_mw",
+ "heat_rate_mmbtu_mwh_by_unit": "capacity_mw",
"fuel_cost_per_mmbtu": "capacity_mw",
}
"""Dict: a dictionary of columns (keys) to perform weighted averages on and the weight
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 56d1fb3bce..7cdf63577b 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -1231,7 +1231,7 @@
"description": "The energy contained in fuel burned, measured in million BTU.",
"unit": "MMBtu",
},
- "heat_rate_mmbtu_mwh": {
+ "heat_rate_mmbtu_mwh_by_unit": {
"type": "number",
"description": "Fuel content per unit of electricity generated. Coming from MCOE calculation.",
"unit": "MMBtu_MWh",
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index d67edc40b8..976746061c 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -551,7 +551,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
@@ -651,7 +651,7 @@
"fuel_cost_per_mwh",
"fuel_type_code_pudl",
"generator_retirement_date",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"installation_year",
"net_generation_mwh",
"generator_operating_year",
diff --git a/src/pudl/metadata/resources/mcoe.py b/src/pudl/metadata/resources/mcoe.py
index 2b738a3e3d..1525960f0b 100644
--- a/src/pudl/metadata/resources/mcoe.py
+++ b/src/pudl/metadata/resources/mcoe.py
@@ -24,7 +24,7 @@
"unit_id_pudl",
"net_generation_mwh",
"fuel_consumed_for_electricity_mmbtu",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
],
"primary_key": [
"report_date",
@@ -53,7 +53,7 @@
"plant_id_eia",
"unit_id_pudl",
"generator_id",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"fuel_type_code_pudl",
"fuel_type_count",
"prime_mover_code",
@@ -126,7 +126,7 @@
"fuel_type_code_pudl",
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"fuel_cost_per_mwh",
],
"primary_key": [
@@ -165,7 +165,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
@@ -212,7 +212,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
+ "heat_rate_mmbtu_mwh_by_unit",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
diff --git a/src/pudl/validate.py b/src/pudl/validate.py
index 8a7278fe8e..d7b1e1a998 100644
--- a/src/pudl/validate.py
+++ b/src/pudl/validate.py
@@ -2661,7 +2661,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 7.0,
"hi_q": 0.50,
"hi_bound": 7.5,
- "data_col": "heat_rate_mmbtu_mwh",
+ "data_col": "heat_rate_mmbtu_mwh_by_unit",
"weight_col": "net_generation_mwh",
},
{ # EIA natural gas reporting really only becomes usable in 2015.
@@ -2671,7 +2671,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 6.4,
"hi_q": 0.95,
"hi_bound": 13.0,
- "data_col": "heat_rate_mmbtu_mwh",
+ "data_col": "heat_rate_mmbtu_mwh_by_unit",
"weight_col": "net_generation_mwh",
},
]
@@ -2685,7 +2685,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 10.0,
"hi_q": 0.50,
"hi_bound": 11.0,
- "data_col": "heat_rate_mmbtu_mwh",
+ "data_col": "heat_rate_mmbtu_mwh_by_unit",
"weight_col": "net_generation_mwh",
},
{
@@ -2695,7 +2695,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 9.0,
"hi_q": 0.95,
"hi_bound": 12.5,
- "data_col": "heat_rate_mmbtu_mwh",
+ "data_col": "heat_rate_mmbtu_mwh_by_unit",
"weight_col": "net_generation_mwh",
},
]
@@ -2861,7 +2861,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_q": 0.05,
"mid_q": 0.50,
"hi_q": 0.95,
- "data_col": "heat_rate_mmbtu_mwh",
+ "data_col": "heat_rate_mmbtu_mwh_by_unit",
"weight_col": "net_generation_mwh",
},
{
@@ -2870,7 +2870,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_q": 0.05,
"mid_q": 0.50,
"hi_q": 0.95,
- "data_col": "heat_rate_mmbtu_mwh",
+ "data_col": "heat_rate_mmbtu_mwh_by_unit",
"weight_col": "net_generation_mwh",
},
]
diff --git a/test/unit/analysis/plant_parts_eia_test.py b/test/unit/analysis/plant_parts_eia_test.py
index 202822c442..fb9f14fd65 100644
--- a/test/unit/analysis/plant_parts_eia_test.py
+++ b/test/unit/analysis/plant_parts_eia_test.py
@@ -534,7 +534,7 @@ def test_one_to_many():
"net_generation_mwh": [100] * 8,
"total_fuel_cost": [100] * 8,
"fuel_cost_per_mwh": [1] * 8,
- "heat_rate_mmbtu_mwh": [1] * 8,
+ "heat_rate_mmbtu_mwh_by_unit": [1] * 8,
"fuel_cost_per_mmbtu": [1] * 8,
"fuel_type_code_pudl": ["test"] * 8,
"planned_generator_retirement_date": [2076] * 8,
@@ -621,7 +621,7 @@ def test_one_to_many():
"net_generation_mwh": [100, 100, 100, 100, 100, 100, 100, 100, 200],
"total_fuel_cost": [100, 100, 100, 100, 100, 100, 100, 100, 200],
"fuel_cost_per_mwh": [1] * 9,
- "heat_rate_mmbtu_mwh": [1] * 9,
+ "heat_rate_mmbtu_mwh_by_unit": [1] * 9,
"fuel_cost_per_mmbtu": [1] * 9,
"fuel_type_code_pudl": ["test"] * 9,
"planned_generator_retirement_date": [2076] * 9,
From 53e2f2d2849c146a523f713361791b5506037c9b Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 4 Oct 2023 20:02:31 +0200
Subject: [PATCH 50/70] Rename heat rate mmbtu mwh to follow existing naming
convention
---
...41cf_rename_heat_rate_column_to_follow_.py | 121 ++++++++++++++++++
src/pudl/analysis/eia_ferc1_record_linkage.py | 10 +-
src/pudl/analysis/eia_ferc1_train.py | 2 +-
src/pudl/analysis/mcoe.py | 24 ++--
src/pudl/analysis/plant_parts_eia.py | 2 +-
src/pudl/metadata/fields.py | 2 +-
src/pudl/metadata/resources/eia.py | 4 +-
src/pudl/metadata/resources/mcoe.py | 10 +-
src/pudl/validate.py | 12 +-
test/unit/analysis/plant_parts_eia_test.py | 4 +-
10 files changed, 156 insertions(+), 35 deletions(-)
create mode 100644 migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py
diff --git a/migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py b/migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py
new file mode 100644
index 0000000000..7428946be9
--- /dev/null
+++ b/migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py
@@ -0,0 +1,121 @@
+"""Rename heat rate column to follow column naming convention
+
+Revision ID: 1e4356aa41cf
+Revises: c415b55c4dcf
+Create Date: 2023-10-04 20:00:29.217602
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = '1e4356aa41cf'
+down_revision = 'c415b55c4dcf'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/eia_ferc1_record_linkage.py b/src/pudl/analysis/eia_ferc1_record_linkage.py
index 786e19d047..73776960b3 100644
--- a/src/pudl/analysis/eia_ferc1_record_linkage.py
+++ b/src/pudl/analysis/eia_ferc1_record_linkage.py
@@ -209,7 +209,7 @@ def get_plants_ferc1(self, clobber: bool = False) -> pd.DataFrame:
x.plant_id_report_year + "_" + x.utility_id_pudl.map(str)
),
fuel_cost_per_mmbtu=lambda x: (x.fuel_cost / x.fuel_mmbtu),
- heat_rate_mmbtu_mwh_by_unit=lambda x: (
+ unit_heat_rate_mmbtu_per_mwh=lambda x: (
x.fuel_mmbtu / x.net_generation_mwh
),
)
@@ -421,9 +421,9 @@ def make_features(
label="fuel_cost_per_mmbtu",
),
Numeric(
- "heat_rate_mmbtu_mwh_by_unit",
- "heat_rate_mmbtu_mwh_by_unit",
- label="heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
+ "unit_heat_rate_mmbtu_per_mwh",
+ label="unit_heat_rate_mmbtu_per_mwh",
),
Exact(
"fuel_type_code_pudl",
@@ -827,7 +827,7 @@ def prettyify_best_matches(
"capacity_mw",
"capacity_factor",
"total_mmbtu",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"fuel_type_code_pudl",
"installation_year",
"plant_part_id_eia",
diff --git a/src/pudl/analysis/eia_ferc1_train.py b/src/pudl/analysis/eia_ferc1_train.py
index 0a9911a0cb..61b7ae3c81 100644
--- a/src/pudl/analysis/eia_ferc1_train.py
+++ b/src/pudl/analysis/eia_ferc1_train.py
@@ -103,7 +103,7 @@
"total_fuel_cost",
"total_mmbtu",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
]
# --------------------------------------------------------------------------------------
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 6b3f7b1bab..245b9b6b77 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -258,7 +258,7 @@ def heat_rate_by_unit(gen_fuel_by_energy_source: pd.DataFrame, bga: pd.DataFrame
- unit_id_pudl
- net_generation_mwh
- fuel_consumed_for_electricity_mmbtu
- - heat_rate_mmbtu_mwh_by_unit
+ - unit_heat_rate_mmbtu_per_mwh
"""
gen_fuel_by_unit = pudl.helpers.date_merge(
left=gen_fuel_by_energy_source,
@@ -274,7 +274,7 @@ def heat_rate_by_unit(gen_fuel_by_energy_source: pd.DataFrame, bga: pd.DataFrame
.sum()
.convert_dtypes()
.assign(
- heat_rate_mmbtu_mwh_by_unit=lambda x: x.fuel_consumed_for_electricity_mmbtu
+ unit_heat_rate_mmbtu_per_mwh=lambda x: x.fuel_consumed_for_electricity_mmbtu
/ x.net_generation_mwh
)
)
@@ -299,7 +299,7 @@ def heat_rate_by_gen(
Returns:
DataFrame with columns report_date, plant_id_eia, unit_id_pudl, generator_id,
- heat_rate_mmbtu_mwh_by_unit, fuel_type_code_pudl, fuel_type_count, prime_mover_code.
+ unit_heat_rate_mmbtu_per_mwh, fuel_type_code_pudl, fuel_type_count, prime_mover_code.
The output will have a time frequency corresponding to that of the input
pudl_out. Output data types are set to their canonical values before returning.
"""
@@ -312,7 +312,7 @@ def heat_rate_by_gen(
"report_date",
"plant_id_eia",
"unit_id_pudl",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
],
]
@@ -377,7 +377,7 @@ def fuel_cost(
"generator_id",
"unit_id_pudl",
"report_date",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
],
]
gens = gens.loc[
@@ -488,7 +488,7 @@ def fuel_cost(
"plant_id_eia",
"report_date",
"generator_id",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"fuel_cost_from_eiaapi",
]
],
@@ -505,7 +505,7 @@ def fuel_cost(
"report_date",
"generator_id",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"fuel_cost_from_eiaapi",
]
]
@@ -514,13 +514,13 @@ def fuel_cost(
pd.concat([one_fuel, multi_fuel], sort=True)
.assign(
fuel_cost_per_mwh=lambda x: x.fuel_cost_per_mmbtu
- * x.heat_rate_mmbtu_mwh_by_unit
+ * x.unit_heat_rate_mmbtu_per_mwh
)
.sort_values(["report_date", "plant_id_eia", "generator_id"])
)
out_df = (
- gen_w_ft.drop("heat_rate_mmbtu_mwh_by_unit", axis=1)
+ gen_w_ft.drop("unit_heat_rate_mmbtu_per_mwh", axis=1)
.drop_duplicates()
.merge(fc, on=["report_date", "plant_id_eia", "generator_id"])
)
@@ -607,7 +607,7 @@ def mcoe(
"unit_id_pudl",
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"fuel_cost_per_mwh",
],
],
@@ -619,12 +619,12 @@ def mcoe(
)
# Calculate a couple more derived values:
.assign(
- total_mmbtu=lambda x: x.net_generation_mwh * x.heat_rate_mmbtu_mwh_by_unit,
+ total_mmbtu=lambda x: x.net_generation_mwh * x.unit_heat_rate_mmbtu_per_mwh,
total_fuel_cost=lambda x: x.total_mmbtu * x.fuel_cost_per_mmbtu,
)
.pipe(
pudl.helpers.oob_to_nan_with_dependent_cols,
- cols=["heat_rate_mmbtu_mwh_by_unit"],
+ cols=["unit_heat_rate_mmbtu_per_mwh"],
dependent_cols=["total_mmbtu", "fuel_cost_per_mwh"],
lb=min_heat_rate,
ub=None,
diff --git a/src/pudl/analysis/plant_parts_eia.py b/src/pudl/analysis/plant_parts_eia.py
index 62c56bcc49..fcea7d5370 100644
--- a/src/pudl/analysis/plant_parts_eia.py
+++ b/src/pudl/analysis/plant_parts_eia.py
@@ -281,7 +281,7 @@
WTAVG_DICT = {
"fuel_cost_per_mwh": "capacity_mw",
- "heat_rate_mmbtu_mwh_by_unit": "capacity_mw",
+ "unit_heat_rate_mmbtu_per_mwh": "capacity_mw",
"fuel_cost_per_mmbtu": "capacity_mw",
}
"""Dict: a dictionary of columns (keys) to perform weighted averages on and the weight
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 7cdf63577b..7c38305386 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -1231,7 +1231,7 @@
"description": "The energy contained in fuel burned, measured in million BTU.",
"unit": "MMBtu",
},
- "heat_rate_mmbtu_mwh_by_unit": {
+ "unit_heat_rate_mmbtu_per_mwh": {
"type": "number",
"description": "Fuel content per unit of electricity generated. Coming from MCOE calculation.",
"unit": "MMBtu_MWh",
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index 976746061c..bdba2b3c7e 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -551,7 +551,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
@@ -651,7 +651,7 @@
"fuel_cost_per_mwh",
"fuel_type_code_pudl",
"generator_retirement_date",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"installation_year",
"net_generation_mwh",
"generator_operating_year",
diff --git a/src/pudl/metadata/resources/mcoe.py b/src/pudl/metadata/resources/mcoe.py
index 1525960f0b..740506d7fd 100644
--- a/src/pudl/metadata/resources/mcoe.py
+++ b/src/pudl/metadata/resources/mcoe.py
@@ -24,7 +24,7 @@
"unit_id_pudl",
"net_generation_mwh",
"fuel_consumed_for_electricity_mmbtu",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
],
"primary_key": [
"report_date",
@@ -53,7 +53,7 @@
"plant_id_eia",
"unit_id_pudl",
"generator_id",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"fuel_type_code_pudl",
"fuel_type_count",
"prime_mover_code",
@@ -126,7 +126,7 @@
"fuel_type_code_pudl",
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"fuel_cost_per_mwh",
],
"primary_key": [
@@ -165,7 +165,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
@@ -212,7 +212,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh_by_unit",
+ "unit_heat_rate_mmbtu_per_mwh",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
diff --git a/src/pudl/validate.py b/src/pudl/validate.py
index d7b1e1a998..d226f88420 100644
--- a/src/pudl/validate.py
+++ b/src/pudl/validate.py
@@ -2661,7 +2661,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 7.0,
"hi_q": 0.50,
"hi_bound": 7.5,
- "data_col": "heat_rate_mmbtu_mwh_by_unit",
+ "data_col": "unit_heat_rate_mmbtu_per_mwh",
"weight_col": "net_generation_mwh",
},
{ # EIA natural gas reporting really only becomes usable in 2015.
@@ -2671,7 +2671,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 6.4,
"hi_q": 0.95,
"hi_bound": 13.0,
- "data_col": "heat_rate_mmbtu_mwh_by_unit",
+ "data_col": "unit_heat_rate_mmbtu_per_mwh",
"weight_col": "net_generation_mwh",
},
]
@@ -2685,7 +2685,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 10.0,
"hi_q": 0.50,
"hi_bound": 11.0,
- "data_col": "heat_rate_mmbtu_mwh_by_unit",
+ "data_col": "unit_heat_rate_mmbtu_per_mwh",
"weight_col": "net_generation_mwh",
},
{
@@ -2695,7 +2695,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_bound": 9.0,
"hi_q": 0.95,
"hi_bound": 12.5,
- "data_col": "heat_rate_mmbtu_mwh_by_unit",
+ "data_col": "unit_heat_rate_mmbtu_per_mwh",
"weight_col": "net_generation_mwh",
},
]
@@ -2861,7 +2861,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_q": 0.05,
"mid_q": 0.50,
"hi_q": 0.95,
- "data_col": "heat_rate_mmbtu_mwh_by_unit",
+ "data_col": "unit_heat_rate_mmbtu_per_mwh",
"weight_col": "net_generation_mwh",
},
{
@@ -2870,7 +2870,7 @@ def plot_vs_agg(orig_df, agg_df, validation_cases):
"low_q": 0.05,
"mid_q": 0.50,
"hi_q": 0.95,
- "data_col": "heat_rate_mmbtu_mwh_by_unit",
+ "data_col": "unit_heat_rate_mmbtu_per_mwh",
"weight_col": "net_generation_mwh",
},
]
diff --git a/test/unit/analysis/plant_parts_eia_test.py b/test/unit/analysis/plant_parts_eia_test.py
index fb9f14fd65..9b234464bf 100644
--- a/test/unit/analysis/plant_parts_eia_test.py
+++ b/test/unit/analysis/plant_parts_eia_test.py
@@ -534,7 +534,7 @@ def test_one_to_many():
"net_generation_mwh": [100] * 8,
"total_fuel_cost": [100] * 8,
"fuel_cost_per_mwh": [1] * 8,
- "heat_rate_mmbtu_mwh_by_unit": [1] * 8,
+ "unit_heat_rate_mmbtu_per_mwh": [1] * 8,
"fuel_cost_per_mmbtu": [1] * 8,
"fuel_type_code_pudl": ["test"] * 8,
"planned_generator_retirement_date": [2076] * 8,
@@ -621,7 +621,7 @@ def test_one_to_many():
"net_generation_mwh": [100, 100, 100, 100, 100, 100, 100, 100, 200],
"total_fuel_cost": [100, 100, 100, 100, 100, 100, 100, 100, 200],
"fuel_cost_per_mwh": [1] * 9,
- "heat_rate_mmbtu_mwh_by_unit": [1] * 9,
+ "unit_heat_rate_mmbtu_per_mwh": [1] * 9,
"fuel_cost_per_mmbtu": [1] * 9,
"fuel_type_code_pudl": ["test"] * 9,
"planned_generator_retirement_date": [2076] * 9,
From 479ec7f921999bfa79af0188220f01f70a1b62fc Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 8 Nov 2023 10:58:32 -0900
Subject: [PATCH 51/70] Remove PudlTabl removal data and make assn table name
sources alphabetical
---
docs/dev/naming_conventions.rst | 5 ++---
docs/release_notes.rst | 7 +++----
src/pudl/output/pudltabl.py | 12 ++++++------
3 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 3c2d0908b0..5ccf005030 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -66,9 +66,8 @@ Naming convention: ``core_{source}__{asset_type}_{asset_name}``
* ``assn``: Association tables provide connections between entities. This data
can be manually compiled or extracted from data sources. If the asset associates
- data from two sources, the source names should be included in the ``asset_name``.
- The source names should appear in the same order for all assets that associate
- the two sources. Examples:
+ data from two sources, the source names should be included in the ``asset_name``
+ in alphabetical order. Examples:
* ``core_pudl__assn_plants_eia`` associates EIA Plant IDs and manually assigned
PUDL Plant IDs.
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 5c2536dbd9..5bdc338d95 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -79,10 +79,9 @@ To help users migrate away from using ``PudlTabl`` and our temporary table names
we've created a `google sheet `__
that maps the old table names and ``PudlTabl`` methods to the new table names.
-We plan to remove ``PudlTabl`` from the pudl package once our known users have
-succesfully migrated to pulling data directly from ``pudl.sqlite``. We've added
-deprecation warnings to the ``PudlTabl`` class. We expect to remove ``PudlTabl``
-at the end of February 2024.
+We've added deprecation warnings to the ``PudlTabl`` class. We plan to remove
+``PudlTabl`` from the ``pudl`` package once our known users have
+succesfully migrated to pulling data directly from ``pudl.sqlite``.
Data Coverage
^^^^^^^^^^^^^
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index eefc4bb63b..ede31c3f00 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -90,10 +90,9 @@ def __init__(
individual generators to functional units. EXPERIMENTAL.
"""
logger.warning(
- "PudlTabl is deprecated and will be removed from the pudl package"
- "at the end of February 2024. To acccess the data returned by"
- "this class, pull the desired table directly from the pudl.sqlite"
- "database."
+ "PudlTabl is deprecated and will be removed from the pudl package "
+ "once known users have migrated to accessing the data directly from "
+ "pudl.sqlite. "
)
if not isinstance(pudl_engine, sa.engine.base.Engine):
raise TypeError(
@@ -303,8 +302,9 @@ def _get_table_from_db(
)
table_name = self._agg_table_name(table_name)
logger.warning(
- "PudlTabl is deprecated and will be removed from the pudl package"
- "at the end of February 2024. To access the data returned by this method,"
+ "PudlTabl is deprecated and will be removed from the pudl package "
+ "once known users have migrated to accessing the data directly from "
+ "pudl.sqlite. To access the data returned by this method, "
f"use the {table_name} table in the pudl.sqlite database."
)
resource = Resource.from_id(table_name)
From c3298047a93020fac6bb97e57d6cce2cbdf3467b Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 8 Nov 2023 11:35:05 -0900
Subject: [PATCH 52/70] Explain why CEMS is stored as parquet
---
docs/index.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/index.rst b/docs/index.rst
index d21bfc3044..ff75d5f13f 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -26,7 +26,7 @@ pages for each source:
* :doc:`data_sources/ferc714`
PUDL's clean and complete versions of these data sources are stored in the
-``pudl.sqlite`` database and ``core_epacems__hourly_emissions.parquet`` files.
+``pudl.sqlite`` database. Larger datasets like EPA CEMS are stored in parquet files.
To get started using PUDL data, visit our :doc:`data_access` page, or continue reading
to learn more about the PUDL data processing pipeline.
From d8c01da01237dbe518214d2924c81c82fee1c7c5 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 8 Nov 2023 12:40:20 -0900
Subject: [PATCH 53/70] Rename heat_rate_mmbtu_mwh_eia/ferc1 columns to
unit_heat_rate_mmbtu_per_mwh_eia/ferc1
---
...d34_add_data_maturity_to_eia923m_tables.py | 113 ---------
...41cf_rename_heat_rate_column_to_follow_.py | 121 ---------
...b_wipe_schema_and_ferc1_name_transition.py | 4 +-
...e_demand_hourly_pa_ferc714_report_date_.py | 35 ---
...4_rename_heat_rate_mmbtu_mwh_unit_heat_.py | 235 ++++++++++++++++++
...ename_heat_rate_mmbtu_mwh_to_heat_rate_.py | 121 ---------
...4_add_unit__to_ferc1_and_eia_heat_rate_.py | 37 +++
src/pudl/metadata/fields.py | 4 +-
.../resources/ferc1_eia_record_linkage.py | 8 +-
9 files changed, 280 insertions(+), 398 deletions(-)
delete mode 100644 migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py
delete mode 100644 migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py
delete mode 100644 migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py
create mode 100644 migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py
delete mode 100644 migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py
create mode 100644 migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py
diff --git a/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py b/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py
deleted file mode 100644
index ec582b8c97..0000000000
--- a/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py
+++ /dev/null
@@ -1,113 +0,0 @@
-"""add data_maturity to eia923m tables
-
-Revision ID: 1ceb9897fd34
-Revises: f11241c9292d
-Create Date: 2023-10-26 16:30:33.771381
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '1ceb9897fd34'
-down_revision = 'f11241c9292d'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_boiler_fuel_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_boiler_fuel_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_boiler_fuel_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_fuel_combined_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_fuel_combined_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_fuel_combined_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_fuel_combined_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_plants_utilities_eia', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_plants_utilities_eia_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('denorm_plants_utilities_eia', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_plants_utilities_eia_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_fuel_combined_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_fuel_combined_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_fuel_combined_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_fuel_combined_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_boiler_fuel_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_boiler_fuel_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_boiler_fuel_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py b/migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py
deleted file mode 100644
index 7428946be9..0000000000
--- a/migrations/versions/1e4356aa41cf_rename_heat_rate_column_to_follow_.py
+++ /dev/null
@@ -1,121 +0,0 @@
-"""Rename heat rate column to follow column naming convention
-
-Revision ID: 1e4356aa41cf
-Revises: c415b55c4dcf
-Create Date: 2023-10-04 20:00:29.217602
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '1e4356aa41cf'
-down_revision = 'c415b55c4dcf'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
index d43a703aa4..80e88b2943 100644
--- a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
+++ b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
@@ -21309,7 +21309,7 @@ def upgrade() -> None:
comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
),
sa.Column(
- "heat_rate_mmbtu_mwh_eia",
+ "unit_heat_rate_mmbtu_per_mwh_eia",
sa.Float(),
nullable=True,
comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
@@ -21802,7 +21802,7 @@ def upgrade() -> None:
comment="Simplified fuel type code used in PUDL",
),
sa.Column(
- "heat_rate_mmbtu_mwh_ferc1",
+ "unit_heat_rate_mmbtu_per_mwh_ferc1",
sa.Float(),
nullable=True,
comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
diff --git a/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py b/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py
deleted file mode 100644
index 61acfd18cf..0000000000
--- a/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""demand_hourly_pa_ferc714.report_date can't be null
-
-Revision ID: 3313ca078f4e
-Revises: 1ceb9897fd34
-Create Date: 2023-11-02 15:48:50.477585
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '3313ca078f4e'
-down_revision = '1ceb9897fd34'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('demand_hourly_pa_ferc714', schema=None) as batch_op:
- batch_op.alter_column('report_date',
- existing_type=sa.DATE(),
- nullable=False)
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('demand_hourly_pa_ferc714', schema=None) as batch_op:
- batch_op.alter_column('report_date',
- existing_type=sa.DATE(),
- nullable=True)
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py b/migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py
new file mode 100644
index 0000000000..f66e808f39
--- /dev/null
+++ b/migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py
@@ -0,0 +1,235 @@
+"""Rename heat_rate_mmbtu_mwh -> unit_heat_rate_mmbtu_per_mwh
+
+Revision ID: c22d59125ab4
+Revises: 1fef7b82e48b
+Create Date: 2023-11-08 11:48:55.310396
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'c22d59125ab4'
+down_revision = '1fef7b82e48b'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__plants_utilities', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk__out_eia__plants_utilities_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('core_eia923__monthly_boiler_fuel', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_core_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('core_ferc714__hourly_demand_pa', schema=None) as batch_op:
+ batch_op.alter_column('report_date',
+ existing_type=sa.DATE(),
+ nullable=False)
+
+ with op.batch_alter_table('mega_generators_eia', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia923__boiler_fuel', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__monthly_boiler_fuel', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__monthly_fuel_receipts_costs', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__monthly_generation', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__monthly_generation_fuel_combined', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__yearly_boiler_fuel', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__yearly_fuel_receipts_costs', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__yearly_generation', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_generation_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia923__yearly_generation_fuel_combined', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
+ batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
+
+ with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ with op.batch_alter_table('plant_parts_eia', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh')
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('plant_parts_eia', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('out_eia923__yearly_generation_fuel_combined', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__yearly_generation', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_generation_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__yearly_fuel_receipts_costs', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__yearly_boiler_fuel', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__monthly_generation_fuel_combined', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__monthly_generation', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__monthly_fuel_receipts_costs', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__monthly_boiler_fuel', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('out_eia923__boiler_fuel', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_out_eia923__boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('mega_generators_eia', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('core_ferc714__hourly_demand_pa', schema=None) as batch_op:
+ batch_op.alter_column('report_date',
+ existing_type=sa.DATE(),
+ nullable=True)
+
+ with op.batch_alter_table('core_eia923__monthly_boiler_fuel', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk_core_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__plants_utilities', schema=None) as batch_op:
+ batch_op.drop_constraint(batch_op.f('fk__out_eia__plants_utilities_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
+ batch_op.drop_column('data_maturity')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+
+ # ### end Alembic commands ###
diff --git a/migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py b/migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py
deleted file mode 100644
index e5e2f9d299..0000000000
--- a/migrations/versions/c415b55c4dcf_rename_heat_rate_mmbtu_mwh_to_heat_rate_.py
+++ /dev/null
@@ -1,121 +0,0 @@
-"""Rename heat_rate_mmbtu_mwh to heat_rate_mmbtu_mwh_by_unit
-
-Revision ID: c415b55c4dcf
-Revises: ab0540a6484c
-Create Date: 2023-10-04 08:08:23.744433
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = 'c415b55c4dcf'
-down_revision = 'ab0540a6484c'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_by_unit', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('heat_rate_mmbtu_mwh_by_unit')
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py b/migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py
new file mode 100644
index 0000000000..e6a5b0a89c
--- /dev/null
+++ b/migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py
@@ -0,0 +1,37 @@
+"""Add unit_ to ferc1 and eia heat rate columns
+
+Revision ID: f5a33d973154
+Revises: c22d59125ab4
+Create Date: 2023-11-08 12:34:10.536814
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = 'f5a33d973154'
+down_revision = 'c22d59125ab4'
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_ferc1')
+ batch_op.drop_column('heat_rate_mmbtu_mwh_eia')
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_eia', sa.FLOAT(), nullable=True))
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_ferc1')
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_eia')
+
+ # ### end Alembic commands ###
diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py
index 7c38305386..7bd14e5652 100644
--- a/src/pudl/metadata/fields.py
+++ b/src/pudl/metadata/fields.py
@@ -1236,12 +1236,12 @@
"description": "Fuel content per unit of electricity generated. Coming from MCOE calculation.",
"unit": "MMBtu_MWh",
},
- "heat_rate_mmbtu_mwh_eia": {
+ "unit_heat_rate_mmbtu_per_mwh_eia": {
"type": "number",
"description": "Fuel content per unit of electricity generated. Coming from MCOE calculation.",
"unit": "MMBtu_MWh",
},
- "heat_rate_mmbtu_mwh_ferc1": {
+ "unit_heat_rate_mmbtu_per_mwh_ferc1": {
"type": "number",
"description": "Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
"unit": "MMBtu_MWh",
diff --git a/src/pudl/metadata/resources/ferc1_eia_record_linkage.py b/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
index 3c04c82ab0..1e338352d7 100644
--- a/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
+++ b/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
@@ -55,7 +55,7 @@
"fuel_cost_per_mwh",
"fuel_type_code_pudl",
"generator_retirement_date",
- "heat_rate_mmbtu_mwh",
+ "unit_heat_rate_mmbtu_per_mwh",
"installation_year",
"net_generation_mwh",
"generator_operating_year",
@@ -107,7 +107,7 @@
"fuel_cost_from_eiaapi",
"fuel_cost_per_mmbtu",
"fuel_cost_per_mwh",
- "heat_rate_mmbtu_mwh",
+ "unit_heat_rate_mmbtu_per_mwh",
"net_generation_mwh",
"total_fuel_cost",
"total_mmbtu",
@@ -175,7 +175,7 @@
"capacity_mw_eia",
"capacity_factor_eia",
"total_mmbtu_eia",
- "heat_rate_mmbtu_mwh_eia",
+ "unit_heat_rate_mmbtu_per_mwh_eia",
"fuel_type_code_pudl_eia",
"installation_year_eia",
"plant_part_id_eia",
@@ -258,7 +258,7 @@
"total_fuel_cost_ferc1",
"total_mmbtu_ferc1",
"fuel_type_code_pudl_ferc1",
- "heat_rate_mmbtu_mwh_ferc1",
+ "unit_heat_rate_mmbtu_per_mwh_ferc1",
],
"primary_key": ["record_id_ferc1"],
},
From afaa449c7509ffc290bdff22423960030c6e3497 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 8 Nov 2023 12:48:43 -0900
Subject: [PATCH 54/70] Remove unused ppe_cols_to_grab variable
---
src/pudl/analysis/eia_ferc1_record_linkage.py | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/src/pudl/analysis/eia_ferc1_record_linkage.py b/src/pudl/analysis/eia_ferc1_record_linkage.py
index 73776960b3..808c9146ea 100644
--- a/src/pudl/analysis/eia_ferc1_record_linkage.py
+++ b/src/pudl/analysis/eia_ferc1_record_linkage.py
@@ -818,20 +818,6 @@ def prettyify_best_matches(
and FERC plant data. This removes the comparison vectors (the floats between 0 and 1
that compare the two columns from each dataset).
"""
- # if utility_id_pudl is not in the `PPE_COLS`, we need to include it
- ppe_cols_to_grab = pudl.analysis.plant_parts_eia.PPE_COLS + [
- "plant_id_pudl",
- "total_fuel_cost",
- "fuel_cost_per_mmbtu",
- "net_generation_mwh",
- "capacity_mw",
- "capacity_factor",
- "total_mmbtu",
- "unit_heat_rate_mmbtu_per_mwh",
- "fuel_type_code_pudl",
- "installation_year",
- "plant_part_id_eia",
- ]
connects_ferc1_eia = (
# first merge in the EIA plant-parts
pd.merge(
From f60592f44a112e0adfcd547f3b8e8d7fe6d03987 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 9 Nov 2023 12:45:32 -0900
Subject: [PATCH 55/70] Make association asset names more consistent
---
...python-output-table-conversion-debug.ipynb | 6 +-
docs/release_notes.rst | 12 +-
...d34_add_data_maturity_to_eia923m_tables.py | 113 -
...b_wipe_schema_and_ferc1_name_transition.py | 26851 ----------------
...e_demand_hourly_pa_ferc714_report_date_.py | 35 -
...9_remake_all_schemas_a_make_assn_asset_.py | 4254 +++
src/pudl/analysis/epacamd_eia.py | 18 +-
src/pudl/etl/epacems_assets.py | 10 +-
src/pudl/etl/glue_assets.py | 56 +-
src/pudl/extract/epacems.py | 2 +-
src/pudl/glue/ferc1_eia.py | 54 +-
src/pudl/metadata/classes.py | 4 +-
src/pudl/metadata/resources/eia.py | 18 +-
src/pudl/metadata/resources/eia860.py | 2 +-
src/pudl/metadata/resources/ferc1.py | 8 +-
src/pudl/metadata/resources/glue.py | 12 +-
src/pudl/metadata/sources.py | 2 +-
src/pudl/output/eia.py | 26 +-
src/pudl/output/eia860.py | 6 +-
src/pudl/output/ferc1.py | 80 +-
src/pudl/output/pudltabl.py | 4 +-
.../sql/denorm_plants_utilities_ferc1.sql | 4 +-
src/pudl/transform/eia.py | 47 +-
src/pudl/transform/epacems.py | 8 +-
test/integration/glue_test.py | 40 +-
test/unit/transform/glue_test.py | 4 +-
test/validate/eia_test.py | 2 +-
27 files changed, 4470 insertions(+), 27208 deletions(-)
delete mode 100644 migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py
delete mode 100644 migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
delete mode 100644 migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py
create mode 100644 migrations/versions/9edc4a11c809_remake_all_schemas_a_make_assn_asset_.py
diff --git a/devtools/python-output-table-conversion-debug.ipynb b/devtools/python-output-table-conversion-debug.ipynb
index d43c25d0bf..538c212997 100644
--- a/devtools/python-output-table-conversion-debug.ipynb
+++ b/devtools/python-output-table-conversion-debug.ipynb
@@ -48,14 +48,14 @@
"\n",
"You can create an asset by creating a new function and adding the `@asset` decorator. For now, the only attribute you should add to the decorator is the `compute_type = \"Python\"`. All this does is add a cute tag to the asset in the dag to let people know how the asset is being processed.\n",
"\n",
- "Next you'll want to figure out what tables the output table depends on. Read through the old output function to see which normalized tables or output functions are being used as inputs to the joins and imputations. Once you have the input table names, add them to the asset function parameters. For example, the `utilities_eia860()` function merges `core_eia__entity_utilities`, `core_eia860__scd_utilities`, and `core_pudl__assn_utilities_eia` tables together so the asset would look like this:\n",
+ "Next you'll want to figure out what tables the output table depends on. Read through the old output function to see which normalized tables or output functions are being used as inputs to the joins and imputations. Once you have the input table names, add them to the asset function parameters. For example, the `utilities_eia860()` function merges `core_eia__entity_utilities`, `core_eia860__scd_utilities`, and `core_pudl__assn_eia_pudl_utilities` tables together so the asset would look like this:\n",
"\n",
"```python\n",
"@asset(compute_kind=\"Python\")\n",
"def denorm_utilities_eia860(\n",
" core_eia__entity_utilities: pd.DataFrame,\n",
" core_eia860__scd_utilities: pd.DataFrame,\n",
- " core_pudl__assn_utilities_eia: pd.DataFrame,\n",
+ " core_pudl__assn_eia_pudl_utilities: pd.DataFrame,\n",
"):\n",
" ... # joining logic\n",
" return joined_df\n",
@@ -110,7 +110,7 @@
"def denorm_utilities_eia860(\n",
" core_eia__entity_utilities: pd.DataFrame,\n",
" core_eia860__scd_utilities: pd.DataFrame,\n",
- " core_pudl__assn_utilities_eia: pd.DataFrame,\n",
+ " core_pudl__assn_eia_pudl_utilities: pd.DataFrame,\n",
"):\n",
" ... # joining logic\n",
" return joined_df\n",
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 27d63f8063..65b7d24d27 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -77,7 +77,7 @@ Data Coverage
CAMPD API, and to include 2022 data. Due to changes in the ETL, Alaska, Puerto Rico
and Hawaii are now included in CEMS processing. See issue :issue:`1264` & PRs
:pr:`2779`, :pr:` 2816`.
-* New :ref:`core_epa__assn_epacamd_eia` crosswalk version v0.3, see issue :issue:`2317`
+* New :ref:`core_epa__assn_eia_epacamd` crosswalk version v0.3, see issue :issue:`2317`
and PR :pr:`2316`. EPA's updates add manual matches and exclusions focusing on
operating units with a generator ID as of 2018.
* New PUDL tables from :doc:`data_sources/ferc1`, integrating older DBF and newer XBRL
@@ -115,7 +115,7 @@ Data Coverage
:issue:`1823` & PR :pr:`2205`.
* Harvested owner utilities from the EIA 860 ownership table which are now included in
- the :ref:`core_eia__entity_utilities` and :ref:`core_pudl__assn_utilities_eia`
+ the :ref:`core_eia__entity_utilities` and :ref:`core_pudl__assn_eia_pudl_utilities`
tables. See :pr:`2714`. Renamed columns with owner or operator suffix to differentiate
between owner and operator utility columns in :ref:`core_eia860__scd_ownership` and
:ref:`out_eia860__yearly_ownership`. See :pr:`2903`.
@@ -126,7 +126,7 @@ Data Coverage
:pr:`2561`.
* :ref:`out_eia860__yearly_emissions_control_equipment`, see issue :issue:`2338` & PR
:pr:`2561`.
- * :ref:`core_eia860__yearly_boiler_emissions_control_equipment_assn`, see
+ * :ref:`core_eia860__assn_yearly_boiler_emissions_control_equipment`, see
:issue:`2338` & PR :pr:`2561`.
* :ref:`core_eia860__assn_boiler_cooling`, see :issue:`2586` & PR :pr:`2587`
* :ref:`core_eia860__assn_boiler_stack_flue`, see :issue:`2586` & PR :pr:`2587`
@@ -186,8 +186,8 @@ Data Coverage
* :ref:`out_ferc714__respondents_with_fips` (annual respondents with county FIPS IDs)
* :ref:`out_ferc714__summarized_demand` (annual demand for FERC-714 respondents)
-* Added new table :ref:`core_epa__assn_epacamd_eia_subplant_ids`, which aguments the
- :ref:`core_epa__assn_epacamd_eia` glue table. This table incorporates all
+* Added new table :ref:`core_epa__assn_eia_epacamd_subplant_ids`, which aguments the
+ :ref:`core_epa__assn_eia_epacamd` glue table. This table incorporates all
:ref:`core_eia__entity_generators` and all :ref:`core_epacems__hourly_emissions` ID's
and uses these complete IDs to develop a full-coverage ``subplant_id`` column which
granularly connects EPA CAMD with EIA. Thanks to :user:`grgmiller` for his
@@ -224,7 +224,7 @@ Data Cleaning
affected a small number of records in any table referring to boilers, including
:ref:`core_eia__entity_boilers`, :ref:`core_eia860__scd_boilers`,
:ref:`core_eia923__monthly_boiler_fuel`, :ref:`core_eia860__assn_boiler_generator`
- and the :ref:`core_epa__assn_epacamd_eia` crosswalk. It also had some minor downstream
+ and the :ref:`core_epa__assn_eia_epacamd` crosswalk. It also had some minor downstream
effects on the MCOE outputs. See :issue:`2366` and :pr:`2367`.
* The :ref:`core_eia923__monthly_boiler_fuel` table now includes the
``prime_mover_code`` column. This column was previously incorrectly being associated
diff --git a/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py b/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py
deleted file mode 100644
index ec582b8c97..0000000000
--- a/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py
+++ /dev/null
@@ -1,113 +0,0 @@
-"""add data_maturity to eia923m tables
-
-Revision ID: 1ceb9897fd34
-Revises: f11241c9292d
-Create Date: 2023-10-26 16:30:33.771381
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '1ceb9897fd34'
-down_revision = 'f11241c9292d'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_boiler_fuel_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_boiler_fuel_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_boiler_fuel_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_fuel_combined_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_fuel_combined_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_fuel_combined_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_fuel_combined_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_monthly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_generation_yearly_eia923', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('denorm_plants_utilities_eia', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_denorm_plants_utilities_eia_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code'])
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('denorm_plants_utilities_eia', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_plants_utilities_eia_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_fuel_combined_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_fuel_combined_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_generation_fuel_combined_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_generation_fuel_combined_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_fuel_receipts_costs_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_boiler_fuel_yearly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_boiler_fuel_monthly_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('denorm_boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('boiler_fuel_eia923', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_boiler_fuel_eia923_data_maturity_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
deleted file mode 100644
index d43a703aa4..0000000000
--- a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
+++ /dev/null
@@ -1,26851 +0,0 @@
-"""wipe schema and FERC1 name transition
-
-Revision ID: 1fef7b82e48b
-Revises:
-Create Date: 2023-11-01 11:29:53.509898
-
-"""
-import sqlalchemy as sa
-from alembic import op
-from sqlalchemy.dialects import sqlite
-
-# revision identifiers, used by Alembic.
-revision = "1fef7b82e48b"
-down_revision = None
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.create_table(
- "core_eia861__assn_balancing_authority",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=False,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "balancing_authority_id_eia",
- "utility_id_eia",
- "state",
- name=op.f("pk_core_eia861__assn_balancing_authority"),
- ),
- )
- op.create_table(
- "core_eia861__assn_utility",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "utility_id_eia",
- "state",
- name=op.f("pk_core_eia861__assn_utility"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_balancing_authority",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=False,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "balancing_authority_id_eia",
- name=op.f("pk_core_eia861__yearly_balancing_authority"),
- ),
- )
- op.create_table(
- "core_eia__codes_averaging_periods",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_averaging_periods")
- ),
- )
- op.create_table(
- "core_eia__codes_balancing_authorities",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_balancing_authorities")
- ),
- )
- op.create_table(
- "core_eia__codes_boiler_generator_assn_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_boiler_generator_assn_types")
- ),
- )
- op.create_table(
- "core_eia__codes_boiler_status",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_status")),
- )
- op.create_table(
- "core_eia__codes_boiler_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_boiler_types")),
- )
- op.create_table(
- "core_eia__codes_coalmine_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_coalmine_types")),
- )
- op.create_table(
- "core_eia__codes_contract_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_contract_types")),
- )
- op.create_table(
- "core_eia__codes_emission_control_equipment_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_emission_control_equipment_types")
- ),
- )
- op.create_table(
- "core_eia__codes_energy_sources",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "fuel_units",
- sa.Enum("barrels", "mcf", "mwh", "short_tons"),
- nullable=True,
- comment="Reported unit of measure for fuel.",
- ),
- sa.Column(
- "min_fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Minimum heat content per physical unit of fuel in MMBtu.",
- ),
- sa.Column(
- "max_fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Maximum heat content per physical unit of fuel in MMBtu.",
- ),
- sa.Column(
- "fuel_group_eia",
- sa.Enum("fossil", "other", "renewable"),
- nullable=True,
- comment="High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.",
- ),
- sa.Column(
- "fuel_derived_from",
- sa.Enum("biomass", "coal", "gas", "other", "petroleum"),
- nullable=True,
- comment="Original fuel from which this refined fuel was derived.",
- ),
- sa.Column(
- "fuel_phase",
- sa.Enum("gas", "liquid", "solid"),
- nullable=True,
- comment="Physical phase of matter of the fuel.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_energy_sources")),
- )
- op.create_table(
- "core_eia__codes_environmental_equipment_manufacturers",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code",
- name=op.f("pk_core_eia__codes_environmental_equipment_manufacturers"),
- ),
- )
- op.create_table(
- "core_eia__codes_firing_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_firing_types")),
- )
- op.create_table(
- "core_eia__codes_fuel_transportation_modes",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_fuel_transportation_modes")
- ),
- )
- op.create_table(
- "core_eia__codes_fuel_types_aer",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_fuel_types_aer")),
- )
- op.create_table(
- "core_eia__codes_mercury_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_mercury_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_momentary_interruptions",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_momentary_interruptions")
- ),
- )
- op.create_table(
- "core_eia__codes_nox_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_nox_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_nox_control_status",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_nox_control_status")
- ),
- )
- op.create_table(
- "core_eia__codes_nox_units",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_nox_units")),
- )
- op.create_table(
- "core_eia__codes_operational_status",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_operational_status")
- ),
- )
- op.create_table(
- "core_eia__codes_particulate_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_particulate_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_particulate_units",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_particulate_units")
- ),
- )
- op.create_table(
- "core_eia__codes_prime_movers",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_prime_movers")),
- )
- op.create_table(
- "core_eia__codes_regulations",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_regulations")),
- )
- op.create_table(
- "core_eia__codes_reporting_frequencies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_reporting_frequencies")
- ),
- )
- op.create_table(
- "core_eia__codes_sector_consolidated",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_sector_consolidated")
- ),
- )
- op.create_table(
- "core_eia__codes_so2_compliance_strategies",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_so2_compliance_strategies")
- ),
- )
- op.create_table(
- "core_eia__codes_so2_units",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_so2_units")),
- )
- op.create_table(
- "core_eia__codes_steam_plant_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_eia__codes_steam_plant_types")
- ),
- )
- op.create_table(
- "core_eia__codes_wet_dry_bottom",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint("code", name=op.f("pk_core_eia__codes_wet_dry_bottom")),
- )
- op.create_table(
- "core_eia__entity_plants",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", name=op.f("pk_core_eia__entity_plants")
- ),
- )
- op.create_table(
- "core_eia__entity_utilities",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", name=op.f("pk_core_eia__entity_utilities")
- ),
- )
- op.create_table(
- "core_eia__yearly_fuel_receipts_costs_aggs",
- sa.Column(
- "fuel_agg",
- sa.Text(),
- nullable=False,
- comment="Category of fuel aggregation in EIA bulk electricity data.",
- ),
- sa.Column(
- "geo_agg",
- sa.Text(),
- nullable=False,
- comment="Category of geographic aggregation in EIA bulk electricity data.",
- ),
- sa.Column(
- "sector_agg",
- sa.Text(),
- nullable=False,
- comment="Category of sectoral aggregation in EIA bulk electricity data.",
- ),
- sa.Column(
- "temporal_agg",
- sa.Text(),
- nullable=False,
- comment="Category of temporal aggregation in EIA bulk electricity data.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "fuel_received_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.PrimaryKeyConstraint(
- "fuel_agg",
- "geo_agg",
- "sector_agg",
- "temporal_agg",
- "report_date",
- name=op.f("pk_core_eia__yearly_fuel_receipts_costs_aggs"),
- ),
- )
- op.create_table(
- "core_epa__assn_epacamd_eia_subplant_ids",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_epa",
- sa.Integer(),
- nullable=True,
- comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
- ),
- sa.Column(
- "subplant_id",
- sa.Integer(),
- nullable=True,
- comment="Sub-plant ID links EPA CEMS emissions units to EIA units.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "emissions_unit_id_epa",
- sa.Text(),
- nullable=True,
- comment="Emissions (smokestack) unit monitored by EPA CEMS.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- )
- op.create_table(
- "core_ferc1__codes_power_purchase_types",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "label",
- sa.Text(),
- nullable=True,
- comment="Longer human-readable code using snake_case",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_ferc1__codes_power_purchase_types")
- ),
- )
- op.create_table(
- "core_ferc714__respondent_id",
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
- sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
- sa.Column("eia_code", sa.Integer(), nullable=True),
- sa.PrimaryKeyConstraint(
- "respondent_id_ferc714", name=op.f("pk_core_ferc714__respondent_id")
- ),
- )
- op.create_table(
- "core_ferc__codes_accounts",
- sa.Column(
- "ferc_account_id",
- sa.Text(),
- nullable=False,
- comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories.",
- ),
- sa.Column("ferc_account_description", sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint(
- "ferc_account_id", name=op.f("pk_core_ferc__codes_accounts")
- ),
- )
- op.create_table(
- "core_pudl__codes_data_maturities",
- sa.Column(
- "code", sa.Text(), nullable=False, comment="Originally reported short code."
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.PrimaryKeyConstraint(
- "code", name=op.f("pk_core_pudl__codes_data_maturities")
- ),
- )
- op.create_table(
- "core_pudl__codes_datasources",
- sa.Column(
- "datasource",
- sa.Enum(
- "censusdp1tract",
- "eia176",
- "eia860",
- "eia860m",
- "eia861",
- "eia923",
- "eia_bulk_elec",
- "eiawater",
- "epacems",
- "core_epa__assn_epacamd_eia",
- "ferc1",
- "ferc2",
- "ferc6",
- "ferc60",
- "ferc714",
- "ferceqr",
- "mshamines",
- "phmsagas",
- "pudl",
- ),
- nullable=False,
- comment="Code identifying a dataset available within PUDL.",
- ),
- sa.Column(
- "partitions",
- sa.Text(),
- nullable=True,
- comment="The data parititions used to generate this instance of the database.",
- ),
- sa.Column(
- "doi",
- sa.Text(),
- nullable=True,
- comment="Unique digitial object identifier of Zenodo archive.",
- ),
- sa.Column(
- "pudl_version",
- sa.Text(),
- nullable=True,
- comment="The version of PUDL used to generate this database.",
- ),
- sa.PrimaryKeyConstraint(
- "datasource", name=op.f("pk_core_pudl__codes_datasources")
- ),
- )
- op.create_table(
- "core_pudl__codes_subdivisions",
- sa.Column(
- "country_code",
- sa.Enum("USA", "CAN"),
- nullable=False,
- comment="Three letter ISO-3166 country code (e.g. USA or CAN).",
- ),
- sa.Column(
- "country_name",
- sa.Text(),
- nullable=True,
- comment="Full country name (e.g. United States of America).",
- ),
- sa.Column(
- "subdivision_code",
- sa.Enum(
- "AS",
- "ID",
- "UT",
- "IL",
- "OH",
- "AL",
- "KY",
- "NH",
- "NT",
- "ND",
- "KS",
- "MN",
- "MI",
- "OR",
- "CO",
- "QC",
- "AB",
- "MP",
- "WI",
- "BC",
- "AZ",
- "SD",
- "RI",
- "ME",
- "MO",
- "NC",
- "GA",
- "YT",
- "ON",
- "CA",
- "DE",
- "FL",
- "NE",
- "NM",
- "VA",
- "WA",
- "NJ",
- "DC",
- "MS",
- "GU",
- "WV",
- "CT",
- "AK",
- "WY",
- "TN",
- "TX",
- "PR",
- "SC",
- "MD",
- "IN",
- "NB",
- "NS",
- "LA",
- "OK",
- "SK",
- "VI",
- "NV",
- "MT",
- "IA",
- "NY",
- "PA",
- "MB",
- "MA",
- "VT",
- "AR",
- "PE",
- "NU",
- "HI",
- "NL",
- ),
- nullable=False,
- comment="Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).",
- ),
- sa.Column(
- "subdivision_name",
- sa.Text(),
- nullable=True,
- comment="Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.",
- ),
- sa.Column(
- "subdivision_type",
- sa.Text(),
- nullable=True,
- comment="ISO-3166 political subdivision type. E.g. state, province, outlying_area.",
- ),
- sa.Column(
- "timezone_approx",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.",
- ),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.Column(
- "division_name_us_census",
- sa.Text(),
- nullable=True,
- comment="Longer human readable name describing the US Census division.",
- ),
- sa.Column(
- "division_code_us_census",
- sa.Enum(
- "ESC", "MTN", "PCN", "ENC", "SAT", "PCC", "WNC", "MAT", "NEW", "WSC"
- ),
- nullable=True,
- comment="Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf",
- ),
- sa.Column(
- "region_name_us_census",
- sa.Text(),
- nullable=True,
- comment="Human-readable name of a US Census region.",
- ),
- sa.Column(
- "is_epacems_state",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System.",
- ),
- sa.PrimaryKeyConstraint(
- "country_code",
- "subdivision_code",
- name=op.f("pk_core_pudl__codes_subdivisions"),
- ),
- )
- op.create_table(
- "core_pudl__entity_plants_pudl",
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_pudl",
- sa.Text(),
- nullable=True,
- comment="Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.",
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_pudl", name=op.f("pk_core_pudl__entity_plants_pudl")
- ),
- )
- op.create_table(
- "core_pudl__entity_utilities_pudl",
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_pudl",
- sa.Text(),
- nullable=True,
- comment="Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.",
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_pudl", name=op.f("pk_core_pudl__entity_utilities_pudl")
- ),
- )
- op.create_table(
- "out_eia861__compiled_geometry_balancing_authorities",
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=False,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "county_name_census",
- sa.Text(),
- nullable=True,
- comment="County name as specified in Census DP1 Data.",
- ),
- sa.Column(
- "population",
- sa.Float(),
- nullable=True,
- comment="County population, sourced from Census DP1 data.",
- ),
- sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=False,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("county", sa.Text(), nullable=False, comment="County name."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_id_eia",
- "report_date",
- "county_id_fips",
- "county",
- name=op.f("pk_out_eia861__compiled_geometry_balancing_authorities"),
- ),
- )
- op.create_table(
- "out_eia861__compiled_geometry_utilities",
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=False,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "county_name_census",
- sa.Text(),
- nullable=True,
- comment="County name as specified in Census DP1 Data.",
- ),
- sa.Column(
- "population",
- sa.Float(),
- nullable=True,
- comment="County population, sourced from Census DP1 data.",
- ),
- sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia",
- "report_date",
- "county_id_fips",
- name=op.f("pk_out_eia861__compiled_geometry_utilities"),
- ),
- )
- op.create_table(
- "out_ferc714__hourly_predicted_state_demand",
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=False,
- comment="Two digit state FIPS code.",
- ),
- sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
- sa.Column("demand_mwh", sa.Float(), nullable=True),
- sa.Column(
- "scaled_demand_mwh",
- sa.Float(),
- nullable=True,
- comment="Estimated electricity demand scaled by the total sales within a state.",
- ),
- sa.PrimaryKeyConstraint(
- "state_id_fips",
- "utc_datetime",
- name=op.f("pk_out_ferc714__hourly_predicted_state_demand"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_heat_rate_by_unit",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- name=op.f("pk__out_eia__monthly_heat_rate_by_unit"),
- ),
- )
- op.create_table(
- "core_eia860__scd_emissions_control_equipment",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "emission_control_id_pudl",
- sa.Float(),
- nullable=False,
- comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "emission_control_equipment_type_code",
- sa.Text(),
- nullable=True,
- comment="Short code indicating the type of emission control equipment installed.",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "mercury_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Mercury control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "nox_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "particulate_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Particulate matter control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "so2_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "acid_gas_control",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
- ),
- sa.Column(
- "emission_control_equipment_cost",
- sa.Float(),
- nullable=True,
- comment="The total cost to install a piece of emission control equipment.",
- ),
- sa.Column(
- "emission_control_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
- ),
- sa.Column(
- "emission_control_retirement_date",
- sa.Date(),
- nullable=True,
- comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["emission_control_equipment_type_code"],
- ["core_eia__codes_emission_control_equipment_types.code"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_year",
- "plant_id_eia",
- "emission_control_id_pudl",
- name=op.f("pk_core_eia860__scd_emissions_control_equipment"),
- ),
- )
- op.create_table(
- "core_eia860__scd_utilities",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "plants_reported_owner",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_operator",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_asset_manager",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_other_relationship",
- sa.Boolean(),
- nullable=True,
- comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("attention_line", sa.Text(), nullable=True),
- sa.Column("address_2", sa.Text(), nullable=True),
- sa.Column(
- "zip_code_4",
- sa.Text(),
- nullable=True,
- comment="Four digit US Zip Code suffix.",
- ),
- sa.Column(
- "contact_firstname",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 1.",
- ),
- sa.Column(
- "contact_lastname",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 1.",
- ),
- sa.Column(
- "contact_title",
- sa.Text(),
- nullable=True,
- comment="Title of of utility contact 1.",
- ),
- sa.Column(
- "phone_number",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 1.",
- ),
- sa.Column(
- "phone_extension",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 1",
- ),
- sa.Column(
- "contact_firstname_2",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 2.",
- ),
- sa.Column(
- "contact_lastname_2",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 2.",
- ),
- sa.Column(
- "contact_title_2",
- sa.Text(),
- nullable=True,
- comment="Title of utility contact 2.",
- ),
- sa.Column(
- "phone_number_2",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 2.",
- ),
- sa.Column(
- "phone_extension_2",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 2",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", "report_date", name=op.f("pk_core_eia860__scd_utilities")
- ),
- )
- op.create_table(
- "core_eia861__yearly_advanced_metering_infrastructure",
- sa.Column("advanced_metering_infrastructure", sa.Integer(), nullable=True),
- sa.Column("automated_meter_reading", sa.Integer(), nullable=True),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=False,
- comment="High level categorization of customer type.",
- ),
- sa.Column("daily_digital_access_customers", sa.Integer(), nullable=True),
- sa.Column("direct_load_control_customers", sa.Integer(), nullable=True),
- sa.Column("energy_served_ami_mwh", sa.Float(), nullable=True),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("home_area_network", sa.Integer(), nullable=True),
- sa.Column("non_amr_ami", sa.Integer(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_code_eia",
- "customer_class",
- "report_date",
- "state",
- "utility_id_eia",
- name=op.f("pk_core_eia861__yearly_advanced_metering_infrastructure"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_response",
- sa.Column("actual_peak_demand_savings_mw", sa.Float(), nullable=True),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=False,
- comment="High level categorization of customer type.",
- ),
- sa.Column("customer_incentives_cost", sa.Float(), nullable=True),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("energy_savings_mwh", sa.Float(), nullable=True),
- sa.Column("other_costs", sa.Float(), nullable=True),
- sa.Column("potential_peak_demand_savings_mw", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_code_eia",
- "customer_class",
- "report_date",
- "state",
- "utility_id_eia",
- name=op.f("pk_core_eia861__yearly_demand_response"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_response_water_heater",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("water_heater", sa.Integer(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "balancing_authority_code_eia",
- "report_date",
- "state",
- "utility_id_eia",
- name=op.f("pk_core_eia861__yearly_demand_response_water_heater"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_side_management_ee_dr",
- sa.Column("annual_indirect_program_cost", sa.Float(), nullable=True),
- sa.Column("annual_total_cost", sa.Float(), nullable=True),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "energy_efficiency_annual_actual_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("energy_efficiency_annual_cost", sa.Float(), nullable=True),
- sa.Column("energy_efficiency_annual_effects_mwh", sa.Float(), nullable=True),
- sa.Column(
- "energy_efficiency_annual_incentive_payment", sa.Float(), nullable=True
- ),
- sa.Column(
- "energy_efficiency_incremental_actual_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column(
- "energy_efficiency_incremental_effects_mwh", sa.Float(), nullable=True
- ),
- sa.Column(
- "load_management_annual_actual_peak_reduction_mw", sa.Float(), nullable=True
- ),
- sa.Column("load_management_annual_cost", sa.Float(), nullable=True),
- sa.Column("load_management_annual_effects_mwh", sa.Float(), nullable=True),
- sa.Column(
- "load_management_annual_incentive_payment", sa.Float(), nullable=True
- ),
- sa.Column(
- "load_management_annual_potential_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column(
- "load_management_incremental_actual_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("load_management_incremental_effects_mwh", sa.Float(), nullable=True),
- sa.Column(
- "load_management_incremental_potential_peak_reduction_mw",
- sa.Float(),
- nullable=True,
- ),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("price_responsiveness_customers", sa.Integer(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("time_responsiveness_customers", sa.Integer(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_side_management_misc",
- sa.Column(
- "energy_savings_estimates_independently_verified",
- sa.Boolean(),
- nullable=True,
- ),
- sa.Column("energy_savings_independently_verified", sa.Boolean(), nullable=True),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("major_program_changes", sa.Boolean(), nullable=True),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("price_responsive_programs", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("reported_as_another_company", sa.Text(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("time_responsive_programs", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_demand_side_management_sales",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
- sa.Column("sales_to_ultimate_consumers_mwh", sa.Float(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distributed_generation_fuel",
- sa.Column(
- "estimated_or_actual_fuel_data",
- sa.Enum("estimated", "actual"),
- nullable=True,
- ),
- sa.Column(
- "fuel_class",
- sa.Enum("gas", "oil", "other", "renewable", "water", "wind", "wood"),
- nullable=True,
- ),
- sa.Column("fuel_pct", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distributed_generation_misc",
- sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
- sa.Column(
- "distributed_generation_owned_capacity_mw", sa.Float(), nullable=True
- ),
- sa.Column(
- "estimated_or_actual_capacity_data",
- sa.Enum("estimated", "actual"),
- nullable=True,
- ),
- sa.Column("generators_num_less_1_mw", sa.Float(), nullable=True),
- sa.Column("generators_number", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("total_capacity_less_1_mw", sa.Float(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distributed_generation_tech",
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "estimated_or_actual_tech_data",
- sa.Enum("estimated", "actual"),
- nullable=True,
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "tech_class",
- sa.Enum(
- "backup",
- "chp_cogen",
- "combustion_turbine",
- "fuel_cell",
- "hydro",
- "internal_combustion",
- "other",
- "pv",
- "steam",
- "storage_pv",
- "all_storage",
- "total",
- "virtual_pv",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_distribution_systems",
- sa.Column("circuits_with_voltage_optimization", sa.Integer(), nullable=True),
- sa.Column("distribution_circuits", sa.Integer(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_dynamic_pricing",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("critical_peak_pricing", sa.Boolean(), nullable=True),
- sa.Column("critical_peak_rebate", sa.Boolean(), nullable=True),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("real_time_pricing", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("time_of_use_pricing", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("variable_peak_pricing", sa.Boolean(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_energy_efficiency",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column("customer_incentives_incremental_cost", sa.Float(), nullable=True),
- sa.Column(
- "customer_incentives_incremental_life_cycle_cost", sa.Float(), nullable=True
- ),
- sa.Column(
- "customer_other_costs_incremental_life_cycle_cost",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("incremental_energy_savings_mwh", sa.Float(), nullable=True),
- sa.Column(
- "incremental_life_cycle_energy_savings_mwh", sa.Float(), nullable=True
- ),
- sa.Column(
- "incremental_life_cycle_peak_reduction_mwh", sa.Float(), nullable=True
- ),
- sa.Column("incremental_peak_reduction_mw", sa.Float(), nullable=True),
- sa.Column("other_costs_incremental_cost", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("weighted_average_life_years", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_green_pricing",
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("green_pricing_revenue", sa.Float(), nullable=True),
- sa.Column("rec_revenue", sa.Float(), nullable=True),
- sa.Column("rec_sales_mwh", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_mergers",
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("merge_address", sa.Text(), nullable=True),
- sa.Column("merge_city", sa.Text(), nullable=True),
- sa.Column("merge_company", sa.Text(), nullable=True),
- sa.Column("merge_date", sa.Date(), nullable=True),
- sa.Column(
- "merge_state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.",
- ),
- sa.Column("new_parent", sa.Text(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "zip_code_4",
- sa.Text(),
- nullable=True,
- comment="Four digit US Zip Code suffix.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_net_metering_customer_fuel_class",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column("energy_displaced_mwh", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column("sold_to_utility_mwh", sa.Float(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "tech_class",
- sa.Enum(
- "backup",
- "chp_cogen",
- "combustion_turbine",
- "fuel_cell",
- "hydro",
- "internal_combustion",
- "other",
- "pv",
- "steam",
- "storage_pv",
- "all_storage",
- "total",
- "virtual_pv",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_net_metering_misc",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_non_net_metering_customer_fuel_class",
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=True,
- comment="High level categorization of customer type.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "tech_class",
- sa.Enum(
- "backup",
- "chp_cogen",
- "combustion_turbine",
- "fuel_cell",
- "hydro",
- "internal_combustion",
- "other",
- "pv",
- "steam",
- "storage_pv",
- "all_storage",
- "total",
- "virtual_pv",
- "wind",
- ),
- nullable=True,
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_non_net_metering_misc",
- sa.Column("backup_capacity_mw", sa.Float(), nullable=True),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column("generators_number", sa.Float(), nullable=True),
- sa.Column("pv_current_flow_type", sa.Enum("AC", "DC"), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("utility_owned_capacity_mw", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_operational_data_misc",
- sa.Column("consumed_by_facility_mwh", sa.Float(), nullable=True),
- sa.Column(
- "consumed_by_respondent_without_charge_mwh", sa.Float(), nullable=True
- ),
- sa.Column(
- "data_observed",
- sa.Boolean(),
- nullable=True,
- comment="Is the value observed (True) or imputed (False).",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("exchange_energy_delivered_mwh", sa.Float(), nullable=True),
- sa.Column("exchange_energy_received_mwh", sa.Float(), nullable=True),
- sa.Column("furnished_without_charge_mwh", sa.Float(), nullable=True),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column("net_power_exchanged_mwh", sa.Float(), nullable=True),
- sa.Column("net_wheeled_power_mwh", sa.Float(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("retail_sales_mwh", sa.Float(), nullable=True),
- sa.Column("sales_for_resale_mwh", sa.Float(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("summer_peak_demand_mw", sa.Float(), nullable=True),
- sa.Column("total_disposition_mwh", sa.Float(), nullable=True),
- sa.Column("total_energy_losses_mwh", sa.Float(), nullable=True),
- sa.Column("total_sources_mwh", sa.Float(), nullable=True),
- sa.Column("transmission_by_other_losses_mwh", sa.Float(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("wheeled_power_delivered_mwh", sa.Float(), nullable=True),
- sa.Column("wheeled_power_received_mwh", sa.Float(), nullable=True),
- sa.Column("wholesale_power_purchases_mwh", sa.Float(), nullable=True),
- sa.Column("winter_peak_demand_mw", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_operational_data_revenue",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("revenue", sa.Float(), nullable=True),
- sa.Column(
- "revenue_class",
- sa.Enum(
- "credits_or_adjustments",
- "delivery_customers",
- "other",
- "retail_sales",
- "sales_for_resale",
- "total",
- "transmission",
- "unbundled",
- ),
- nullable=True,
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_reliability",
- sa.Column(
- "caidi_w_major_event_days_minus_loss_of_service_minutes",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("caidi_w_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column("caidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("highest_distribution_voltage_kv", sa.Float(), nullable=True),
- sa.Column("inactive_accounts_included", sa.Boolean(), nullable=True),
- sa.Column("momentary_interruption_definition", sa.Text(), nullable=True),
- sa.Column("outages_recorded_automatically", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "saidi_w_major_event_days_minus_loss_of_service_minutes",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("saidi_w_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column("saidi_wo_major_event_days_minutes", sa.Float(), nullable=True),
- sa.Column("saifi_w_major_event_days_customers", sa.Float(), nullable=True),
- sa.Column(
- "saifi_w_major_event_days_minus_loss_of_service_customers",
- sa.Float(),
- nullable=True,
- ),
- sa.Column("saifi_wo_major_event_days_customers", sa.Float(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "standard", sa.Enum("ieee_standard", "other_standard"), nullable=True
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["momentary_interruption_definition"],
- ["core_eia__codes_momentary_interruptions.code"],
- name=op.f(
- "fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_sales",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=False,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=False,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "customer_class",
- sa.Enum(
- "commercial",
- "industrial",
- "direct_connection",
- "other",
- "residential",
- "total",
- "transportation",
- ),
- nullable=False,
- comment="High level categorization of customer type.",
- ),
- sa.Column(
- "business_model", sa.Enum("retail", "energy_services"), nullable=False
- ),
- sa.Column(
- "data_observed",
- sa.Boolean(),
- nullable=True,
- comment="Is the value observed (True) or imputed (False).",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column(
- "service_type", sa.Enum("bundled", "energy", "delivery"), nullable=False
- ),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "customers", sa.Float(), nullable=True, comment="Number of customers."
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "sales_revenue",
- sa.Float(),
- nullable=True,
- comment="Revenue from electricity sold.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia",
- "state",
- "report_date",
- "balancing_authority_code_eia",
- "customer_class",
- "business_model",
- "service_type",
- name=op.f("pk_core_eia861__yearly_sales"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_service_territory",
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=False,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "utility_id_eia",
- "county_id_fips",
- name=op.f("pk_core_eia861__yearly_service_territory"),
- ),
- )
- op.create_table(
- "core_eia861__yearly_utility_data_misc",
- sa.Column("alternative_fuel_vehicle_2_activity", sa.Boolean(), nullable=True),
- sa.Column("alternative_fuel_vehicle_activity", sa.Boolean(), nullable=True),
- sa.Column("bundled_activity", sa.Boolean(), nullable=True),
- sa.Column("buying_distribution_activity", sa.Boolean(), nullable=True),
- sa.Column("buying_transmission_activity", sa.Boolean(), nullable=True),
- sa.Column("distribution_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("generation_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("operates_generating_plant", sa.Boolean(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("retail_marketing_activity", sa.Boolean(), nullable=True),
- sa.Column("short_form", sa.Boolean(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("transmission_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("wholesale_marketing_activity", sa.Boolean(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_utility_data_nerc",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "nerc_regions_of_operation",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia861__yearly_utility_data_rto",
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "rtos_of_operation",
- sa.Enum("caiso", "ercot", "isone", "miso", "nyiso", "other", "pjm", "spp"),
- nullable=True,
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- )
- op.create_table(
- "core_eia923__entity_coalmine",
- sa.Column(
- "mine_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="Dynamically assigned PUDL mine identifier.",
- ),
- sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
- sa.Column(
- "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=True,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.Column(
- "mine_id_msha",
- sa.Integer(),
- nullable=True,
- comment="MSHA issued mine identifier.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mine_type_code"],
- ["core_eia__codes_coalmine_types.code"],
- name=op.f(
- "fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "mine_id_pudl", name=op.f("pk_core_eia923__entity_coalmine")
- ),
- )
- op.create_table(
- "core_eia923__monthly_generation_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_code_aer",
- sa.Text(),
- nullable=True,
- comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["fuel_type_code_aer"],
- ["core_eia__codes_fuel_types_aer.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_core_eia923__monthly_generation_fuel"),
- ),
- )
- op.create_table(
- "core_eia923__monthly_generation_fuel_nuclear",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "nuclear_unit_id",
- sa.Text(),
- nullable=False,
- comment="For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_code_aer",
- sa.Text(),
- nullable=True,
- comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["fuel_type_code_aer"],
- ["core_eia__codes_fuel_types_aer.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "nuclear_unit_id",
- "energy_source_code",
- "prime_mover_code",
- name=op.f("pk_core_eia923__monthly_generation_fuel_nuclear"),
- ),
- )
- op.create_table(
- "core_eia__entity_boilers",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "boiler_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of boiler manufacturer.",
- ),
- sa.Column(
- "boiler_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="EIA short code for boiler manufacturer.",
- ),
- sa.ForeignKeyConstraint(
- ["boiler_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "boiler_id", name=op.f("pk_core_eia__entity_boilers")
- ),
- )
- op.create_table(
- "core_eia__entity_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "generator_id", name=op.f("pk_core_eia__entity_generators")
- ),
- )
- op.create_table(
- "core_ferc714__hourly_demand_pa",
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column("utc_datetime", sqlite.DATETIME(), nullable=False),
- sa.Column(
- "timezone",
- sa.Enum(
- "America/New_York",
- "America/Chicago",
- "America/Denver",
- "America/Los_Angeles",
- "America/Anchorage",
- "Pacific/Honolulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column("demand_mwh", sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(
- ["respondent_id_ferc714"],
- ["core_ferc714__respondent_id.respondent_id_ferc714"],
- name=op.f(
- "fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "respondent_id_ferc714",
- "utc_datetime",
- name=op.f("pk_core_ferc714__hourly_demand_pa"),
- ),
- )
- op.create_table(
- "core_pudl__assn_plants_eia",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_plants_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", name=op.f("pk_core_pudl__assn_plants_eia")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_eia",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", name=op.f("pk_core_pudl__assn_utilities_eia")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_ferc1",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_ferc1_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1", name=op.f("pk_core_pudl__assn_utilities_ferc1")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_plants",
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_pudl",
- "plant_id_pudl",
- name=op.f("pk_core_pudl__assn_utilities_plants"),
- ),
- )
- op.create_table(
- "out_eia860__yearly_emissions_control_equipment",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "emission_control_id_pudl",
- sa.Float(),
- nullable=False,
- comment="A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "emission_control_equipment_type_code",
- sa.Text(),
- nullable=True,
- comment="Short code indicating the type of emission control equipment installed.",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "mercury_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Mercury control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "nox_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "particulate_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Particulate matter control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "so2_control_id_eia",
- sa.Text(),
- nullable=True,
- comment="Sulfur dioxide control identification number. This ID is not a unique identifier.",
- ),
- sa.Column(
- "acid_gas_control",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the emissions control equipment controls acid (HCl) gas.",
- ),
- sa.Column(
- "emission_control_equipment_cost",
- sa.Float(),
- nullable=True,
- comment="The total cost to install a piece of emission control equipment.",
- ),
- sa.Column(
- "emission_control_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.",
- ),
- sa.Column(
- "emission_control_retirement_date",
- sa.Date(),
- nullable=True,
- comment="The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["emission_control_equipment_type_code"],
- ["core_eia__codes_emission_control_equipment_types.code"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_year",
- "plant_id_eia",
- "emission_control_id_pudl",
- name=op.f("pk_out_eia860__yearly_emissions_control_equipment"),
- ),
- )
- op.create_table(
- "out_eia923__fuel_receipts_costs",
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "contract_type_code",
- sa.Enum("S", "C", "NC", "T"),
- nullable=True,
- comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
- ),
- sa.Column(
- "contract_expiration_date",
- sa.Date(),
- nullable=True,
- comment="Date contract expires.Format: MMYY.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=True,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_group_code",
- sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
- nullable=True,
- comment="Fuel groups used in the Electric Power Monthly",
- ),
- sa.Column(
- "supplier_name",
- sa.Text(),
- nullable=True,
- comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "bulk_agg_fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column(
- "primary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the longest distance transported.",
- ),
- sa.Column(
- "secondary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the second longest distance transported.",
- ),
- sa.Column(
- "natural_gas_transport_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natural gas transportation service.",
- ),
- sa.Column(
- "natural_gas_delivery_contract_type_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natrual gas delivery service:",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "mine_id_msha",
- sa.Integer(),
- nullable=True,
- comment="MSHA issued mine identifier.",
- ),
- sa.Column("mine_name", sa.Text(), nullable=True, comment="Coal mine name."),
- sa.Column(
- "mine_state",
- sa.Text(),
- nullable=True,
- comment="State where the coal mine is located. Two letter abbreviation.",
- ),
- sa.Column(
- "coalmine_county_id_fips",
- sa.Text(),
- nullable=True,
- comment="County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.",
- ),
- sa.Column(
- "mine_type_code", sa.Text(), nullable=True, comment="Type of coal mine."
- ),
- sa.ForeignKeyConstraint(
- ["contract_type_code"],
- ["core_eia__codes_contract_types.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mine_type_code"],
- ["core_eia__codes_coalmine_types.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["primary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["secondary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia923__generation_fuel_combined",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_code_aer",
- sa.Text(),
- nullable=True,
- comment="A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["fuel_type_code_aer"],
- ["core_eia__codes_fuel_types_aer.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_out_eia923__generation_fuel_combined"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_fuel_receipts_costs",
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_combined",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_out_eia923__monthly_generation_fuel_combined"),
- ),
- )
- op.create_table(
- "out_ferc714__respondents_with_fips",
- sa.Column("eia_code", sa.Integer(), nullable=True),
- sa.Column(
- "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
- ),
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=True),
- sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "state_id_fips",
- sa.Text(),
- nullable=True,
- comment="Two digit state FIPS code.",
- ),
- sa.Column(
- "county_id_fips",
- sa.Text(),
- nullable=True,
- comment="County ID from the Federal Information Processing Standard Publication 6-4.",
- ),
- sa.ForeignKeyConstraint(
- ["respondent_id_ferc714"],
- ["core_ferc714__respondent_id.respondent_id_ferc714"],
- name=op.f(
- "fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id"
- ),
- ),
- )
- op.create_table(
- "out_ferc714__summarized_demand",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("respondent_id_ferc714", sa.Integer(), nullable=False),
- sa.Column("demand_annual_mwh", sa.Float(), nullable=True),
- sa.Column(
- "population",
- sa.Float(),
- nullable=True,
- comment="County population, sourced from Census DP1 data.",
- ),
- sa.Column("area_km2", sa.Float(), nullable=True, comment="County area in km2."),
- sa.Column(
- "population_density_km2",
- sa.Float(),
- nullable=True,
- comment="Average population per sq. km area of a service territory.",
- ),
- sa.Column(
- "demand_annual_per_capita_mwh",
- sa.Float(),
- nullable=True,
- comment="Per-capita annual demand, averaged using Census county-level population estimates.",
- ),
- sa.Column(
- "demand_density_mwh_km2",
- sa.Float(),
- nullable=True,
- comment="Annual demand per km2 of a given service territory.",
- ),
- sa.Column("eia_code", sa.Integer(), nullable=True),
- sa.Column(
- "respondent_type", sa.Enum("utility", "balancing_authority"), nullable=True
- ),
- sa.Column("respondent_name_ferc714", sa.Text(), nullable=True),
- sa.Column(
- "balancing_authority_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.ForeignKeyConstraint(
- ["respondent_id_ferc714"],
- ["core_ferc714__respondent_id.respondent_id_ferc714"],
- name=op.f(
- "fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "respondent_id_ferc714",
- "report_date",
- name=op.f("pk_out_ferc714__summarized_demand"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_capacity_factor_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_capacity_factor_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_derived_generator_attributes",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_derived_generator_attributes"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_fuel_cost_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_fuel_cost_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__monthly_heat_rate_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__monthly_heat_rate_by_generator"),
- ),
- )
- op.create_table(
- "core_eia860__scd_plants",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "ash_impoundment",
- sa.Boolean(),
- nullable=True,
- comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
- ),
- sa.Column(
- "ash_impoundment_lined",
- sa.Boolean(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, is the impoundment lined?",
- ),
- sa.Column(
- "ash_impoundment_status",
- sa.Text(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "datum",
- sa.Text(),
- nullable=True,
- comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
- ),
- sa.Column(
- "energy_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility has energy storage capabilities.",
- ),
- sa.Column(
- "ferc_cogen_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_cogen_status",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
- ),
- sa.Column(
- "ferc_small_power_producer_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_small_power_producer",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_qualifying_facility_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "grid_voltage_1_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_2_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_3_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "iso_rto_code",
- sa.Text(),
- nullable=True,
- comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
- ),
- sa.Column(
- "liquefied_natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
- ),
- sa.Column(
- "natural_gas_local_distribution_company",
- sa.Text(),
- nullable=True,
- comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
- ),
- sa.Column(
- "natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have on-site storage of natural gas.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_1",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_2",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_3",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "net_metering",
- sa.Boolean(),
- nullable=True,
- comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
- ),
- sa.Column(
- "pipeline_notes",
- sa.Text(),
- nullable=True,
- comment="Additional owner or operator of natural gas pipeline.",
- ),
- sa.Column(
- "primary_purpose_id_naics",
- sa.Integer(),
- nullable=True,
- comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
- ),
- sa.Column(
- "regulatory_status_code",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the plant is regulated or non-regulated.",
- ),
- sa.Column(
- "reporting_frequency_code",
- sa.Enum("A", "AM", "M"),
- nullable=True,
- comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
- ),
- sa.Column(
- "sector_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "sector_name_eia",
- sa.Text(),
- nullable=True,
- comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "service_area",
- sa.Text(),
- nullable=True,
- comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
- ),
- sa.Column(
- "transmission_distribution_owner_id",
- sa.Integer(),
- nullable=True,
- comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_name",
- sa.Text(),
- nullable=True,
- comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_state",
- sa.Text(),
- nullable=True,
- comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "water_source",
- sa.Text(),
- nullable=True,
- comment="Name of water source associated with the plant.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["balancing_authority_code_eia"],
- ["core_eia__codes_balancing_authorities.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["reporting_frequency_code"],
- ["core_eia__codes_reporting_frequencies.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["sector_id_eia"],
- ["core_eia__codes_sector_consolidated.code"],
- name=op.f(
- "fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "report_date", name=op.f("pk_core_eia860__scd_plants")
- ),
- )
- op.create_table(
- "core_eia923__monthly_boiler_fuel",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_core_eia923__monthly_boiler_fuel"),
- ),
- )
- op.create_table(
- "core_eia923__monthly_fuel_receipts_costs",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "contract_type_code",
- sa.Enum("S", "C", "NC", "T"),
- nullable=True,
- comment="Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.",
- ),
- sa.Column(
- "contract_expiration_date",
- sa.Date(),
- nullable=True,
- comment="Date contract expires.Format: MMYY.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=True,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_group_code",
- sa.Enum("petroleum", "other_gas", "petroleum_coke", "natural_gas", "coal"),
- nullable=True,
- comment="Fuel groups used in the Electric Power Monthly",
- ),
- sa.Column(
- "mine_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL mine identifier.",
- ),
- sa.Column(
- "supplier_name",
- sa.Text(),
- nullable=True,
- comment="Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "primary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the longest distance transported.",
- ),
- sa.Column(
- "secondary_transportation_mode_code",
- sa.Text(),
- nullable=True,
- comment="Transportation mode for the second longest distance transported.",
- ),
- sa.Column(
- "natural_gas_transport_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natural gas transportation service.",
- ),
- sa.Column(
- "natural_gas_delivery_contract_type_code",
- sa.Enum("firm", "interruptible"),
- nullable=True,
- comment="Contract type for natrual gas delivery service:",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["contract_type_code"],
- ["core_eia__codes_contract_types.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mine_id_pudl"],
- ["core_eia923__entity_coalmine.mine_id_pudl"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia"],
- ["core_eia__entity_plants.plant_id_eia"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["primary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["secondary_transportation_mode_code"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- )
- op.create_table(
- "core_eia923__monthly_generation",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_core_eia923__monthly_generation"),
- ),
- )
- op.create_table(
- "core_epa__assn_epacamd_eia",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_epa",
- sa.Integer(),
- nullable=True,
- comment="The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.",
- ),
- sa.Column(
- "emissions_unit_id_epa",
- sa.Text(),
- nullable=True,
- comment="Emissions (smokestack) unit monitored by EPA CEMS.",
- ),
- sa.Column(
- "generator_id_epa",
- sa.Text(),
- nullable=True,
- comment="Generator ID used by the EPA.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=True, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_core_epa__assn_epacamd_eia_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_balance_sheet_assets_sched110",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "asset_type",
- name=op.f("pk_core_ferc1__yearly_balance_sheet_assets_sched110"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_balance_sheet_liabilities_sched110",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "liability_type",
- sa.Text(),
- nullable=False,
- comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "liability_type",
- name=op.f("pk_core_ferc1__yearly_balance_sheet_liabilities_sched110"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_cash_flows_sched120",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "amount_type",
- sa.Text(),
- nullable=False,
- comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
- ),
- sa.Column(
- "amount",
- sa.Float(),
- nullable=True,
- comment="Reported amount of dollars. This could be a balance or a change in value.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "amount_type",
- name=op.f("pk_core_ferc1__yearly_cash_flows_sched120"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_depreciation_by_function_sched219",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=True,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "plant_status",
- "utility_type",
- name=op.f("pk_core_ferc1__yearly_depreciation_by_function_sched219"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_depreciation_changes_sched219",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=False,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "depreciation_type",
- "plant_status",
- "utility_type",
- name=op.f("pk_core_ferc1__yearly_depreciation_changes_sched219"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_depreciation_summary_sched336",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "ferc_account_label",
- name=op.f("pk_core_ferc1__yearly_depreciation_summary_sched336"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_energy_dispositions_sched401",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_disposition_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_disposition_type",
- name=op.f("pk_core_ferc1__yearly_energy_dispositions_sched401"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_energy_sources_sched401",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_source_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_source_type",
- name=op.f("pk_core_ferc1__yearly_energy_sources_sched401"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_income_statements_sched114",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "income_type",
- sa.Text(),
- nullable=False,
- comment="Type of income reported in income_statement_ferc1 table.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "income_type",
- name=op.f("pk_core_ferc1__yearly_income_statements_sched114"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_operating_expenses_sched320",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "expense_type", sa.Text(), nullable=False, comment="The type of expense."
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "expense_type",
- name=op.f("pk_core_ferc1__yearly_operating_expenses_sched320"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_operating_revenues_sched300",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "revenue_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of revenues.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "revenue_type",
- name=op.f("pk_core_ferc1__yearly_operating_revenues_sched300"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_other_regulatory_liabilities_sched278",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "increase_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The increase during the reporting period of other regulatory liabilities.",
- ),
- sa.Column(
- "account_detail",
- sa.Text(),
- nullable=True,
- comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
- ),
- sa.Column(
- "decrease_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The decrease during the reporting period of other regulatory liabilities.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_plant_in_service_sched204",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "additions",
- sa.Float(),
- nullable=True,
- comment="Cost of acquisition of items classified within the account.",
- ),
- sa.Column(
- "retirements",
- sa.Float(),
- nullable=True,
- comment="Cost of disposal of items classified within the account.",
- ),
- sa.Column(
- "adjustments",
- sa.Float(),
- nullable=True,
- comment="Cost of adjustments to the account.",
- ),
- sa.Column(
- "transfers",
- sa.Float(),
- nullable=True,
- comment="Cost of transfers into (out of) the account.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "ferc_account_label",
- name=op.f("pk_core_ferc1__yearly_plant_in_service_sched204"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_purchased_power_and_exchanges_sched326",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "seller_name",
- sa.Text(),
- nullable=True,
- comment="Name of the seller, or the other party in an exchange transaction.",
- ),
- sa.Column(
- "purchase_type_code",
- sa.Text(),
- nullable=True,
- comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
- ),
- sa.Column(
- "tariff",
- sa.Text(),
- nullable=True,
- comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
- ),
- sa.Column(
- "billing_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
- ),
- sa.Column(
- "non_coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
- ),
- sa.Column(
- "coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
- ),
- sa.Column(
- "purchased_mwh",
- sa.Float(),
- nullable=True,
- comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
- ),
- sa.Column(
- "purchased_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for energy storage.",
- ),
- sa.Column(
- "purchased_other_than_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for other than energy storage.",
- ),
- sa.Column(
- "received_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "delivered_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
- ),
- sa.Column(
- "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
- ),
- sa.Column(
- "other_charges",
- sa.Float(),
- nullable=True,
- comment="Other charges, including out-of-period adjustments (USD).",
- ),
- sa.Column(
- "total_settlement",
- sa.Float(),
- nullable=True,
- comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
- ),
- sa.ForeignKeyConstraint(
- ["purchase_type_code"],
- ["core_ferc1__codes_power_purchase_types.code"],
- name=op.f(
- "fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_retained_earnings_sched118",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "earnings_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of earnings.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "earnings_type",
- name=op.f("pk_core_ferc1__yearly_retained_earnings_sched118"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_sales_by_rate_schedules_sched304",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "rate_schedule_type",
- sa.Text(),
- nullable=True,
- comment="Categorization of rate schedule type.",
- ),
- sa.Column(
- "billing_status",
- sa.Text(),
- nullable=True,
- comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
- ),
- sa.Column(
- "rate_schedule_description",
- sa.Text(),
- nullable=True,
- comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
- ),
- sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_transmission_lines_sched422",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "start_point",
- sa.Text(),
- nullable=True,
- comment="The starting point of a transmission line.",
- ),
- sa.Column(
- "end_point",
- sa.Text(),
- nullable=True,
- comment="The end point of a transmission line.",
- ),
- sa.Column(
- "operating_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
- ),
- sa.Column(
- "designed_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
- ),
- sa.Column(
- "supporting_structure_type",
- sa.Text(),
- nullable=True,
- comment="Supporting structure of the transmission line.",
- ),
- sa.Column(
- "transmission_line_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
- ),
- sa.Column(
- "transmission_line_and_structures_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
- ),
- sa.Column(
- "num_transmission_circuits",
- sa.Integer(),
- nullable=True,
- comment="Number of circuits in a transmission line.",
- ),
- sa.Column(
- "conductor_size_and_material",
- sa.Text(),
- nullable=True,
- comment="Size of transmission conductor and material of the transmission line.",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of Land and land rights for the transmission line.",
- ),
- sa.Column(
- "capex_other",
- sa.Float(),
- nullable=True,
- comment="Construction and other costs for the transmission line.",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total costs for the transmission line.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Operating expenses for the transmission line.",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Maintenance expenses for the transmission line.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Rent expenses for the transmission line.",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Overall expenses for the transmission line.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_utility_plant_summary_sched200",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "utility_type_other",
- sa.Text(),
- nullable=True,
- comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).",
- ),
- sa.Column(
- "utility_plant_asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "utility_plant_asset_type",
- name=op.f("pk_core_ferc1__yearly_utility_plant_summary_sched200"),
- ),
- )
- op.create_table(
- "core_pudl__assn_plants_ferc1",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=False,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_core_pudl__assn_plants_ferc1_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_pudl__assn_plants_ferc1_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "plant_name_ferc1",
- name=op.f("pk_core_pudl__assn_plants_ferc1"),
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_ferc1_dbf",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_ferc1_dbf",
- sa.Integer(),
- nullable=False,
- comment="FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_pudl__assn_utilities_ferc1_dbf_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1_dbf", name=op.f("pk_core_pudl__assn_utilities_ferc1_dbf")
- ),
- )
- op.create_table(
- "core_pudl__assn_utilities_ferc1_xbrl",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_ferc1_xbrl",
- sa.Text(),
- nullable=False,
- comment="FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_core_pudl__assn_utilities_ferc1_xbrl_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1_xbrl",
- name=op.f("pk_core_pudl__assn_utilities_ferc1_xbrl"),
- ),
- )
- op.create_table(
- "out_eia923__boiler_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_out_eia923__boiler_fuel"),
- ),
- )
- op.create_table(
- "out_eia923__generation",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_out_eia923__generation"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_boiler_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_out_eia923__monthly_boiler_fuel"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_out_eia923__monthly_generation"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia923__monthly_generation_fuel_by_generator"),
- ),
- )
- op.create_table(
- "out_eia923__monthly_generation_fuel_by_generator_energy_source",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name=op.f(
- "pk_out_eia923__monthly_generation_fuel_by_generator_energy_source"
- ),
- ),
- )
- op.create_table(
- "out_eia__monthly_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia"],
- ["core_eia__entity_utilities.utility_id_eia"],
- name=op.f(
- "fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia__monthly_generators"),
- ),
- )
- op.create_table(
- "out_eia__yearly_utilities",
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "plants_reported_owner",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an owner of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_operator",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an operator of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_asset_manager",
- sa.Boolean(),
- nullable=True,
- comment="Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "plants_reported_other_relationship",
- sa.Boolean(),
- nullable=True,
- comment="Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?",
- ),
- sa.Column(
- "entity_type",
- sa.Text(),
- nullable=True,
- comment="Entity type of principal owner.",
- ),
- sa.Column("attention_line", sa.Text(), nullable=True),
- sa.Column("address_2", sa.Text(), nullable=True),
- sa.Column(
- "zip_code_4",
- sa.Text(),
- nullable=True,
- comment="Four digit US Zip Code suffix.",
- ),
- sa.Column(
- "contact_firstname",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 1.",
- ),
- sa.Column(
- "contact_lastname",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 1.",
- ),
- sa.Column(
- "contact_title",
- sa.Text(),
- nullable=True,
- comment="Title of of utility contact 1.",
- ),
- sa.Column(
- "phone_number",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 1.",
- ),
- sa.Column(
- "phone_extension",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 1",
- ),
- sa.Column(
- "contact_firstname_2",
- sa.Text(),
- nullable=True,
- comment="First name of utility contact 2.",
- ),
- sa.Column(
- "contact_lastname_2",
- sa.Text(),
- nullable=True,
- comment="Last name of utility contact 2.",
- ),
- sa.Column(
- "contact_title_2",
- sa.Text(),
- nullable=True,
- comment="Title of utility contact 2.",
- ),
- sa.Column(
- "phone_number_2",
- sa.Text(),
- nullable=True,
- comment="Phone number for utility contact 2.",
- ),
- sa.Column(
- "phone_extension_2",
- sa.Text(),
- nullable=True,
- comment="Phone extension for utility contact 2",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_eia", "report_date", name=op.f("pk_out_eia__yearly_utilities")
- ),
- )
- op.create_table(
- "out_ferc1__yearly_balance_sheet_assets_sched110",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "asset_type",
- name=op.f("pk_out_ferc1__yearly_balance_sheet_assets_sched110"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_balance_sheet_liabilities_sched110",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "liability_type",
- sa.Text(),
- nullable=False,
- comment="Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "liability_type",
- name=op.f("pk_out_ferc1__yearly_balance_sheet_liabilities_sched110"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_cash_flows_sched120",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "amount_type",
- sa.Text(),
- nullable=False,
- comment="Label describing the type of amount being reported. This could be a balance or a change in value.",
- ),
- sa.Column(
- "amount",
- sa.Float(),
- nullable=True,
- comment="Reported amount of dollars. This could be a balance or a change in value.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_cash_flows_sched120_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "amount_type",
- name=op.f("pk_out_ferc1__yearly_cash_flows_sched120"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_depreciation_by_function_sched219",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=True,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "plant_status",
- "utility_type",
- name=op.f("pk_out_ferc1__yearly_depreciation_by_function_sched219"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_depreciation_changes_sched219",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "depreciation_type",
- sa.Text(),
- nullable=False,
- comment="Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.",
- ),
- sa.Column(
- "plant_status",
- sa.Text(),
- nullable=False,
- comment="Utility plant financial status (in service, future, leased, total).",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "depreciation_type",
- "plant_status",
- "utility_type",
- name=op.f("pk_out_ferc1__yearly_depreciation_changes_sched219"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_depreciation_summary_sched336",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_function",
- sa.Text(),
- nullable=False,
- comment="Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "plant_function",
- "ferc_account_label",
- name=op.f("pk_out_ferc1__yearly_depreciation_summary_sched336"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_energy_dispositions_sched401",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_disposition_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_disposition_type",
- name=op.f("pk_out_ferc1__yearly_energy_dispositions_sched401"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_energy_sources_sched401",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "energy_source_type",
- sa.Text(),
- nullable=False,
- comment="Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "energy_mwh",
- sa.Float(),
- nullable=True,
- comment="Sources and uses of energy in MWh.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_energy_sources_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "energy_source_type",
- name=op.f("pk_out_ferc1__yearly_energy_sources_sched401"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_income_statements_sched114",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "income_type",
- sa.Text(),
- nullable=False,
- comment="Type of income reported in income_statement_ferc1 table.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_income_statements_sched114_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "income_type",
- name=op.f("pk_out_ferc1__yearly_income_statements_sched114"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_operating_expenses_sched320",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "expense_type", sa.Text(), nullable=False, comment="The type of expense."
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "expense_type",
- name=op.f("pk_out_ferc1__yearly_operating_expenses_sched320"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_operating_revenues_sched300",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "revenue_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of revenues.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "revenue_type",
- name=op.f("pk_out_ferc1__yearly_operating_revenues_sched300"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_other_regulatory_liabilities_sched278",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "description",
- sa.Text(),
- nullable=True,
- comment="Long human-readable description of the meaning of a code/label.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "increase_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The increase during the reporting period of other regulatory liabilities.",
- ),
- sa.Column(
- "account_detail",
- sa.Text(),
- nullable=True,
- comment="Description of the account number credited from making debit adjustment to other regulatory liabilities.",
- ),
- sa.Column(
- "decrease_in_other_regulatory_liabilities",
- sa.Float(),
- nullable=True,
- comment="The decrease during the reporting period of other regulatory liabilities.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_plant_in_service_sched204",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=True,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "additions",
- sa.Float(),
- nullable=True,
- comment="Cost of acquisition of items classified within the account.",
- ),
- sa.Column(
- "adjustments",
- sa.Float(),
- nullable=True,
- comment="Cost of adjustments to the account.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "ferc_account_label",
- sa.Text(),
- nullable=False,
- comment="Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.",
- ),
- sa.Column(
- "retirements",
- sa.Float(),
- nullable=True,
- comment="Cost of disposal of items classified within the account.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "transfers",
- sa.Float(),
- nullable=True,
- comment="Cost of transfers into (out of) the account.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "ferc_account_label",
- name=op.f("pk_out_ferc1__yearly_plant_in_service_sched204"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_purchased_power_and_exchanges_sched326",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "seller_name",
- sa.Text(),
- nullable=True,
- comment="Name of the seller, or the other party in an exchange transaction.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "billing_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.",
- ),
- sa.Column(
- "coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts.",
- ),
- sa.Column(
- "delivered_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "demand_charges", sa.Float(), nullable=True, comment="Demand charges (USD)."
- ),
- sa.Column(
- "energy_charges", sa.Float(), nullable=True, comment="Energy charges (USD)."
- ),
- sa.Column(
- "non_coincident_peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.",
- ),
- sa.Column(
- "other_charges",
- sa.Float(),
- nullable=True,
- comment="Other charges, including out-of-period adjustments (USD).",
- ),
- sa.Column(
- "purchase_type_code",
- sa.Text(),
- nullable=True,
- comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction.",
- ),
- sa.Column(
- "purchased_mwh",
- sa.Float(),
- nullable=True,
- comment="Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.",
- ),
- sa.Column(
- "purchased_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for energy storage.",
- ),
- sa.Column(
- "purchased_other_than_storage_mwh",
- sa.Float(),
- nullable=True,
- comment="Number of megawatt hours purchased during the period for other than energy storage.",
- ),
- sa.Column(
- "received_mwh",
- sa.Float(),
- nullable=True,
- comment="Gross megawatt-hours received in power exchanges and used as the basis for settlement.",
- ),
- sa.Column(
- "tariff",
- sa.Text(),
- nullable=True,
- comment="FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)",
- ),
- sa.Column(
- "total_settlement",
- sa.Float(),
- nullable=True,
- comment="Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.",
- ),
- sa.ForeignKeyConstraint(
- ["purchase_type_code"],
- ["core_ferc1__codes_power_purchase_types.code"],
- name=op.f(
- "fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_retained_earnings_sched118",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "earnings_type",
- sa.Text(),
- nullable=False,
- comment="Label describing types of earnings.",
- ),
- sa.Column(
- "starting_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at beginning of year.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "balance",
- sa.Text(),
- nullable=True,
- comment="Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.",
- ),
- sa.Column(
- "ferc_account",
- sa.Text(),
- nullable=True,
- comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "earnings_type",
- name=op.f("pk_out_ferc1__yearly_retained_earnings_sched118"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_sales_by_rate_schedules_sched304",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "rate_schedule_type",
- sa.Text(),
- nullable=True,
- comment="Categorization of rate schedule type.",
- ),
- sa.Column(
- "billing_status",
- sa.Text(),
- nullable=True,
- comment="Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.",
- ),
- sa.Column(
- "rate_schedule_description",
- sa.Text(),
- nullable=True,
- comment="Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.",
- ),
- sa.Column(
- "sales_mwh",
- sa.Float(),
- nullable=True,
- comment="Quantity of electricity sold in MWh.",
- ),
- sa.Column(
- "dollar_value",
- sa.Float(),
- nullable=True,
- comment="Dollar value of reported income, expense, asset, or liability.",
- ),
- sa.Column(
- "avg_customers_per_month",
- sa.Float(),
- nullable=True,
- comment="Average number of customers per month.",
- ),
- sa.Column(
- "kwh_per_customer", sa.Float(), nullable=True, comment="kwh per customer."
- ),
- sa.Column("revenue_per_kwh", sa.Float(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_transmission_lines_sched422",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "start_point",
- sa.Text(),
- nullable=True,
- comment="The starting point of a transmission line.",
- ),
- sa.Column(
- "end_point",
- sa.Text(),
- nullable=True,
- comment="The end point of a transmission line.",
- ),
- sa.Column(
- "operating_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.",
- ),
- sa.Column(
- "designed_voltage_kv",
- sa.Float(),
- nullable=True,
- comment="Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines",
- ),
- sa.Column(
- "supporting_structure_type",
- sa.Text(),
- nullable=True,
- comment="Supporting structure of the transmission line.",
- ),
- sa.Column(
- "transmission_line_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).",
- ),
- sa.Column(
- "transmission_line_and_structures_length_miles",
- sa.Float(),
- nullable=True,
- comment="Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).",
- ),
- sa.Column(
- "num_transmission_circuits",
- sa.Integer(),
- nullable=True,
- comment="Number of circuits in a transmission line.",
- ),
- sa.Column(
- "conductor_size_and_material",
- sa.Text(),
- nullable=True,
- comment="Size of transmission conductor and material of the transmission line.",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_other",
- sa.Float(),
- nullable=True,
- comment="Other costs associated with the plant (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_utility_plant_summary_sched200",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_type",
- sa.Text(),
- nullable=False,
- comment="Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.",
- ),
- sa.Column(
- "utility_type_other",
- sa.Text(),
- nullable=True,
- comment="Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).",
- ),
- sa.Column(
- "utility_plant_asset_type",
- sa.Text(),
- nullable=False,
- comment="Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.",
- ),
- sa.Column(
- "row_type_xbrl",
- sa.Enum("calculated_value", "reported_value", "correction"),
- nullable=True,
- comment="Indicates whether the value reported in the row is calculated, or uniquely reported within the table.",
- ),
- sa.Column(
- "ending_balance",
- sa.Float(),
- nullable=True,
- comment="Account balance at end of year.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1"],
- ["core_pudl__assn_utilities_ferc1.utility_id_ferc1"],
- name=op.f(
- "fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_utilities_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "report_year",
- "utility_type",
- "utility_plant_asset_type",
- name=op.f("pk_out_ferc1__yearly_utility_plant_summary_sched200"),
- ),
- )
- op.create_table(
- "_out_eia__plants_utilities",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "utility_id_eia",
- name=op.f("pk__out_eia__plants_utilities"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_heat_rate_by_unit",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=False,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "unit_id_pudl",
- name=op.f("pk__out_eia__yearly_heat_rate_by_unit"),
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_hydroelectric_plants_sched406",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_hydroelectric_plants_sched406_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id",
- name=op.f("pk__out_ferc1__yearly_hydroelectric_plants_sched406"),
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_plants_utilities",
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=False,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "utility_id_ferc1",
- "plant_name_ferc1",
- name=op.f("pk__out_ferc1__yearly_plants_utilities"),
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_pumped_storage_plants_sched408",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_pumped_storage_plants_sched408_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id",
- name=op.f("pk__out_ferc1__yearly_pumped_storage_plants_sched408"),
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_small_plants_sched410",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_small_plants_sched410_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_small_plants_sched410_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk__out_ferc1__yearly_small_plants_sched410")
- ),
- )
- op.create_table(
- "_out_ferc1__yearly_steam_plants_sched402",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_annual_addition",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_addition_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_per_kw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per kw.",
- ),
- sa.Column(
- "capex_annual_per_mw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mw_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_annual_per_mwh_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wo_retirement_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD) without retirements.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_fuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD) per megawatt-hour (Mwh).",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_nonfuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Investments in non-fuel production expenses per Mwh.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plants",
- sa.Float(),
- nullable=True,
- comment="Maintenance of electrical plant.",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_steam_plants_sched402_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk__out_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_ferc1__yearly_steam_plants_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk__out_ferc1__yearly_steam_plants_sched402")
- ),
- )
- op.create_table(
- "core_eia860__scd_boilers",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "boiler_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the boiler began or is planned to begin commercial operation.",
- ),
- sa.Column(
- "boiler_status",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying boiler operational status.",
- ),
- sa.Column(
- "boiler_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the boiler.",
- ),
- sa.Column(
- "boiler_type",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
- ),
- sa.Column(
- "firing_type_1",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_2",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_3",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_rate_using_coal_tons_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
- ),
- sa.Column(
- "firing_rate_using_oil_bbls_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
- ),
- sa.Column(
- "firing_rate_using_gas_mcf_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
- ),
- sa.Column(
- "firing_rate_using_other_fuels",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
- ),
- sa.Column(
- "boiler_fuel_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "waste_heat_input_mmbtu_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
- ),
- sa.Column(
- "wet_dry_bottom",
- sa.Text(),
- nullable=True,
- comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
- ),
- sa.Column(
- "fly_ash_reinjection",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is capable of re-injecting fly ash.",
- ),
- sa.Column(
- "hrsg",
- sa.Boolean(),
- nullable=True,
- comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
- ),
- sa.Column(
- "max_steam_flow_1000_lbs_per_hour",
- sa.Float(),
- nullable=True,
- comment="Maximum continuous steam flow at 100 percent load.",
- ),
- sa.Column(
- "turndown_ratio",
- sa.Float(),
- nullable=True,
- comment="The turndown ratio for the boiler.",
- ),
- sa.Column(
- "efficiency_100pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "efficiency_50pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "air_flow_100pct_load_cubic_feet_per_minute",
- sa.Float(),
- nullable=True,
- comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
- ),
- sa.Column(
- "new_source_review",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is subject to New Source Review requirements.",
- ),
- sa.Column(
- "new_source_review_date",
- sa.Date(),
- nullable=True,
- comment="Month of issued New Source Review permit.",
- ),
- sa.Column(
- "new_source_review_permit",
- sa.Text(),
- nullable=True,
- comment="New Source Review permit number.",
- ),
- sa.Column(
- "regulation_particulate",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
- ),
- sa.Column(
- "regulation_so2",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
- ),
- sa.Column(
- "regulation_nox",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
- ),
- sa.Column(
- "standard_particulate_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "standard_so2_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "standard_nox_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "unit_particulate",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "unit_so2",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "unit_nox",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "compliance_year_particulate",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
- ),
- sa.Column(
- "compliance_year_nox",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
- ),
- sa.Column(
- "compliance_year_so2",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "compliance_year_mercury",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_4",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_5",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_6",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of nitrogen oxide control manufacturer.",
- ),
- sa.Column(
- "nox_control_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="Code indicating the nitrogen oxide control burner manufacturer.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_status_code",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control status code.",
- ),
- sa.Column(
- "regulation_mercury",
- sa.Text(),
- nullable=True,
- comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
- ),
- sa.Column(
- "so2_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "standard_so2_percent_scrubbed",
- sa.Float(),
- nullable=True,
- comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_status"],
- ["core_eia__codes_boiler_status.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_type"],
- ["core_eia__codes_boiler_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_1"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_2"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_3"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_4"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_5"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_6"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_status_code"],
- ["core_eia__codes_nox_control_status.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id"],
- [
- "core_eia__entity_boilers.plant_id_eia",
- "core_eia__entity_boilers.boiler_id",
- ],
- name=op.f(
- "fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_mercury"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_nox"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_particulate"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_so2"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_nox"],
- ["core_eia__codes_nox_units.code"],
- name=op.f("fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units"),
- ),
- sa.ForeignKeyConstraint(
- ["unit_particulate"],
- ["core_eia__codes_particulate_units.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_so2"],
- ["core_eia__codes_so2_units.code"],
- name=op.f("fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units"),
- ),
- sa.ForeignKeyConstraint(
- ["wet_dry_bottom"],
- ["core_eia__codes_wet_dry_bottom.code"],
- name=op.f(
- "fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "report_date",
- name=op.f("pk_core_eia860__scd_boilers"),
- ),
- )
- op.create_table(
- "core_eia860__scd_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id"],
- [
- "core_eia__entity_generators.plant_id_eia",
- "core_eia__entity_generators.generator_id",
- ],
- name=op.f(
- "fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_core_eia860__scd_generators"),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_hydroelectric_plants_sched406",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.Column(
- "plant_type",
- sa.Enum(
- "hydro",
- "run_of_river",
- "storage",
- "na_category",
- "run_of_river_with_storage",
- ),
- nullable=True,
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_pumped_storage_plants_sched408",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "project_num",
- sa.Integer(),
- nullable=True,
- comment="FERC Licensed Project Number.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_small_plants_sched410",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_steam_plants_fuel_sched402",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_units",
- sa.Enum(
- "mmbtu",
- "gramsU",
- "kg",
- "mwhth",
- "kgal",
- "bbl",
- "klbs",
- "mcf",
- "gal",
- "mwdth",
- "btu",
- "ton",
- ),
- nullable=True,
- comment="Reported unit of measure for fuel.",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_unit_burned",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_cost_per_unit_delivered",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "core_ferc1__yearly_steam_plants_sched402",
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=True,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "plant_type",
- sa.Enum(
- "geothermal",
- "na_category",
- "wind",
- "photovoltaic",
- "combined_cycle",
- "combustion_turbine",
- "internal_combustion",
- "nuclear",
- "steam",
- "solar_thermal",
- ),
- nullable=True,
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_plants",
- sa.Float(),
- nullable=True,
- comment="Maintenance of electrical plant.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_core_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_fuel_receipts_costs",
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_received_units",
- sa.Float(),
- nullable=True,
- comment="Quanity of fuel received in tons, barrel, or Mcf.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.Column(
- "mercury_content_ppm",
- sa.Float(),
- nullable=True,
- comment="Mercury content in parts per million (ppm) to the nearest 0.001 ppm.",
- ),
- sa.Column("moisture_content_pct", sa.Float(), nullable=True),
- sa.Column("chlorine_content_ppm", sa.Float(), nullable=True),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_combined",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_units",
- sa.Float(),
- nullable=True,
- comment="Consumption for electric generation of the fuel type in physical unit.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "prime_mover_code",
- "energy_source_code",
- name=op.f("pk_out_eia923__yearly_generation_fuel_combined"),
- ),
- )
- op.create_table(
- "out_eia__yearly_plants",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "ash_impoundment",
- sa.Boolean(),
- nullable=True,
- comment="Is there an ash impoundment (e.g. pond, reservoir) at the plant?",
- ),
- sa.Column(
- "ash_impoundment_lined",
- sa.Boolean(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, is the impoundment lined?",
- ),
- sa.Column(
- "ash_impoundment_status",
- sa.Text(),
- nullable=True,
- comment="If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.",
- ),
- sa.Column(
- "balancing_authority_code_eia",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying a balancing authority.",
- ),
- sa.Column(
- "balancing_authority_name_eia",
- sa.Text(),
- nullable=True,
- comment="Name of the balancing authority.",
- ),
- sa.Column(
- "datum",
- sa.Text(),
- nullable=True,
- comment="Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).",
- ),
- sa.Column(
- "energy_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility has energy storage capabilities.",
- ),
- sa.Column(
- "ferc_cogen_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_cogen_status",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility exempt wholesale generator status.",
- ),
- sa.Column(
- "ferc_exempt_wholesale_generator",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility exempt wholesale generator status",
- ),
- sa.Column(
- "ferc_small_power_producer_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_small_power_producer",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.",
- ),
- sa.Column(
- "ferc_qualifying_facility_docket_no",
- sa.Text(),
- nullable=True,
- comment="The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.",
- ),
- sa.Column(
- "grid_voltage_1_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_2_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "grid_voltage_3_kv",
- sa.Float(),
- nullable=True,
- comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities",
- ),
- sa.Column(
- "iso_rto_code",
- sa.Text(),
- nullable=True,
- comment="The code of the plant's ISO or RTO. NA if not reported in that year.",
- ),
- sa.Column(
- "liquefied_natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.",
- ),
- sa.Column(
- "natural_gas_local_distribution_company",
- sa.Text(),
- nullable=True,
- comment="Names of Local Distribution Company (LDC), connected to natural gas burning power plants.",
- ),
- sa.Column(
- "natural_gas_storage",
- sa.Boolean(),
- nullable=True,
- comment="Indicates if the facility have on-site storage of natural gas.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_1",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_2",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "natural_gas_pipeline_name_3",
- sa.Text(),
- nullable=True,
- comment="The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.",
- ),
- sa.Column(
- "nerc_region",
- sa.Enum(
- "BASN",
- "CALN",
- "CALS",
- "DSW",
- "ASCC",
- "ISONE",
- "ERCOT",
- "NORW",
- "NYISO",
- "PJM",
- "ROCK",
- "ECAR",
- "FRCC",
- "HICC",
- "MAAC",
- "MAIN",
- "MAPP",
- "MRO",
- "NPCC",
- "RFC",
- "SERC",
- "SPP",
- "TRE",
- "WECC",
- "WSCC",
- "MISO",
- "ECAR_MAAC",
- "MAPP_WECC",
- "RFC_SERC",
- "SPP_WECC",
- "MRO_WECC",
- "ERCOT_SPP",
- "SPP_TRE",
- "ERCOT_TRE",
- "MISO_TRE",
- "VI",
- "GU",
- "PR",
- "AS",
- "UNK",
- ),
- nullable=True,
- comment="NERC region in which the plant is located",
- ),
- sa.Column(
- "net_metering",
- sa.Boolean(),
- nullable=True,
- comment="Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015",
- ),
- sa.Column(
- "pipeline_notes",
- sa.Text(),
- nullable=True,
- comment="Additional owner or operator of natural gas pipeline.",
- ),
- sa.Column(
- "primary_purpose_id_naics",
- sa.Integer(),
- nullable=True,
- comment="North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant",
- ),
- sa.Column(
- "regulatory_status_code",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the plant is regulated or non-regulated.",
- ),
- sa.Column(
- "reporting_frequency_code",
- sa.Enum("A", "AM", "M"),
- nullable=True,
- comment="Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.",
- ),
- sa.Column(
- "sector_id_eia",
- sa.Integer(),
- nullable=True,
- comment="EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "sector_name_eia",
- sa.Text(),
- nullable=True,
- comment="EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status",
- ),
- sa.Column(
- "service_area",
- sa.Text(),
- nullable=True,
- comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected",
- ),
- sa.Column(
- "transmission_distribution_owner_id",
- sa.Integer(),
- nullable=True,
- comment="EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_name",
- sa.Text(),
- nullable=True,
- comment="Name of the owner of the transmission or distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "transmission_distribution_owner_state",
- sa.Text(),
- nullable=True,
- comment="State location for owner of transmission/distribution system to which the plant is interconnected.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "water_source",
- sa.Text(),
- nullable=True,
- comment="Name of water source associated with the plant.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "balancing_authority_code_eia_consistent_rate",
- sa.Float(),
- nullable=True,
- comment="Percentage consistency of balancing authority code across entity records.",
- ),
- sa.ForeignKeyConstraint(
- ["balancing_authority_code_eia"],
- ["core_eia__codes_balancing_authorities.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "report_date"],
- [
- "core_eia860__scd_plants.plant_id_eia",
- "core_eia860__scd_plants.report_date",
- ],
- name=op.f("fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants"),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["reporting_frequency_code"],
- ["core_eia__codes_reporting_frequencies.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["sector_id_eia"],
- ["core_eia__codes_sector_consolidated.code"],
- name=op.f(
- "fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia", "report_date", name=op.f("pk_out_eia__yearly_plants")
- ),
- )
- op.create_table(
- "out_ferc1__yearly_all_plants",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_annual_addition",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_addition_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_per_kw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per kw.",
- ),
- sa.Column(
- "capex_annual_per_mw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mw_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_annual_per_mwh_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wo_retirement_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD) without retirements.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_nonfuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Investments in non-fuel production expenses per Mwh.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "ferc_license_id",
- sa.Text(),
- nullable=True,
- comment="The FERC license ID of a project.",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk_out_ferc1__yearly_all_plants")
- ),
- )
- op.create_table(
- "out_ferc1__yearly_steam_plants_fuel_by_plant_sched402",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=False,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=False,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=False,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "coal_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Coal cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "coal_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Coal heat content as a percentage of overall fuel heat content (mmBTU).",
- ),
- sa.Column(
- "fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total fuel cost for plant (in $USD).",
- ),
- sa.Column(
- "fuel_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total heat content for plant (in MMBtu).",
- ),
- sa.Column(
- "gas_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Natural gas cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "gas_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Natural gas heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.Column(
- "nuclear_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Nuclear cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "nuclear_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Nuclear heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.Column(
- "oil_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Oil cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "oil_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Oil heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.Column(
- "primary_fuel_by_cost",
- sa.Text(),
- nullable=True,
- comment="Primary fuel for plant as a percentage of cost.",
- ),
- sa.Column(
- "primary_fuel_by_mmbtu",
- sa.Text(),
- nullable=True,
- comment="Primary fuel for plant as a percentage of heat content.",
- ),
- sa.Column(
- "waste_fraction_cost",
- sa.Float(),
- nullable=True,
- comment="Waste-heat cost as a percentage of overall fuel cost.",
- ),
- sa.Column(
- "waste_fraction_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_year",
- "utility_id_ferc1",
- "plant_name_ferc1",
- name=op.f("pk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402"),
- ),
- )
- op.create_table(
- "out_ferc1__yearly_steam_plants_fuel_sched402",
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_total_cost",
- sa.Float(),
- nullable=True,
- comment="Total cost of consumed fuel.",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_unit_burned",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel consumed in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_cost_per_unit_delivered",
- sa.Float(),
- nullable=True,
- comment="Average cost of fuel delivered in the report year per reported fuel unit (USD).",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_units",
- sa.Enum(
- "mmbtu",
- "gramsU",
- "kg",
- "mwhth",
- "kgal",
- "bbl",
- "klbs",
- "mcf",
- "gal",
- "mwdth",
- "btu",
- "ton",
- ),
- nullable=True,
- comment="Reported unit of measure for fuel.",
- ),
- sa.Column(
- "record_id",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_sched402_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id", name=op.f("pk_out_ferc1__yearly_steam_plants_fuel_sched402")
- ),
- )
- op.create_table(
- "_out_eia__yearly_capacity_factor_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_capacity_factor_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_derived_generator_attributes",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_derived_generator_attributes"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_fuel_cost_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_fuel_cost_by_generator"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_generators",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk__out_eia__yearly_generators"),
- ),
- )
- op.create_table(
- "_out_eia__yearly_heat_rate_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk__out_eia__yearly_heat_rate_by_generator"),
- ),
- )
- op.create_table(
- "core_eia860__assn_boiler_cooling",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "cooling_id_eia",
- sa.Text(),
- nullable=False,
- comment="The cooling system identification number reported to EIA.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "boiler_id",
- "cooling_id_eia",
- name=op.f("pk_core_eia860__assn_boiler_cooling"),
- ),
- )
- op.create_table(
- "core_eia860__assn_boiler_generator",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA-assigned unit identification code.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "boiler_generator_assn_type_code",
- sa.Text(),
- nullable=True,
- comment="Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.",
- ),
- sa.Column(
- "steam_plant_type_code",
- sa.Integer(),
- nullable=True,
- comment="Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["boiler_generator_assn_type_code"],
- ["core_eia__codes_boiler_generator_assn_types.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["steam_plant_type_code"],
- ["core_eia__codes_steam_plant_types.code"],
- name=op.f(
- "fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "report_date",
- "generator_id",
- "boiler_id",
- name=op.f("pk_core_eia860__assn_boiler_generator"),
- ),
- )
- op.create_table(
- "core_eia860__assn_boiler_stack_flue",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "stack_id_eia",
- sa.Text(),
- nullable=True,
- comment="The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.",
- ),
- sa.Column(
- "flue_id_eia",
- sa.Text(),
- nullable=True,
- comment="The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.",
- ),
- sa.Column(
- "stack_flue_id_eia",
- sa.Text(),
- nullable=True,
- comment="The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.",
- ),
- sa.Column(
- "stack_flue_id_pudl",
- sa.Text(),
- nullable=False,
- comment="A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "boiler_id",
- "stack_flue_id_pudl",
- name=op.f("pk_core_eia860__assn_boiler_stack_flue"),
- ),
- )
- op.create_table(
- "core_eia860__scd_ownership",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "owner_utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "owner_utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the EIA owner utility.",
- ),
- sa.Column(
- "owner_state",
- sa.Enum(
- "AS",
- "ID",
- "UT",
- "IL",
- "OH",
- "AL",
- "KY",
- "NH",
- "NT",
- "ND",
- "KS",
- "MN",
- "MI",
- "OR",
- "CO",
- "QC",
- "AB",
- "MP",
- "WI",
- "BC",
- "AZ",
- "SD",
- "RI",
- "ME",
- "MO",
- "NC",
- "GA",
- "YT",
- "ON",
- "CA",
- "DE",
- "FL",
- "NE",
- "NM",
- "VA",
- "WA",
- "NJ",
- "DC",
- "MS",
- "GU",
- "WV",
- "CT",
- "AK",
- "WY",
- "TN",
- "TX",
- "PR",
- "SC",
- "MD",
- "IN",
- "NB",
- "NS",
- "LA",
- "OK",
- "SK",
- "VI",
- "NV",
- "MT",
- "IA",
- "NY",
- "PA",
- "MB",
- "MA",
- "VT",
- "AR",
- "PE",
- "NU",
- "HI",
- "NL",
- ),
- nullable=True,
- comment="Two letter ISO-3166 political subdivision code.",
- ),
- sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
- sa.Column(
- "owner_country",
- sa.Enum("USA", "CAN"),
- nullable=True,
- comment="Three letter ISO-3166 country code.",
- ),
- sa.Column(
- "owner_street_address",
- sa.Text(),
- nullable=True,
- comment="Steet address of owner.",
- ),
- sa.Column(
- "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["owner_utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "owner_utility_id_eia",
- name=op.f("pk_core_eia860__scd_ownership"),
- ),
- )
- op.create_table(
- "core_eia860__yearly_boiler_emissions_control_equipment_assn",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "emission_control_id_type",
- sa.Text(),
- nullable=False,
- comment="The type of emissions control id: so2, nox, particulate, or mercury.",
- ),
- sa.Column(
- "emission_control_id_eia",
- sa.Text(),
- nullable=False,
- comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_core_eia860__yearly_boiler_emissions_control_equipment_assn_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "boiler_id",
- "emission_control_id_type",
- "emission_control_id_eia",
- name=op.f("pk_core_eia860__yearly_boiler_emissions_control_equipment_assn"),
- ),
- )
- op.create_table(
- "mega_generators_eia",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_pudl__yearly_assn_eia_ferc1_plant_parts",
- sa.Column(
- "record_id_ferc1",
- sa.Text(),
- nullable=False,
- comment="Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.",
- ),
- sa.Column(
- "record_id_eia",
- sa.Text(),
- nullable=True,
- comment="Identifier for EIA plant parts analysis records.",
- ),
- sa.Column(
- "match_type",
- sa.Text(),
- nullable=True,
- comment="Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.",
- ),
- sa.Column(
- "plant_name_ppe",
- sa.Text(),
- nullable=True,
- comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
- ),
- sa.Column(
- "plant_part",
- sa.Enum(
- "plant_unit",
- "plant_prime_fuel",
- "plant_operating_year",
- "plant_gen",
- "plant_match_ferc1",
- "plant_prime_mover",
- "plant_technology",
- "plant",
- "plant_ferc_acct",
- ),
- nullable=True,
- comment="The part of the plant a record corresponds to.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "true_gran",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
- ),
- sa.Column(
- "appro_part_label",
- sa.Enum(
- "plant_unit",
- "plant_prime_fuel",
- "plant_operating_year",
- "plant_gen",
- "plant_match_ferc1",
- "plant_prime_mover",
- "plant_technology",
- "plant",
- "plant_ferc_acct",
- ),
- nullable=True,
- comment="Plant part of the associated true granularity record.",
- ),
- sa.Column(
- "appro_record_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA record ID of the associated true granularity record.",
- ),
- sa.Column(
- "record_count",
- sa.Integer(),
- nullable=True,
- comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "ownership_dupe",
- sa.Boolean(),
- nullable=True,
- comment="Whether a plant part record has a duplicate record with different ownership status.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column(
- "total_fuel_cost_eia",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu_eia",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "net_generation_mwh_eia",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "capacity_mw_eia",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capacity_factor_eia",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "total_mmbtu_eia",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh_eia",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "fuel_type_code_pudl_eia",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "installation_year_eia",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "plant_part_id_eia",
- sa.Text(),
- nullable=True,
- comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
- ),
- sa.Column(
- "utility_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.",
- ),
- sa.Column(
- "utility_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the responding utility, as it is reported in FERC Form 1. For human readability only.",
- ),
- sa.Column(
- "plant_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.",
- ),
- sa.Column(
- "plant_name_ferc1",
- sa.Text(),
- nullable=True,
- comment="Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.",
- ),
- sa.Column(
- "asset_retirement_cost",
- sa.Float(),
- nullable=True,
- comment="Asset retirement cost (USD).",
- ),
- sa.Column("avg_num_employees", sa.Float(), nullable=True),
- sa.Column(
- "capacity_factor_ferc1",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw_ferc1",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "capex_annual_addition",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_addition_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total`.",
- ),
- sa.Column(
- "capex_annual_per_kw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per kw.",
- ),
- sa.Column(
- "capex_annual_per_mw",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mw_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MW.",
- ),
- sa.Column(
- "capex_annual_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Annual capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_annual_per_mwh_rolling",
- sa.Float(),
- nullable=True,
- comment="Year-to-date capital addition into `capex_total` per MWh.",
- ),
- sa.Column(
- "capex_equipment",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: equipment (USD).",
- ),
- sa.Column(
- "capex_land",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: land and land rights (USD).",
- ),
- sa.Column(
- "capex_per_mw",
- sa.Float(),
- nullable=True,
- comment="Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.",
- ),
- sa.Column(
- "capex_structures",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: structures and improvements (USD).",
- ),
- sa.Column(
- "capex_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD).",
- ),
- sa.Column(
- "capex_wo_retirement_total",
- sa.Float(),
- nullable=True,
- comment="Total cost of plant (USD) without retirements.",
- ),
- sa.Column(
- "construction_type",
- sa.Enum("conventional", "outdoor", "semioutdoor"),
- nullable=True,
- comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.",
- ),
- sa.Column(
- "construction_year_eia",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "construction_year_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "installation_year_ferc1",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh_ferc1",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "not_water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when not limited by condenser water.",
- ),
- sa.Column("opex_allowances", sa.Float(), nullable=True, comment="Allowances."),
- sa.Column(
- "opex_boiler",
- sa.Float(),
- nullable=True,
- comment="Maintenance of boiler (or reactor) plant.",
- ),
- sa.Column(
- "opex_coolants",
- sa.Float(),
- nullable=True,
- comment="Cost of coolants and water (nuclear plants only)",
- ),
- sa.Column(
- "opex_electric",
- sa.Float(),
- nullable=True,
- comment="Production expenses: electric expenses (USD).",
- ),
- sa.Column(
- "opex_engineering",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_fuel",
- sa.Float(),
- nullable=True,
- comment="Production expenses: fuel (USD).",
- ),
- sa.Column(
- "fuel_cost_per_mwh_eia",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh_ferc1",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "opex_misc_power",
- sa.Float(),
- nullable=True,
- comment="Miscellaneous steam (or nuclear) expenses.",
- ),
- sa.Column(
- "opex_misc_steam",
- sa.Float(),
- nullable=True,
- comment="Maintenance of miscellaneous steam (or nuclear) plant.",
- ),
- sa.Column(
- "opex_nonfuel_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Investments in non-fuel production expenses per Mwh.",
- ),
- sa.Column(
- "opex_operations",
- sa.Float(),
- nullable=True,
- comment="Production expenses: operations, supervision, and engineering (USD).",
- ),
- sa.Column(
- "opex_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Total production expenses (USD per MWh generated).",
- ),
- sa.Column(
- "opex_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of electric plant (USD).",
- ),
- sa.Column(
- "opex_production_total",
- sa.Float(),
- nullable=True,
- comment="Total operating expenses.",
- ),
- sa.Column(
- "opex_rents",
- sa.Float(),
- nullable=True,
- comment="Production expenses: rents (USD).",
- ),
- sa.Column("opex_steam", sa.Float(), nullable=True, comment="Steam expenses."),
- sa.Column(
- "opex_steam_other",
- sa.Float(),
- nullable=True,
- comment="Steam from other sources.",
- ),
- sa.Column(
- "opex_structures",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of structures (USD).",
- ),
- sa.Column(
- "opex_total_nonfuel",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "opex_transfer",
- sa.Float(),
- nullable=True,
- comment="Steam transferred (Credit).",
- ),
- sa.Column(
- "peak_demand_mw",
- sa.Float(),
- nullable=True,
- comment="Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.",
- ),
- sa.Column(
- "plant_capability_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability in megawatts.",
- ),
- sa.Column(
- "plant_hours_connected_while_generating",
- sa.Float(),
- nullable=True,
- comment="Hours the plant was connected to load while generating in the report year.",
- ),
- sa.Column("plant_type", sa.Text(), nullable=True),
- sa.Column(
- "water_limited_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Plant capacity in MW when limited by condenser water.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu_ferc1",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column("fuel_type", sa.Text(), nullable=True),
- sa.Column(
- "license_id_ferc1",
- sa.Integer(),
- nullable=True,
- comment="FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.",
- ),
- sa.Column(
- "opex_maintenance",
- sa.Float(),
- nullable=True,
- comment="Production expenses: Maintenance (USD).",
- ),
- sa.Column(
- "opex_total",
- sa.Float(),
- nullable=True,
- comment="Total production expenses, excluding fuel (USD).",
- ),
- sa.Column(
- "capex_facilities",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "capex_roads",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: roads, railroads, and bridges (USD).",
- ),
- sa.Column(
- "net_capacity_adverse_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the least favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "net_capacity_favorable_conditions_mw",
- sa.Float(),
- nullable=True,
- comment="Net plant capability under the most favorable operating conditions, in megawatts.",
- ),
- sa.Column(
- "opex_dams",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of reservoirs, dams, and waterways (USD).",
- ),
- sa.Column(
- "opex_generation_misc",
- sa.Float(),
- nullable=True,
- comment="Production expenses: miscellaneous power generation expenses (USD).",
- ),
- sa.Column(
- "opex_hydraulic",
- sa.Float(),
- nullable=True,
- comment="Production expenses: hydraulic expenses (USD).",
- ),
- sa.Column(
- "opex_misc_plant",
- sa.Float(),
- nullable=True,
- comment="Production expenses: maintenance of miscellaneous hydraulic plant (USD).",
- ),
- sa.Column(
- "opex_water_for_power",
- sa.Float(),
- nullable=True,
- comment="Production expenses: water for power (USD).",
- ),
- sa.Column(
- "ferc_license_id",
- sa.Text(),
- nullable=True,
- comment="The FERC license ID of a project.",
- ),
- sa.Column(
- "capex_equipment_electric",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: accessory electric equipment (USD).",
- ),
- sa.Column(
- "capex_equipment_misc",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: miscellaneous power plant equipment (USD).",
- ),
- sa.Column(
- "capex_wheels_turbines_generators",
- sa.Float(),
- nullable=True,
- comment="Cost of plant: water wheels, turbines, and generators (USD).",
- ),
- sa.Column(
- "energy_used_for_pumping_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy used for pumping, in megawatt-hours.",
- ),
- sa.Column(
- "net_load_mwh",
- sa.Float(),
- nullable=True,
- comment="Net output for load (net generation - energy used for pumping) in megawatt-hours.",
- ),
- sa.Column(
- "opex_production_before_pumping",
- sa.Float(),
- nullable=True,
- comment="Total production expenses before pumping (USD).",
- ),
- sa.Column(
- "opex_pumped_storage",
- sa.Float(),
- nullable=True,
- comment="Production expenses: pumped storage (USD).",
- ),
- sa.Column(
- "opex_pumping",
- sa.Float(),
- nullable=True,
- comment="Production expenses: We are here to PUMP YOU UP! (USD).",
- ),
- sa.Column(
- "total_fuel_cost_ferc1",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu_ferc1",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "fuel_type_code_pudl_ferc1",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh_ferc1",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_ferc1", "plant_name_ferc1"],
- [
- "core_pudl__assn_plants_ferc1.utility_id_ferc1",
- "core_pudl__assn_plants_ferc1.plant_name_ferc1",
- ],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_ferc1_core_pudl__assn_plants_ferc1"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id_ferc1",
- name=op.f("pk_out_pudl__yearly_assn_eia_ferc1_plant_parts"),
- ),
- )
- op.create_table(
- "out_eia860__yearly_ownership",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "owner_utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "owner_utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the EIA owner utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "owner_state",
- sa.Enum(
- "AS",
- "ID",
- "UT",
- "IL",
- "OH",
- "AL",
- "KY",
- "NH",
- "NT",
- "ND",
- "KS",
- "MN",
- "MI",
- "OR",
- "CO",
- "QC",
- "AB",
- "MP",
- "WI",
- "BC",
- "AZ",
- "SD",
- "RI",
- "ME",
- "MO",
- "NC",
- "GA",
- "YT",
- "ON",
- "CA",
- "DE",
- "FL",
- "NE",
- "NM",
- "VA",
- "WA",
- "NJ",
- "DC",
- "MS",
- "GU",
- "WV",
- "CT",
- "AK",
- "WY",
- "TN",
- "TX",
- "PR",
- "SC",
- "MD",
- "IN",
- "NB",
- "NS",
- "LA",
- "OK",
- "SK",
- "VI",
- "NV",
- "MT",
- "IA",
- "NY",
- "PA",
- "MB",
- "MA",
- "VT",
- "AR",
- "PE",
- "NU",
- "HI",
- "NL",
- ),
- nullable=True,
- comment="Two letter ISO-3166 political subdivision code.",
- ),
- sa.Column("owner_city", sa.Text(), nullable=True, comment="City of owner."),
- sa.Column(
- "owner_country",
- sa.Enum("USA", "CAN"),
- nullable=True,
- comment="Three letter ISO-3166 country code.",
- ),
- sa.Column(
- "owner_street_address",
- sa.Text(),
- nullable=True,
- comment="Steet address of owner.",
- ),
- sa.Column(
- "owner_zip_code", sa.Text(), nullable=True, comment="Zip code of owner."
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["owner_utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "owner_utility_id_eia",
- name=op.f("pk_out_eia860__yearly_ownership"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_boiler_fuel",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "fuel_consumed_units",
- sa.Float(),
- nullable=True,
- comment="Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_mmbtu_per_unit",
- sa.Float(),
- nullable=True,
- comment="Heat content of the fuel in millions of Btus per physical unit.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "sulfur_content_pct",
- sa.Float(),
- nullable=True,
- comment="Sulfur content percentage by weight to the nearest 0.01 percent.",
- ),
- sa.Column(
- "ash_content_pct",
- sa.Float(),
- nullable=True,
- comment="Ash content percentage by weight to the nearest 0.1 percent.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "energy_source_code",
- "prime_mover_code",
- "report_date",
- name=op.f("pk_out_eia923__yearly_boiler_fuel"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "generator_id",
- "report_date",
- name=op.f("pk_out_eia923__yearly_generation"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia923__yearly_generation_fuel_by_generator"),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator_energy_source",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- name=op.f(
- "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source"
- ),
- ),
- )
- op.create_table(
- "out_eia923__yearly_generation_fuel_by_generator_energy_source_owner",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=False,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code",
- sa.Text(),
- nullable=False,
- comment="A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=False,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "energy_source_code_num",
- sa.Enum(
- "energy_source_code_1",
- "energy_source_code_2",
- "energy_source_code_3",
- "energy_source_code_4",
- "energy_source_code_5",
- "energy_source_code_6",
- "energy_source_code_7",
- "energy_source_code_8",
- ),
- nullable=True,
- comment="Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "fuel_consumed_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.",
- ),
- sa.Column(
- "fuel_consumed_for_electricity_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total consumption of fuel to produce electricity, in physical unit, year to date.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- "prime_mover_code",
- "energy_source_code",
- "utility_id_eia",
- "ownership_record_type",
- name=op.f(
- "pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner"
- ),
- ),
- )
- op.create_table(
- "out_eia__yearly_boilers",
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "boiler_id", sa.Text(), nullable=False, comment="Alphanumeric boiler ID."
- ),
- sa.Column(
- "air_flow_100pct_load_cubic_feet_per_minute",
- sa.Float(),
- nullable=True,
- comment="Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).",
- ),
- sa.Column(
- "boiler_fuel_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_fuel_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the boiler.",
- ),
- sa.Column(
- "boiler_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of boiler manufacturer.",
- ),
- sa.Column(
- "boiler_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="EIA short code for boiler manufacturer.",
- ),
- sa.Column(
- "boiler_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the boiler began or is planned to begin commercial operation.",
- ),
- sa.Column(
- "boiler_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the boiler.",
- ),
- sa.Column(
- "boiler_status",
- sa.Text(),
- nullable=True,
- comment="EIA short code identifying boiler operational status.",
- ),
- sa.Column(
- "boiler_type",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "compliance_year_mercury",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.",
- ),
- sa.Column(
- "compliance_year_nox",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.",
- ),
- sa.Column(
- "compliance_year_particulate",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.",
- ),
- sa.Column(
- "compliance_year_so2",
- sa.Integer(),
- nullable=True,
- comment="Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "efficiency_100pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "efficiency_50pct_load",
- sa.Float(),
- nullable=True,
- comment="Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.",
- ),
- sa.Column(
- "firing_rate_using_coal_tons_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.",
- ),
- sa.Column(
- "firing_rate_using_gas_mcf_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.",
- ),
- sa.Column(
- "firing_rate_using_oil_bbls_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.",
- ),
- sa.Column(
- "firing_rate_using_other_fuels",
- sa.Float(),
- nullable=True,
- comment="Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.",
- ),
- sa.Column(
- "firing_type_1",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_2",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "firing_type_3",
- sa.Text(),
- nullable=True,
- comment="EIA short code indicating the type of firing used by this boiler.",
- ),
- sa.Column(
- "fly_ash_reinjection",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is capable of re-injecting fly ash.",
- ),
- sa.Column(
- "hrsg",
- sa.Boolean(),
- nullable=True,
- comment="indicates if the boiler is a heat recovery steam generator (HRSG).",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "max_steam_flow_1000_lbs_per_hour",
- sa.Float(),
- nullable=True,
- comment="Maximum continuous steam flow at 100 percent load.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_4",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_5",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_existing_strategy_6",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "mercury_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent mercury regulation.",
- ),
- sa.Column(
- "new_source_review",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the boiler is subject to New Source Review requirements.",
- ),
- sa.Column(
- "new_source_review_date",
- sa.Date(),
- nullable=True,
- comment="Month of issued New Source Review permit.",
- ),
- sa.Column(
- "new_source_review_permit",
- sa.Text(),
- nullable=True,
- comment="New Source Review permit number.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_manufacturer",
- sa.Text(),
- nullable=True,
- comment="Name of nitrogen oxide control manufacturer.",
- ),
- sa.Column(
- "nox_control_manufacturer_code",
- sa.Text(),
- nullable=True,
- comment="Code indicating the nitrogen oxide control burner manufacturer.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent nitrogen oxide regulation.",
- ),
- sa.Column(
- "nox_control_status_code",
- sa.Text(),
- nullable=True,
- comment="Nitrogen oxide control status code.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "particulate_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with particulate matter regulations, strategy for compliance.",
- ),
- sa.Column(
- "regulation_mercury",
- sa.Text(),
- nullable=True,
- comment="Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.",
- ),
- sa.Column(
- "regulation_nox",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.",
- ),
- sa.Column(
- "regulation_particulate",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.",
- ),
- sa.Column(
- "regulation_so2",
- sa.Text(),
- nullable=True,
- comment="EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_existing_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_existing_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Existing strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_out_of_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_planned_caaa_compliance_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_1",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_2",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "so2_control_proposed_strategy_3",
- sa.Text(),
- nullable=True,
- comment="Proposed strategy to comply with the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "standard_nox_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "standard_particulate_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "standard_so2_percent_scrubbed",
- sa.Float(),
- nullable=True,
- comment="The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.",
- ),
- sa.Column(
- "standard_so2_rate",
- sa.Float(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "turndown_ratio",
- sa.Float(),
- nullable=True,
- comment="The turndown ratio for the boiler.",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "unit_nox",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for nitrogen oxide.",
- ),
- sa.Column(
- "unit_particulate",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for particulate matter.",
- ),
- sa.Column(
- "unit_so2",
- sa.Text(),
- nullable=True,
- comment="Numeric value for the unit of measurement specified for sulfur dioxide.",
- ),
- sa.Column(
- "waste_heat_input_mmbtu_per_hour",
- sa.Float(),
- nullable=True,
- comment="Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).",
- ),
- sa.Column(
- "wet_dry_bottom",
- sa.Text(),
- nullable=True,
- comment="Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_fuel_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_status"],
- ["core_eia__codes_boiler_status.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["boiler_type"],
- ["core_eia__codes_boiler_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_1"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_2"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["firing_type_3"],
- ["core_eia__codes_firing_types.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_4"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_5"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_existing_strategy_6"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_1"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_2"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["mercury_control_proposed_strategy_3"],
- ["core_eia__codes_mercury_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_manufacturer_code"],
- ["core_eia__codes_environmental_equipment_manufacturers.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_nox_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["nox_control_status_code"],
- ["core_eia__codes_nox_control_status.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["particulate_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_particulate_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "boiler_id", "report_date"],
- [
- "core_eia860__scd_boilers.plant_id_eia",
- "core_eia860__scd_boilers.boiler_id",
- "core_eia860__scd_boilers.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_mercury"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_nox"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_particulate"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["regulation_so2"],
- ["core_eia__codes_regulations.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_existing_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_out_of_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_1"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_2"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["so2_control_planned_caaa_compliance_strategy_3"],
- ["core_eia__codes_so2_compliance_strategies.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_nox"],
- ["core_eia__codes_nox_units.code"],
- name=op.f("fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units"),
- ),
- sa.ForeignKeyConstraint(
- ["unit_particulate"],
- ["core_eia__codes_particulate_units.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["unit_so2"],
- ["core_eia__codes_so2_units.code"],
- name=op.f("fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units"),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["wet_dry_bottom"],
- ["core_eia__codes_wet_dry_bottom.code"],
- name=op.f(
- "fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "plant_id_eia",
- "boiler_id",
- "report_date",
- name=op.f("pk_out_eia__yearly_boilers"),
- ),
- )
- op.create_table(
- "out_eia__yearly_generators",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=False,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=False,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=False, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "associated_combined_heat_power",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is associated with a combined heat and power system",
- ),
- sa.Column(
- "bga_source",
- sa.Text(),
- nullable=True,
- comment="The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).",
- ),
- sa.Column(
- "bypass_heat_recovery",
- sa.Boolean(),
- nullable=True,
- comment="Can this generator operate while bypassing the heat recovery steam generator?",
- ),
- sa.Column(
- "carbon_capture",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses carbon capture technology.",
- ),
- sa.Column("city", sa.Text(), nullable=True),
- sa.Column(
- "cofire_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator co-fire fuels?.",
- ),
- sa.Column("county", sa.Text(), nullable=True, comment="County name."),
- sa.Column(
- "current_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The most recently updated effective date on which the generator is scheduled to start operation",
- ),
- sa.Column(
- "data_maturity",
- sa.Text(),
- nullable=True,
- comment="Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.",
- ),
- sa.Column(
- "deliver_power_transgrid",
- sa.Boolean(),
- nullable=True,
- comment="Indicate whether the generator can deliver power to the transmission grid.",
- ),
- sa.Column(
- "distributed_generation",
- sa.Boolean(),
- nullable=True,
- comment="Whether the generator is considered distributed generation",
- ),
- sa.Column(
- "duct_burners",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas",
- ),
- sa.Column(
- "energy_source_1_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_1_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 1.",
- ),
- sa.Column(
- "energy_source_2_transport_1",
- sa.Text(),
- nullable=True,
- comment="Primary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_2",
- sa.Text(),
- nullable=True,
- comment="Secondary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_2_transport_3",
- sa.Text(),
- nullable=True,
- comment="Tertiary mode of transport for energy source 2.",
- ),
- sa.Column(
- "energy_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the second most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the third most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the fourth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_5",
- sa.Text(),
- nullable=True,
- comment="The code representing the fifth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_source_code_6",
- sa.Text(),
- nullable=True,
- comment="The code representing the sixth most predominant type of energy that fuels the generator",
- ),
- sa.Column(
- "energy_storage_capacity_mwh",
- sa.Float(),
- nullable=True,
- comment="Energy storage capacity in MWh (e.g. for batteries).",
- ),
- sa.Column(
- "ferc_qualifying_facility",
- sa.Boolean(),
- nullable=True,
- comment="Indicatates whether or not a generator is a qualifying FERC cogeneation facility.",
- ),
- sa.Column(
- "fluidized_bed_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses fluidized bed technology",
- ),
- sa.Column(
- "fuel_type_count",
- sa.Integer(),
- nullable=True,
- comment="A count of how many different simple energy sources there are associated with a generator.",
- ),
- sa.Column(
- "latitude",
- sa.Float(),
- nullable=True,
- comment="Latitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "longitude",
- sa.Float(),
- nullable=True,
- comment="Longitude of the plant's location, in degrees.",
- ),
- sa.Column(
- "minimum_load_mw",
- sa.Float(),
- nullable=True,
- comment="The minimum load at which the generator can operate at continuosuly.",
- ),
- sa.Column(
- "multiple_fuels",
- sa.Boolean(),
- nullable=True,
- comment="Can the generator burn multiple fuels?",
- ),
- sa.Column(
- "nameplate_power_factor",
- sa.Float(),
- nullable=True,
- comment="The nameplate power factor of the generator.",
- ),
- sa.Column(
- "net_capacity_mwdc",
- sa.Float(),
- nullable=True,
- comment="Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.",
- ),
- sa.Column(
- "operating_switch",
- sa.Text(),
- nullable=True,
- comment="Indicates whether the fuel switching generator can switch when operating",
- ),
- sa.Column(
- "operational_status_code",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset.",
- ),
- sa.Column(
- "original_planned_generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="The date the generator was originally scheduled to be operational",
- ),
- sa.Column(
- "other_combustion_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses other combustion technologies",
- ),
- sa.Column(
- "other_modifications_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.",
- ),
- sa.Column(
- "other_planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are there other modifications planned for the generator.",
- ),
- sa.Column(
- "owned_by_non_utility",
- sa.Boolean(),
- nullable=True,
- comment="Whether any part of generator is owned by a nonutilty",
- ),
- sa.Column(
- "ownership_code",
- sa.Text(),
- nullable=True,
- comment="Identifies the ownership for each generator.",
- ),
- sa.Column(
- "planned_derate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective month that the generator is scheduled to enter operation after the derate modification.",
- ),
- sa.Column(
- "planned_energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="New energy source code for the planned repowered generator.",
- ),
- sa.Column(
- "planned_modifications",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.",
- ),
- sa.Column(
- "planned_net_summer_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in summer capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_summer_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in summer capacity expected to be realized from the modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_derate_mw",
- sa.Float(),
- nullable=True,
- comment="Decrease in winter capacity expected to be realized from the derate modification to the equipment.",
- ),
- sa.Column(
- "planned_net_winter_capacity_uprate_mw",
- sa.Float(),
- nullable=True,
- comment="Increase in winter capacity expected to be realized from the uprate modification to the equipment.",
- ),
- sa.Column(
- "planned_new_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The expected new namplate capacity for the generator.",
- ),
- sa.Column(
- "planned_new_prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="New prime mover for the planned repowered generator.",
- ),
- sa.Column(
- "planned_repower_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the repowering is complete.",
- ),
- sa.Column(
- "planned_uprate_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date that the generator is scheduled to enter operation after the uprate modification.",
- ),
- sa.Column(
- "previously_canceled",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator was previously reported as indefinitely postponed or canceled",
- ),
- sa.Column(
- "pulverized_coal_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses pulverized coal technology",
- ),
- sa.Column(
- "reactive_power_output_mvar",
- sa.Float(),
- nullable=True,
- comment="Reactive Power Output (MVAr)",
- ),
- sa.Column(
- "rto_iso_lmp_node_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to identify the price node in RTO/ISO Locational Marginal Price reports",
- ),
- sa.Column(
- "rto_iso_location_wholesale_reporting_id",
- sa.Text(),
- nullable=True,
- comment="The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report",
- ),
- sa.Column(
- "solid_fuel_gasification",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator is part of a solid fuel gasification system",
- ),
- sa.Column(
- "startup_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_2",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_3",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "startup_source_code_4",
- sa.Text(),
- nullable=True,
- comment="The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.",
- ),
- sa.Column(
- "state",
- sa.Text(),
- nullable=True,
- comment="Two letter US state abbreviation.",
- ),
- sa.Column(
- "stoker_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses stoker technology",
- ),
- sa.Column("street_address", sa.Text(), nullable=True),
- sa.Column(
- "subcritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses subcritical technology",
- ),
- sa.Column(
- "summer_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the summer capacity value was an estimate",
- ),
- sa.Column(
- "summer_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net summer capacity.",
- ),
- sa.Column(
- "summer_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated summer capacity (in MWh).",
- ),
- sa.Column(
- "supercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses supercritical technology",
- ),
- sa.Column(
- "switch_oil_gas",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator switch between oil and natural gas.",
- ),
- sa.Column(
- "syncronized_transmission_grid",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether standby generators (SB status) can be synchronized to the grid.",
- ),
- sa.Column(
- "time_cold_shutdown_full_load_code",
- sa.Text(),
- nullable=True,
- comment="The minimum amount of time required to bring the unit to full load from shutdown.",
- ),
- sa.Column(
- "timezone",
- sa.Enum(
- "Africa/Abidjan",
- "Africa/Accra",
- "Africa/Addis_Ababa",
- "Africa/Algiers",
- "Africa/Asmara",
- "Africa/Asmera",
- "Africa/Bamako",
- "Africa/Bangui",
- "Africa/Banjul",
- "Africa/Bissau",
- "Africa/Blantyre",
- "Africa/Brazzaville",
- "Africa/Bujumbura",
- "Africa/Cairo",
- "Africa/Casablanca",
- "Africa/Ceuta",
- "Africa/Conakry",
- "Africa/Dakar",
- "Africa/Dar_es_Salaam",
- "Africa/Djibouti",
- "Africa/Douala",
- "Africa/El_Aaiun",
- "Africa/Freetown",
- "Africa/Gaborone",
- "Africa/Harare",
- "Africa/Johannesburg",
- "Africa/Juba",
- "Africa/Kampala",
- "Africa/Khartoum",
- "Africa/Kigali",
- "Africa/Kinshasa",
- "Africa/Lagos",
- "Africa/Libreville",
- "Africa/Lome",
- "Africa/Luanda",
- "Africa/Lubumbashi",
- "Africa/Lusaka",
- "Africa/Malabo",
- "Africa/Maputo",
- "Africa/Maseru",
- "Africa/Mbabane",
- "Africa/Mogadishu",
- "Africa/Monrovia",
- "Africa/Nairobi",
- "Africa/Ndjamena",
- "Africa/Niamey",
- "Africa/Nouakchott",
- "Africa/Ouagadougou",
- "Africa/Porto-Novo",
- "Africa/Sao_Tome",
- "Africa/Timbuktu",
- "Africa/Tripoli",
- "Africa/Tunis",
- "Africa/Windhoek",
- "America/Adak",
- "America/Anchorage",
- "America/Anguilla",
- "America/Antigua",
- "America/Araguaina",
- "America/Argentina/Buenos_Aires",
- "America/Argentina/Catamarca",
- "America/Argentina/ComodRivadavia",
- "America/Argentina/Cordoba",
- "America/Argentina/Jujuy",
- "America/Argentina/La_Rioja",
- "America/Argentina/Mendoza",
- "America/Argentina/Rio_Gallegos",
- "America/Argentina/Salta",
- "America/Argentina/San_Juan",
- "America/Argentina/San_Luis",
- "America/Argentina/Tucuman",
- "America/Argentina/Ushuaia",
- "America/Aruba",
- "America/Asuncion",
- "America/Atikokan",
- "America/Atka",
- "America/Bahia",
- "America/Bahia_Banderas",
- "America/Barbados",
- "America/Belem",
- "America/Belize",
- "America/Blanc-Sablon",
- "America/Boa_Vista",
- "America/Bogota",
- "America/Boise",
- "America/Buenos_Aires",
- "America/Cambridge_Bay",
- "America/Campo_Grande",
- "America/Cancun",
- "America/Caracas",
- "America/Catamarca",
- "America/Cayenne",
- "America/Cayman",
- "America/Chicago",
- "America/Chihuahua",
- "America/Ciudad_Juarez",
- "America/Coral_Harbour",
- "America/Cordoba",
- "America/Costa_Rica",
- "America/Creston",
- "America/Cuiaba",
- "America/Curacao",
- "America/Danmarkshavn",
- "America/Dawson",
- "America/Dawson_Creek",
- "America/Denver",
- "America/Detroit",
- "America/Dominica",
- "America/Edmonton",
- "America/Eirunepe",
- "America/El_Salvador",
- "America/Ensenada",
- "America/Fort_Nelson",
- "America/Fort_Wayne",
- "America/Fortaleza",
- "America/Glace_Bay",
- "America/Godthab",
- "America/Goose_Bay",
- "America/Grand_Turk",
- "America/Grenada",
- "America/Guadeloupe",
- "America/Guatemala",
- "America/Guayaquil",
- "America/Guyana",
- "America/Halifax",
- "America/Havana",
- "America/Hermosillo",
- "America/Indiana/Indianapolis",
- "America/Indiana/Knox",
- "America/Indiana/Marengo",
- "America/Indiana/Petersburg",
- "America/Indiana/Tell_City",
- "America/Indiana/Vevay",
- "America/Indiana/Vincennes",
- "America/Indiana/Winamac",
- "America/Indianapolis",
- "America/Inuvik",
- "America/Iqaluit",
- "America/Jamaica",
- "America/Jujuy",
- "America/Juneau",
- "America/Kentucky/Louisville",
- "America/Kentucky/Monticello",
- "America/Knox_IN",
- "America/Kralendijk",
- "America/La_Paz",
- "America/Lima",
- "America/Los_Angeles",
- "America/Louisville",
- "America/Lower_Princes",
- "America/Maceio",
- "America/Managua",
- "America/Manaus",
- "America/Marigot",
- "America/Martinique",
- "America/Matamoros",
- "America/Mazatlan",
- "America/Mendoza",
- "America/Menominee",
- "America/Merida",
- "America/Metlakatla",
- "America/Mexico_City",
- "America/Miquelon",
- "America/Moncton",
- "America/Monterrey",
- "America/Montevideo",
- "America/Montreal",
- "America/Montserrat",
- "America/Nassau",
- "America/New_York",
- "America/Nipigon",
- "America/Nome",
- "America/Noronha",
- "America/North_Dakota/Beulah",
- "America/North_Dakota/Center",
- "America/North_Dakota/New_Salem",
- "America/Nuuk",
- "America/Ojinaga",
- "America/Panama",
- "America/Pangnirtung",
- "America/Paramaribo",
- "America/Phoenix",
- "America/Port-au-Prince",
- "America/Port_of_Spain",
- "America/Porto_Acre",
- "America/Porto_Velho",
- "America/Puerto_Rico",
- "America/Punta_Arenas",
- "America/Rainy_River",
- "America/Rankin_Inlet",
- "America/Recife",
- "America/Regina",
- "America/Resolute",
- "America/Rio_Branco",
- "America/Rosario",
- "America/Santa_Isabel",
- "America/Santarem",
- "America/Santiago",
- "America/Santo_Domingo",
- "America/Sao_Paulo",
- "America/Scoresbysund",
- "America/Shiprock",
- "America/Sitka",
- "America/St_Barthelemy",
- "America/St_Johns",
- "America/St_Kitts",
- "America/St_Lucia",
- "America/St_Thomas",
- "America/St_Vincent",
- "America/Swift_Current",
- "America/Tegucigalpa",
- "America/Thule",
- "America/Thunder_Bay",
- "America/Tijuana",
- "America/Toronto",
- "America/Tortola",
- "America/Vancouver",
- "America/Virgin",
- "America/Whitehorse",
- "America/Winnipeg",
- "America/Yakutat",
- "America/Yellowknife",
- "Antarctica/Casey",
- "Antarctica/Davis",
- "Antarctica/DumontDUrville",
- "Antarctica/Macquarie",
- "Antarctica/Mawson",
- "Antarctica/McMurdo",
- "Antarctica/Palmer",
- "Antarctica/Rothera",
- "Antarctica/South_Pole",
- "Antarctica/Syowa",
- "Antarctica/Troll",
- "Antarctica/Vostok",
- "Arctic/Longyearbyen",
- "Asia/Aden",
- "Asia/Almaty",
- "Asia/Amman",
- "Asia/Anadyr",
- "Asia/Aqtau",
- "Asia/Aqtobe",
- "Asia/Ashgabat",
- "Asia/Ashkhabad",
- "Asia/Atyrau",
- "Asia/Baghdad",
- "Asia/Bahrain",
- "Asia/Baku",
- "Asia/Bangkok",
- "Asia/Barnaul",
- "Asia/Beirut",
- "Asia/Bishkek",
- "Asia/Brunei",
- "Asia/Calcutta",
- "Asia/Chita",
- "Asia/Choibalsan",
- "Asia/Chongqing",
- "Asia/Chungking",
- "Asia/Colombo",
- "Asia/Dacca",
- "Asia/Damascus",
- "Asia/Dhaka",
- "Asia/Dili",
- "Asia/Dubai",
- "Asia/Dushanbe",
- "Asia/Famagusta",
- "Asia/Gaza",
- "Asia/Harbin",
- "Asia/Hebron",
- "Asia/Ho_Chi_Minh",
- "Asia/Hong_Kong",
- "Asia/Hovd",
- "Asia/Irkutsk",
- "Asia/Istanbul",
- "Asia/Jakarta",
- "Asia/Jayapura",
- "Asia/Jerusalem",
- "Asia/Kabul",
- "Asia/Kamchatka",
- "Asia/Karachi",
- "Asia/Kashgar",
- "Asia/Kathmandu",
- "Asia/Katmandu",
- "Asia/Khandyga",
- "Asia/Kolkata",
- "Asia/Krasnoyarsk",
- "Asia/Kuala_Lumpur",
- "Asia/Kuching",
- "Asia/Kuwait",
- "Asia/Macao",
- "Asia/Macau",
- "Asia/Magadan",
- "Asia/Makassar",
- "Asia/Manila",
- "Asia/Muscat",
- "Asia/Nicosia",
- "Asia/Novokuznetsk",
- "Asia/Novosibirsk",
- "Asia/Omsk",
- "Asia/Oral",
- "Asia/Phnom_Penh",
- "Asia/Pontianak",
- "Asia/Pyongyang",
- "Asia/Qatar",
- "Asia/Qostanay",
- "Asia/Qyzylorda",
- "Asia/Rangoon",
- "Asia/Riyadh",
- "Asia/Saigon",
- "Asia/Sakhalin",
- "Asia/Samarkand",
- "Asia/Seoul",
- "Asia/Shanghai",
- "Asia/Singapore",
- "Asia/Srednekolymsk",
- "Asia/Taipei",
- "Asia/Tashkent",
- "Asia/Tbilisi",
- "Asia/Tehran",
- "Asia/Tel_Aviv",
- "Asia/Thimbu",
- "Asia/Thimphu",
- "Asia/Tokyo",
- "Asia/Tomsk",
- "Asia/Ujung_Pandang",
- "Asia/Ulaanbaatar",
- "Asia/Ulan_Bator",
- "Asia/Urumqi",
- "Asia/Ust-Nera",
- "Asia/Vientiane",
- "Asia/Vladivostok",
- "Asia/Yakutsk",
- "Asia/Yangon",
- "Asia/Yekaterinburg",
- "Asia/Yerevan",
- "Atlantic/Azores",
- "Atlantic/Bermuda",
- "Atlantic/Canary",
- "Atlantic/Cape_Verde",
- "Atlantic/Faeroe",
- "Atlantic/Faroe",
- "Atlantic/Jan_Mayen",
- "Atlantic/Madeira",
- "Atlantic/Reykjavik",
- "Atlantic/South_Georgia",
- "Atlantic/St_Helena",
- "Atlantic/Stanley",
- "Australia/ACT",
- "Australia/Adelaide",
- "Australia/Brisbane",
- "Australia/Broken_Hill",
- "Australia/Canberra",
- "Australia/Currie",
- "Australia/Darwin",
- "Australia/Eucla",
- "Australia/Hobart",
- "Australia/LHI",
- "Australia/Lindeman",
- "Australia/Lord_Howe",
- "Australia/Melbourne",
- "Australia/NSW",
- "Australia/North",
- "Australia/Perth",
- "Australia/Queensland",
- "Australia/South",
- "Australia/Sydney",
- "Australia/Tasmania",
- "Australia/Victoria",
- "Australia/West",
- "Australia/Yancowinna",
- "Brazil/Acre",
- "Brazil/DeNoronha",
- "Brazil/East",
- "Brazil/West",
- "CET",
- "CST6CDT",
- "Canada/Atlantic",
- "Canada/Central",
- "Canada/Eastern",
- "Canada/Mountain",
- "Canada/Newfoundland",
- "Canada/Pacific",
- "Canada/Saskatchewan",
- "Canada/Yukon",
- "Chile/Continental",
- "Chile/EasterIsland",
- "Cuba",
- "EET",
- "EST",
- "EST5EDT",
- "Egypt",
- "Eire",
- "Etc/GMT",
- "Etc/GMT+0",
- "Etc/GMT+1",
- "Etc/GMT+10",
- "Etc/GMT+11",
- "Etc/GMT+12",
- "Etc/GMT+2",
- "Etc/GMT+3",
- "Etc/GMT+4",
- "Etc/GMT+5",
- "Etc/GMT+6",
- "Etc/GMT+7",
- "Etc/GMT+8",
- "Etc/GMT+9",
- "Etc/GMT-0",
- "Etc/GMT-1",
- "Etc/GMT-10",
- "Etc/GMT-11",
- "Etc/GMT-12",
- "Etc/GMT-13",
- "Etc/GMT-14",
- "Etc/GMT-2",
- "Etc/GMT-3",
- "Etc/GMT-4",
- "Etc/GMT-5",
- "Etc/GMT-6",
- "Etc/GMT-7",
- "Etc/GMT-8",
- "Etc/GMT-9",
- "Etc/GMT0",
- "Etc/Greenwich",
- "Etc/UCT",
- "Etc/UTC",
- "Etc/Universal",
- "Etc/Zulu",
- "Europe/Amsterdam",
- "Europe/Andorra",
- "Europe/Astrakhan",
- "Europe/Athens",
- "Europe/Belfast",
- "Europe/Belgrade",
- "Europe/Berlin",
- "Europe/Bratislava",
- "Europe/Brussels",
- "Europe/Bucharest",
- "Europe/Budapest",
- "Europe/Busingen",
- "Europe/Chisinau",
- "Europe/Copenhagen",
- "Europe/Dublin",
- "Europe/Gibraltar",
- "Europe/Guernsey",
- "Europe/Helsinki",
- "Europe/Isle_of_Man",
- "Europe/Istanbul",
- "Europe/Jersey",
- "Europe/Kaliningrad",
- "Europe/Kiev",
- "Europe/Kirov",
- "Europe/Kyiv",
- "Europe/Lisbon",
- "Europe/Ljubljana",
- "Europe/London",
- "Europe/Luxembourg",
- "Europe/Madrid",
- "Europe/Malta",
- "Europe/Mariehamn",
- "Europe/Minsk",
- "Europe/Monaco",
- "Europe/Moscow",
- "Europe/Nicosia",
- "Europe/Oslo",
- "Europe/Paris",
- "Europe/Podgorica",
- "Europe/Prague",
- "Europe/Riga",
- "Europe/Rome",
- "Europe/Samara",
- "Europe/San_Marino",
- "Europe/Sarajevo",
- "Europe/Saratov",
- "Europe/Simferopol",
- "Europe/Skopje",
- "Europe/Sofia",
- "Europe/Stockholm",
- "Europe/Tallinn",
- "Europe/Tirane",
- "Europe/Tiraspol",
- "Europe/Ulyanovsk",
- "Europe/Uzhgorod",
- "Europe/Vaduz",
- "Europe/Vatican",
- "Europe/Vienna",
- "Europe/Vilnius",
- "Europe/Volgograd",
- "Europe/Warsaw",
- "Europe/Zagreb",
- "Europe/Zaporozhye",
- "Europe/Zurich",
- "GB",
- "GB-Eire",
- "GMT",
- "GMT+0",
- "GMT-0",
- "GMT0",
- "Greenwich",
- "HST",
- "Hongkong",
- "Iceland",
- "Indian/Antananarivo",
- "Indian/Chagos",
- "Indian/Christmas",
- "Indian/Cocos",
- "Indian/Comoro",
- "Indian/Kerguelen",
- "Indian/Mahe",
- "Indian/Maldives",
- "Indian/Mauritius",
- "Indian/Mayotte",
- "Indian/Reunion",
- "Iran",
- "Israel",
- "Jamaica",
- "Japan",
- "Kwajalein",
- "Libya",
- "MET",
- "MST",
- "MST7MDT",
- "Mexico/BajaNorte",
- "Mexico/BajaSur",
- "Mexico/General",
- "NZ",
- "NZ-CHAT",
- "Navajo",
- "PRC",
- "PST8PDT",
- "Pacific/Apia",
- "Pacific/Auckland",
- "Pacific/Bougainville",
- "Pacific/Chatham",
- "Pacific/Chuuk",
- "Pacific/Easter",
- "Pacific/Efate",
- "Pacific/Enderbury",
- "Pacific/Fakaofo",
- "Pacific/Fiji",
- "Pacific/Funafuti",
- "Pacific/Galapagos",
- "Pacific/Gambier",
- "Pacific/Guadalcanal",
- "Pacific/Guam",
- "Pacific/Honolulu",
- "Pacific/Johnston",
- "Pacific/Kanton",
- "Pacific/Kiritimati",
- "Pacific/Kosrae",
- "Pacific/Kwajalein",
- "Pacific/Majuro",
- "Pacific/Marquesas",
- "Pacific/Midway",
- "Pacific/Nauru",
- "Pacific/Niue",
- "Pacific/Norfolk",
- "Pacific/Noumea",
- "Pacific/Pago_Pago",
- "Pacific/Palau",
- "Pacific/Pitcairn",
- "Pacific/Pohnpei",
- "Pacific/Ponape",
- "Pacific/Port_Moresby",
- "Pacific/Rarotonga",
- "Pacific/Saipan",
- "Pacific/Samoa",
- "Pacific/Tahiti",
- "Pacific/Tarawa",
- "Pacific/Tongatapu",
- "Pacific/Truk",
- "Pacific/Wake",
- "Pacific/Wallis",
- "Pacific/Yap",
- "Poland",
- "Portugal",
- "ROC",
- "ROK",
- "Singapore",
- "Turkey",
- "UCT",
- "US/Alaska",
- "US/Aleutian",
- "US/Arizona",
- "US/Central",
- "US/East-Indiana",
- "US/Eastern",
- "US/Hawaii",
- "US/Indiana-Starke",
- "US/Michigan",
- "US/Mountain",
- "US/Pacific",
- "US/Samoa",
- "UTC",
- "Universal",
- "W-SU",
- "WET",
- "Zulu",
- ),
- nullable=True,
- comment="IANA timezone name",
- ),
- sa.Column(
- "topping_bottoming_code",
- sa.Text(),
- nullable=True,
- comment="If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle",
- ),
- sa.Column(
- "turbines_inverters_hydrokinetics",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "turbines_num",
- sa.Integer(),
- nullable=True,
- comment="Number of wind turbines, or hydrokinetic buoys.",
- ),
- sa.Column(
- "ultrasupercritical_tech",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the generator uses ultra-supercritical technology",
- ),
- sa.Column(
- "uprate_derate_completed_date",
- sa.Date(),
- nullable=True,
- comment="The date when the uprate or derate was completed.",
- ),
- sa.Column(
- "uprate_derate_during_year",
- sa.Boolean(),
- nullable=True,
- comment="Was an uprate or derate completed on this generator during the reporting year?",
- ),
- sa.Column(
- "winter_capacity_estimate",
- sa.Boolean(),
- nullable=True,
- comment="Whether the winter capacity value was an estimate",
- ),
- sa.Column(
- "winter_capacity_mw",
- sa.Float(),
- nullable=True,
- comment="The net winter capacity.",
- ),
- sa.Column(
- "winter_estimated_capability_mw",
- sa.Float(),
- nullable=True,
- comment="EIA estimated winter capacity (in MWh).",
- ),
- sa.Column(
- "zip_code", sa.Text(), nullable=True, comment="Five digit US Zip Code."
- ),
- sa.ForeignKeyConstraint(
- ["data_maturity"],
- ["core_pudl__codes_data_maturities.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_1_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_1"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_2"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_2_transport_3"],
- ["core_eia__codes_fuel_transportation_modes.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_5"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_6"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["operational_status_code"],
- ["core_eia__codes_operational_status.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["planned_new_prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_2"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_3"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["startup_source_code_4"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "report_date",
- "plant_id_eia",
- "generator_id",
- name=op.f("pk_out_eia__yearly_generators"),
- ),
- )
- op.create_table(
- "out_eia__yearly_generators_by_ownership",
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "utility_name_eia",
- sa.Text(),
- nullable=True,
- comment="The name of the utility.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "generator_operating_date",
- sa.Date(),
- nullable=True,
- comment="Date the generator began commercial operation.",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "fuel_cost_from_eiaapi",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether the fuel cost was derived from the EIA API.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- )
- op.create_table(
- "out_eia__yearly_plant_parts",
- sa.Column(
- "record_id_eia",
- sa.Text(),
- nullable=False,
- comment="Identifier for EIA plant parts analysis records.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_part",
- sa.Enum(
- "plant_unit",
- "plant_prime_fuel",
- "plant_operating_year",
- "plant_gen",
- "plant_match_ferc1",
- "plant_prime_mover",
- "plant_technology",
- "plant",
- "plant_ferc_acct",
- ),
- nullable=True,
- comment="The part of the plant a record corresponds to.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Text(),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Text(),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "true_gran",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
- ),
- sa.Column(
- "appro_part_label",
- sa.Enum(
- "plant_unit",
- "plant_prime_fuel",
- "plant_operating_year",
- "plant_gen",
- "plant_match_ferc1",
- "plant_prime_mover",
- "plant_technology",
- "plant",
- "plant_ferc_acct",
- ),
- nullable=True,
- comment="Plant part of the associated true granularity record.",
- ),
- sa.Column(
- "appro_record_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA record ID of the associated true granularity record.",
- ),
- sa.Column(
- "ferc1_generator_agg_id",
- sa.Integer(),
- nullable=True,
- comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column(
- "ownership_dupe",
- sa.Boolean(),
- nullable=True,
- comment="Whether a plant part record has a duplicate record with different ownership status.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_name_ppe",
- sa.Text(),
- nullable=True,
- comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
- ),
- sa.Column(
- "plant_part_id_eia",
- sa.Text(),
- nullable=True,
- comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
- ),
- sa.Column(
- "record_count",
- sa.Integer(),
- nullable=True,
- comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_report_year",
- sa.Text(),
- nullable=True,
- comment="PUDL plant ID and report year of the record.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint(
- "record_id_eia", name=op.f("pk_out_eia__yearly_plant_parts")
- ),
- )
- op.create_table(
- "plant_parts_eia",
- sa.Column(
- "record_id_eia",
- sa.Text(),
- nullable=False,
- comment="Identifier for EIA plant parts analysis records.",
- ),
- sa.Column(
- "plant_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.",
- ),
- sa.Column("report_date", sa.Date(), nullable=True, comment="Date reported."),
- sa.Column(
- "plant_part",
- sa.Enum(
- "plant_unit",
- "plant_prime_fuel",
- "plant_operating_year",
- "plant_gen",
- "plant_match_ferc1",
- "plant_prime_mover",
- "plant_technology",
- "plant",
- "plant_ferc_acct",
- ),
- nullable=True,
- comment="The part of the plant a record corresponds to.",
- ),
- sa.Column(
- "generator_id",
- sa.Text(),
- nullable=True,
- comment="Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!",
- ),
- sa.Column(
- "unit_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.",
- ),
- sa.Column(
- "prime_mover_code",
- sa.Text(),
- nullable=True,
- comment="Code for the type of prime mover (e.g. CT, CG)",
- ),
- sa.Column(
- "energy_source_code_1",
- sa.Enum(
- "SG",
- "WAT",
- "GEO",
- "NG",
- "PUR",
- "WC",
- "JF",
- "MSB",
- "AB",
- "SUB",
- "WH",
- "LFG",
- "ANT",
- "SGC",
- "PC",
- "SLW",
- "RC",
- "OBL",
- "KER",
- "DFO",
- "PG",
- "RFO",
- "SC",
- "TDF",
- "MSN",
- "LIG",
- "OBG",
- "MWH",
- "OTH",
- "MSW",
- "WND",
- "SGP",
- "NUC",
- "BFG",
- "WDL",
- "BLQ",
- "SUN",
- "BIT",
- "OBS",
- "WDS",
- "OG",
- "WO",
- ),
- nullable=True,
- comment="The code representing the most predominant type of energy that fuels the generator.",
- ),
- sa.Column(
- "technology_description",
- sa.Enum(
- "Petroleum Liquids",
- "Nuclear",
- "Municipal Solid Waste",
- "Landfill Gas",
- "Other Gases",
- "All Other",
- "Geothermal",
- "Natural Gas Internal Combustion Engine",
- "Conventional Steam Coal",
- "Coal Integrated Gasification Combined Cycle",
- "Solar Thermal without Energy Storage",
- "Onshore Wind Turbine",
- "Natural Gas with Compressed Air Storage",
- "Solar Thermal with Energy Storage",
- "Natural Gas Fired Combined Cycle",
- "Other Waste Biomass",
- "Conventional Hydroelectric",
- "Hydroelectric Pumped Storage",
- "Offshore Wind Turbine",
- "Batteries",
- "Wood/Wood Waste Biomass",
- "Natural Gas Fired Combustion Turbine",
- "Petroleum Coke",
- "Flywheels",
- "Hydrokinetic",
- "Solar Photovoltaic",
- "Natural Gas Steam Turbine",
- "Other Natural Gas",
- ),
- nullable=True,
- comment="High level description of the technology used by the generator to produce electricity.",
- ),
- sa.Column(
- "ferc_acct_name",
- sa.Enum("Hydraulic", "Nuclear", "Steam", "Other"),
- nullable=True,
- comment="Name of FERC account, derived from technology description and prime mover code.",
- ),
- sa.Column(
- "utility_id_eia",
- sa.Integer(),
- nullable=True,
- comment="The EIA Utility Identification number.",
- ),
- sa.Column(
- "true_gran",
- sa.Boolean(),
- nullable=True,
- comment="Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.",
- ),
- sa.Column(
- "appro_part_label",
- sa.Enum(
- "plant_unit",
- "plant_prime_fuel",
- "plant_operating_year",
- "plant_gen",
- "plant_match_ferc1",
- "plant_prime_mover",
- "plant_technology",
- "plant",
- "plant_ferc_acct",
- ),
- nullable=True,
- comment="Plant part of the associated true granularity record.",
- ),
- sa.Column(
- "appro_record_id_eia",
- sa.Text(),
- nullable=True,
- comment="EIA record ID of the associated true granularity record.",
- ),
- sa.Column(
- "ferc1_generator_agg_id",
- sa.Integer(),
- nullable=True,
- comment="ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.",
- ),
- sa.Column(
- "capacity_eoy_mw",
- sa.Float(),
- nullable=True,
- comment="Total end of year installed (nameplate) capacity for a plant part, in megawatts.",
- ),
- sa.Column(
- "capacity_factor",
- sa.Float(),
- nullable=True,
- comment="Fraction of potential generation that was actually reported for a plant part.",
- ),
- sa.Column(
- "capacity_mw",
- sa.Float(),
- nullable=True,
- comment="Total installed (nameplate) capacity, in megawatts.",
- ),
- sa.Column(
- "construction_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's oldest still operational unit was built.",
- ),
- sa.Column(
- "fraction_owned",
- sa.Float(),
- nullable=True,
- comment="Proportion of generator ownership attributable to this utility.",
- ),
- sa.Column(
- "fuel_cost_per_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Average fuel cost per mmBTU of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_cost_per_mwh",
- sa.Float(),
- nullable=True,
- comment="Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.",
- ),
- sa.Column(
- "fuel_type_code_pudl",
- sa.Enum(
- "coal",
- "gas",
- "hydro",
- "nuclear",
- "oil",
- "other",
- "solar",
- "waste",
- "wind",
- ),
- nullable=True,
- comment="Simplified fuel type code used in PUDL",
- ),
- sa.Column(
- "generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Date of the scheduled or effected retirement of the generator.",
- ),
- sa.Column(
- "heat_rate_mmbtu_mwh",
- sa.Float(),
- nullable=True,
- comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
- ),
- sa.Column(
- "installation_year",
- sa.Integer(),
- nullable=True,
- comment="Year the plant's most recently built unit was installed.",
- ),
- sa.Column(
- "net_generation_mwh",
- sa.Float(),
- nullable=True,
- comment="Net electricity generation for the specified period in megawatt-hours (MWh).",
- ),
- sa.Column(
- "generator_operating_year",
- sa.Integer(),
- nullable=True,
- comment="Year a generator went into service.",
- ),
- sa.Column(
- "operational_status",
- sa.Text(),
- nullable=True,
- comment="The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.",
- ),
- sa.Column(
- "operational_status_pudl",
- sa.Enum("operating", "retired", "proposed"),
- nullable=True,
- comment="The operating status of the asset using PUDL categories.",
- ),
- sa.Column(
- "ownership_record_type",
- sa.Enum("owned", "total"),
- nullable=True,
- comment="Whether each generator record is for one owner or represents a total of all ownerships.",
- ),
- sa.Column(
- "ownership_dupe",
- sa.Boolean(),
- nullable=True,
- comment="Whether a plant part record has a duplicate record with different ownership status.",
- ),
- sa.Column(
- "planned_generator_retirement_date",
- sa.Date(),
- nullable=True,
- comment="Planned effective date of the scheduled retirement of the generator.",
- ),
- sa.Column(
- "plant_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL plant ID. May not be constant over time.",
- ),
- sa.Column("plant_name_eia", sa.Text(), nullable=True, comment="Plant name."),
- sa.Column(
- "plant_name_ppe",
- sa.Text(),
- nullable=True,
- comment="Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.",
- ),
- sa.Column(
- "plant_part_id_eia",
- sa.Text(),
- nullable=True,
- comment="Contains EIA plant ID, plant part, ownership, and EIA utility id",
- ),
- sa.Column(
- "record_count",
- sa.Integer(),
- nullable=True,
- comment="Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.",
- ),
- sa.Column(
- "total_fuel_cost",
- sa.Float(),
- nullable=True,
- comment="Total annual reported fuel costs for the plant part. Includes costs from all fuels.",
- ),
- sa.Column(
- "total_mmbtu",
- sa.Float(),
- nullable=True,
- comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
- ),
- sa.Column(
- "utility_id_pudl",
- sa.Integer(),
- nullable=True,
- comment="A manually assigned PUDL utility ID. May not be stable over time.",
- ),
- sa.Column(
- "report_year",
- sa.Integer(),
- nullable=True,
- comment="Four-digit year in which the data was reported.",
- ),
- sa.Column(
- "plant_id_report_year",
- sa.Text(),
- nullable=True,
- comment="PUDL plant ID and report year of the record.",
- ),
- sa.ForeignKeyConstraint(
- ["energy_source_code_1"],
- ["core_eia__codes_energy_sources.code"],
- name=op.f(
- "fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_eia", "generator_id", "report_date"],
- [
- "core_eia860__scd_generators.plant_id_eia",
- "core_eia860__scd_generators.generator_id",
- "core_eia860__scd_generators.report_date",
- ],
- name=op.f("fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators"),
- ),
- sa.ForeignKeyConstraint(
- ["plant_id_pudl"],
- ["core_pudl__entity_plants_pudl.plant_id_pudl"],
- name=op.f("fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl"),
- ),
- sa.ForeignKeyConstraint(
- ["prime_mover_code"],
- ["core_eia__codes_prime_movers.code"],
- name=op.f(
- "fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers"
- ),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_eia", "report_date"],
- [
- "core_eia860__scd_utilities.utility_id_eia",
- "core_eia860__scd_utilities.report_date",
- ],
- name=op.f("fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities"),
- ),
- sa.ForeignKeyConstraint(
- ["utility_id_pudl"],
- ["core_pudl__entity_utilities_pudl.utility_id_pudl"],
- name=op.f(
- "fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl"
- ),
- ),
- sa.PrimaryKeyConstraint("record_id_eia", name=op.f("pk_plant_parts_eia")),
- )
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- op.drop_table("plant_parts_eia")
- op.drop_table("out_eia__yearly_plant_parts")
- op.drop_table("out_eia__yearly_generators_by_ownership")
- op.drop_table("out_eia__yearly_generators")
- op.drop_table("out_eia__yearly_boilers")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source_owner")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator_energy_source")
- op.drop_table("out_eia923__yearly_generation_fuel_by_generator")
- op.drop_table("out_eia923__yearly_generation")
- op.drop_table("out_eia923__yearly_boiler_fuel")
- op.drop_table("out_eia860__yearly_ownership")
- op.drop_table("out_pudl__yearly_assn_eia_ferc1_plant_parts")
- op.drop_table("mega_generators_eia")
- op.drop_table("core_eia860__yearly_boiler_emissions_control_equipment_assn")
- op.drop_table("core_eia860__scd_ownership")
- op.drop_table("core_eia860__assn_boiler_stack_flue")
- op.drop_table("core_eia860__assn_boiler_generator")
- op.drop_table("core_eia860__assn_boiler_cooling")
- op.drop_table("_out_eia__yearly_heat_rate_by_generator")
- op.drop_table("_out_eia__yearly_generators")
- op.drop_table("_out_eia__yearly_fuel_cost_by_generator")
- op.drop_table("_out_eia__yearly_derived_generator_attributes")
- op.drop_table("_out_eia__yearly_capacity_factor_by_generator")
- op.drop_table("out_ferc1__yearly_steam_plants_fuel_sched402")
- op.drop_table("out_ferc1__yearly_steam_plants_fuel_by_plant_sched402")
- op.drop_table("out_ferc1__yearly_all_plants")
- op.drop_table("out_eia__yearly_plants")
- op.drop_table("out_eia923__yearly_generation_fuel_combined")
- op.drop_table("out_eia923__yearly_fuel_receipts_costs")
- op.drop_table("core_ferc1__yearly_steam_plants_sched402")
- op.drop_table("core_ferc1__yearly_steam_plants_fuel_sched402")
- op.drop_table("core_ferc1__yearly_small_plants_sched410")
- op.drop_table("core_ferc1__yearly_pumped_storage_plants_sched408")
- op.drop_table("core_ferc1__yearly_hydroelectric_plants_sched406")
- op.drop_table("core_eia860__scd_generators")
- op.drop_table("core_eia860__scd_boilers")
- op.drop_table("_out_ferc1__yearly_steam_plants_sched402")
- op.drop_table("_out_ferc1__yearly_small_plants_sched410")
- op.drop_table("_out_ferc1__yearly_pumped_storage_plants_sched408")
- op.drop_table("_out_ferc1__yearly_plants_utilities")
- op.drop_table("_out_ferc1__yearly_hydroelectric_plants_sched406")
- op.drop_table("_out_eia__yearly_heat_rate_by_unit")
- op.drop_table("_out_eia__plants_utilities")
- op.drop_table("out_ferc1__yearly_utility_plant_summary_sched200")
- op.drop_table("out_ferc1__yearly_transmission_lines_sched422")
- op.drop_table("out_ferc1__yearly_sales_by_rate_schedules_sched304")
- op.drop_table("out_ferc1__yearly_retained_earnings_sched118")
- op.drop_table("out_ferc1__yearly_purchased_power_and_exchanges_sched326")
- op.drop_table("out_ferc1__yearly_plant_in_service_sched204")
- op.drop_table("out_ferc1__yearly_other_regulatory_liabilities_sched278")
- op.drop_table("out_ferc1__yearly_operating_revenues_sched300")
- op.drop_table("out_ferc1__yearly_operating_expenses_sched320")
- op.drop_table("out_ferc1__yearly_income_statements_sched114")
- op.drop_table("out_ferc1__yearly_energy_sources_sched401")
- op.drop_table("out_ferc1__yearly_energy_dispositions_sched401")
- op.drop_table("out_ferc1__yearly_depreciation_summary_sched336")
- op.drop_table("out_ferc1__yearly_depreciation_changes_sched219")
- op.drop_table("out_ferc1__yearly_depreciation_by_function_sched219")
- op.drop_table("out_ferc1__yearly_cash_flows_sched120")
- op.drop_table("out_ferc1__yearly_balance_sheet_liabilities_sched110")
- op.drop_table("out_ferc1__yearly_balance_sheet_assets_sched110")
- op.drop_table("out_eia__yearly_utilities")
- op.drop_table("out_eia__monthly_generators")
- op.drop_table("out_eia923__monthly_generation_fuel_by_generator_energy_source")
- op.drop_table("out_eia923__monthly_generation_fuel_by_generator")
- op.drop_table("out_eia923__monthly_generation")
- op.drop_table("out_eia923__monthly_boiler_fuel")
- op.drop_table("out_eia923__generation")
- op.drop_table("out_eia923__boiler_fuel")
- op.drop_table("core_pudl__assn_utilities_ferc1_xbrl")
- op.drop_table("core_pudl__assn_utilities_ferc1_dbf")
- op.drop_table("core_pudl__assn_plants_ferc1")
- op.drop_table("core_ferc1__yearly_utility_plant_summary_sched200")
- op.drop_table("core_ferc1__yearly_transmission_lines_sched422")
- op.drop_table("core_ferc1__yearly_sales_by_rate_schedules_sched304")
- op.drop_table("core_ferc1__yearly_retained_earnings_sched118")
- op.drop_table("core_ferc1__yearly_purchased_power_and_exchanges_sched326")
- op.drop_table("core_ferc1__yearly_plant_in_service_sched204")
- op.drop_table("core_ferc1__yearly_other_regulatory_liabilities_sched278")
- op.drop_table("core_ferc1__yearly_operating_revenues_sched300")
- op.drop_table("core_ferc1__yearly_operating_expenses_sched320")
- op.drop_table("core_ferc1__yearly_income_statements_sched114")
- op.drop_table("core_ferc1__yearly_energy_sources_sched401")
- op.drop_table("core_ferc1__yearly_energy_dispositions_sched401")
- op.drop_table("core_ferc1__yearly_depreciation_summary_sched336")
- op.drop_table("core_ferc1__yearly_depreciation_changes_sched219")
- op.drop_table("core_ferc1__yearly_depreciation_by_function_sched219")
- op.drop_table("core_ferc1__yearly_cash_flows_sched120")
- op.drop_table("core_ferc1__yearly_balance_sheet_liabilities_sched110")
- op.drop_table("core_ferc1__yearly_balance_sheet_assets_sched110")
- op.drop_table("core_epa__assn_epacamd_eia")
- op.drop_table("core_eia923__monthly_generation")
- op.drop_table("core_eia923__monthly_fuel_receipts_costs")
- op.drop_table("core_eia923__monthly_boiler_fuel")
- op.drop_table("core_eia860__scd_plants")
- op.drop_table("_out_eia__monthly_heat_rate_by_generator")
- op.drop_table("_out_eia__monthly_fuel_cost_by_generator")
- op.drop_table("_out_eia__monthly_derived_generator_attributes")
- op.drop_table("_out_eia__monthly_capacity_factor_by_generator")
- op.drop_table("out_ferc714__summarized_demand")
- op.drop_table("out_ferc714__respondents_with_fips")
- op.drop_table("out_eia923__monthly_generation_fuel_combined")
- op.drop_table("out_eia923__monthly_fuel_receipts_costs")
- op.drop_table("out_eia923__generation_fuel_combined")
- op.drop_table("out_eia923__fuel_receipts_costs")
- op.drop_table("out_eia860__yearly_emissions_control_equipment")
- op.drop_table("core_pudl__assn_utilities_plants")
- op.drop_table("core_pudl__assn_utilities_ferc1")
- op.drop_table("core_pudl__assn_utilities_eia")
- op.drop_table("core_pudl__assn_plants_eia")
- op.drop_table("core_ferc714__hourly_demand_pa")
- op.drop_table("core_eia__entity_generators")
- op.drop_table("core_eia__entity_boilers")
- op.drop_table("core_eia923__monthly_generation_fuel_nuclear")
- op.drop_table("core_eia923__monthly_generation_fuel")
- op.drop_table("core_eia923__entity_coalmine")
- op.drop_table("core_eia861__yearly_utility_data_rto")
- op.drop_table("core_eia861__yearly_utility_data_nerc")
- op.drop_table("core_eia861__yearly_utility_data_misc")
- op.drop_table("core_eia861__yearly_service_territory")
- op.drop_table("core_eia861__yearly_sales")
- op.drop_table("core_eia861__yearly_reliability")
- op.drop_table("core_eia861__yearly_operational_data_revenue")
- op.drop_table("core_eia861__yearly_operational_data_misc")
- op.drop_table("core_eia861__yearly_non_net_metering_misc")
- op.drop_table("core_eia861__yearly_non_net_metering_customer_fuel_class")
- op.drop_table("core_eia861__yearly_net_metering_misc")
- op.drop_table("core_eia861__yearly_net_metering_customer_fuel_class")
- op.drop_table("core_eia861__yearly_mergers")
- op.drop_table("core_eia861__yearly_green_pricing")
- op.drop_table("core_eia861__yearly_energy_efficiency")
- op.drop_table("core_eia861__yearly_dynamic_pricing")
- op.drop_table("core_eia861__yearly_distribution_systems")
- op.drop_table("core_eia861__yearly_distributed_generation_tech")
- op.drop_table("core_eia861__yearly_distributed_generation_misc")
- op.drop_table("core_eia861__yearly_distributed_generation_fuel")
- op.drop_table("core_eia861__yearly_demand_side_management_sales")
- op.drop_table("core_eia861__yearly_demand_side_management_misc")
- op.drop_table("core_eia861__yearly_demand_side_management_ee_dr")
- op.drop_table("core_eia861__yearly_demand_response_water_heater")
- op.drop_table("core_eia861__yearly_demand_response")
- op.drop_table("core_eia861__yearly_advanced_metering_infrastructure")
- op.drop_table("core_eia860__scd_utilities")
- op.drop_table("core_eia860__scd_emissions_control_equipment")
- op.drop_table("_out_eia__monthly_heat_rate_by_unit")
- op.drop_table("out_ferc714__hourly_predicted_state_demand")
- op.drop_table("out_eia861__compiled_geometry_utilities")
- op.drop_table("out_eia861__compiled_geometry_balancing_authorities")
- op.drop_table("core_pudl__entity_utilities_pudl")
- op.drop_table("core_pudl__entity_plants_pudl")
- op.drop_table("core_pudl__codes_subdivisions")
- op.drop_table("core_pudl__codes_datasources")
- op.drop_table("core_pudl__codes_data_maturities")
- op.drop_table("core_ferc__codes_accounts")
- op.drop_table("core_ferc714__respondent_id")
- op.drop_table("core_ferc1__codes_power_purchase_types")
- op.drop_table("core_epa__assn_epacamd_eia_subplant_ids")
- op.drop_table("core_eia__yearly_fuel_receipts_costs_aggs")
- op.drop_table("core_eia__entity_utilities")
- op.drop_table("core_eia__entity_plants")
- op.drop_table("core_eia__codes_wet_dry_bottom")
- op.drop_table("core_eia__codes_steam_plant_types")
- op.drop_table("core_eia__codes_so2_units")
- op.drop_table("core_eia__codes_so2_compliance_strategies")
- op.drop_table("core_eia__codes_sector_consolidated")
- op.drop_table("core_eia__codes_reporting_frequencies")
- op.drop_table("core_eia__codes_regulations")
- op.drop_table("core_eia__codes_prime_movers")
- op.drop_table("core_eia__codes_particulate_units")
- op.drop_table("core_eia__codes_particulate_compliance_strategies")
- op.drop_table("core_eia__codes_operational_status")
- op.drop_table("core_eia__codes_nox_units")
- op.drop_table("core_eia__codes_nox_control_status")
- op.drop_table("core_eia__codes_nox_compliance_strategies")
- op.drop_table("core_eia__codes_momentary_interruptions")
- op.drop_table("core_eia__codes_mercury_compliance_strategies")
- op.drop_table("core_eia__codes_fuel_types_aer")
- op.drop_table("core_eia__codes_fuel_transportation_modes")
- op.drop_table("core_eia__codes_firing_types")
- op.drop_table("core_eia__codes_environmental_equipment_manufacturers")
- op.drop_table("core_eia__codes_energy_sources")
- op.drop_table("core_eia__codes_emission_control_equipment_types")
- op.drop_table("core_eia__codes_contract_types")
- op.drop_table("core_eia__codes_coalmine_types")
- op.drop_table("core_eia__codes_boiler_types")
- op.drop_table("core_eia__codes_boiler_status")
- op.drop_table("core_eia__codes_boiler_generator_assn_types")
- op.drop_table("core_eia__codes_balancing_authorities")
- op.drop_table("core_eia__codes_averaging_periods")
- op.drop_table("core_eia861__yearly_balancing_authority")
- op.drop_table("core_eia861__assn_utility")
- op.drop_table("core_eia861__assn_balancing_authority")
- # ### end Alembic commands ###
diff --git a/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py b/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py
deleted file mode 100644
index 61acfd18cf..0000000000
--- a/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""demand_hourly_pa_ferc714.report_date can't be null
-
-Revision ID: 3313ca078f4e
-Revises: 1ceb9897fd34
-Create Date: 2023-11-02 15:48:50.477585
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '3313ca078f4e'
-down_revision = '1ceb9897fd34'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('demand_hourly_pa_ferc714', schema=None) as batch_op:
- batch_op.alter_column('report_date',
- existing_type=sa.DATE(),
- nullable=False)
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('demand_hourly_pa_ferc714', schema=None) as batch_op:
- batch_op.alter_column('report_date',
- existing_type=sa.DATE(),
- nullable=True)
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/9edc4a11c809_remake_all_schemas_a_make_assn_asset_.py b/migrations/versions/9edc4a11c809_remake_all_schemas_a_make_assn_asset_.py
new file mode 100644
index 0000000000..7660b2f865
--- /dev/null
+++ b/migrations/versions/9edc4a11c809_remake_all_schemas_a_make_assn_asset_.py
@@ -0,0 +1,4254 @@
+"""Remake all schemas a make assn asset names more consistent
+
+Revision ID: 9edc4a11c809
+Revises:
+Create Date: 2023-11-09 12:08:13.941474
+
+"""
+import sqlalchemy as sa
+from alembic import op
+from sqlalchemy.dialects import sqlite
+
+# revision identifiers, used by Alembic.
+revision = '9edc4a11c809'
+down_revision = None
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.create_table('core_eia861__assn_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_balancing_authority'))
+ )
+ op.create_table('core_eia861__assn_utility',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'state', name=op.f('pk_core_eia861__assn_utility'))
+ )
+ op.create_table('core_eia861__yearly_balancing_authority',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.PrimaryKeyConstraint('report_date', 'balancing_authority_id_eia', name=op.f('pk_core_eia861__yearly_balancing_authority'))
+ )
+ op.create_table('core_eia__codes_averaging_periods',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_averaging_periods'))
+ )
+ op.create_table('core_eia__codes_balancing_authorities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_balancing_authorities'))
+ )
+ op.create_table('core_eia__codes_boiler_generator_assn_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_generator_assn_types'))
+ )
+ op.create_table('core_eia__codes_boiler_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_status'))
+ )
+ op.create_table('core_eia__codes_boiler_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_boiler_types'))
+ )
+ op.create_table('core_eia__codes_coalmine_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_coalmine_types'))
+ )
+ op.create_table('core_eia__codes_contract_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_contract_types'))
+ )
+ op.create_table('core_eia__codes_emission_control_equipment_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_emission_control_equipment_types'))
+ )
+ op.create_table('core_eia__codes_energy_sources',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('fuel_units', sa.Enum('barrels', 'mcf', 'mwh', 'short_tons'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('min_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Minimum heat content per physical unit of fuel in MMBtu.'),
+ sa.Column('max_fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Maximum heat content per physical unit of fuel in MMBtu.'),
+ sa.Column('fuel_group_eia', sa.Enum('fossil', 'other', 'renewable'), nullable=True, comment='High level fuel group defined in the 2021-2023 EIA Form 860 instructions, Table 28.'),
+ sa.Column('fuel_derived_from', sa.Enum('biomass', 'coal', 'gas', 'other', 'petroleum'), nullable=True, comment='Original fuel from which this refined fuel was derived.'),
+ sa.Column('fuel_phase', sa.Enum('gas', 'liquid', 'solid'), nullable=True, comment='Physical phase of matter of the fuel.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_energy_sources'))
+ )
+ op.create_table('core_eia__codes_environmental_equipment_manufacturers',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_environmental_equipment_manufacturers'))
+ )
+ op.create_table('core_eia__codes_firing_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_firing_types'))
+ )
+ op.create_table('core_eia__codes_fuel_transportation_modes',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia__codes_fuel_types_aer',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_fuel_types_aer'))
+ )
+ op.create_table('core_eia__codes_mercury_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_mercury_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_momentary_interruptions',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia__codes_nox_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_nox_control_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_control_status'))
+ )
+ op.create_table('core_eia__codes_nox_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_nox_units'))
+ )
+ op.create_table('core_eia__codes_operational_status',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_operational_status'))
+ )
+ op.create_table('core_eia__codes_particulate_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_particulate_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_particulate_units'))
+ )
+ op.create_table('core_eia__codes_prime_movers',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_prime_movers'))
+ )
+ op.create_table('core_eia__codes_regulations',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_regulations'))
+ )
+ op.create_table('core_eia__codes_reporting_frequencies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_reporting_frequencies'))
+ )
+ op.create_table('core_eia__codes_sector_consolidated',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_sector_consolidated'))
+ )
+ op.create_table('core_eia__codes_so2_compliance_strategies',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_compliance_strategies'))
+ )
+ op.create_table('core_eia__codes_so2_units',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_so2_units'))
+ )
+ op.create_table('core_eia__codes_steam_plant_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_steam_plant_types'))
+ )
+ op.create_table('core_eia__codes_wet_dry_bottom',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_eia__codes_wet_dry_bottom'))
+ )
+ op.create_table('core_eia__entity_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_eia__entity_plants'))
+ )
+ op.create_table('core_eia__entity_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_eia__entity_utilities'))
+ )
+ op.create_table('core_eia__yearly_fuel_receipts_costs_aggs',
+ sa.Column('fuel_agg', sa.Text(), nullable=False, comment='Category of fuel aggregation in EIA bulk electricity data.'),
+ sa.Column('geo_agg', sa.Text(), nullable=False, comment='Category of geographic aggregation in EIA bulk electricity data.'),
+ sa.Column('sector_agg', sa.Text(), nullable=False, comment='Category of sectoral aggregation in EIA bulk electricity data.'),
+ sa.Column('temporal_agg', sa.Text(), nullable=False, comment='Category of temporal aggregation in EIA bulk electricity data.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_received_mmbtu', sa.Float(), nullable=True, comment='Aggregated fuel receipts, in MMBtu, in EIA bulk electricity data.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.PrimaryKeyConstraint('fuel_agg', 'geo_agg', 'sector_agg', 'temporal_agg', 'report_date', name=op.f('pk_core_eia__yearly_fuel_receipts_costs_aggs'))
+ )
+ op.create_table('core_epa__assn_eia_epacamd_subplant_ids',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('subplant_id', sa.Integer(), nullable=True, comment='Sub-plant ID links EPA CEMS emissions units to EIA units.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!')
+ )
+ op.create_table('core_ferc1__codes_power_purchase_types',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('label', sa.Text(), nullable=True, comment='Longer human-readable code using snake_case'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
+ )
+ op.create_table('core_ferc714__respondent_id',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
+ )
+ op.create_table('core_ferc__codes_accounts',
+ sa.Column('ferc_account_id', sa.Text(), nullable=False, comment="Account identifier from FERC's Uniform System of Accounts for Electric Plant. Includes higher level labeled categories."),
+ sa.Column('ferc_account_description', sa.Text(), nullable=True),
+ sa.PrimaryKeyConstraint('ferc_account_id', name=op.f('pk_core_ferc__codes_accounts'))
+ )
+ op.create_table('core_pudl__codes_data_maturities',
+ sa.Column('code', sa.Text(), nullable=False, comment='Originally reported short code.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.PrimaryKeyConstraint('code', name=op.f('pk_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_pudl__codes_datasources',
+ sa.Column('datasource', sa.Enum('censusdp1tract', 'eia176', 'eia860', 'eia860m', 'eia861', 'eia923', 'eia_bulk_elec', 'eiawater', 'epacems', 'core_epa__assn_eia_epacamd', 'ferc1', 'ferc2', 'ferc6', 'ferc60', 'ferc714', 'ferceqr', 'mshamines', 'phmsagas', 'pudl'), nullable=False, comment='Code identifying a dataset available within PUDL.'),
+ sa.Column('partitions', sa.Text(), nullable=True, comment='The data parititions used to generate this instance of the database.'),
+ sa.Column('doi', sa.Text(), nullable=True, comment='Unique digitial object identifier of Zenodo archive.'),
+ sa.Column('pudl_version', sa.Text(), nullable=True, comment='The version of PUDL used to generate this database.'),
+ sa.PrimaryKeyConstraint('datasource', name=op.f('pk_core_pudl__codes_datasources'))
+ )
+ op.create_table('core_pudl__codes_subdivisions',
+ sa.Column('country_code', sa.Enum('CAN', 'USA'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
+ sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
+ sa.Column('subdivision_code', sa.Enum('MP', 'ON', 'OR', 'GA', 'IN', 'AR', 'AS', 'AK', 'CT', 'NS', 'AL', 'NM', 'NE', 'ND', 'NH', 'NU', 'IA', 'NL', 'MT', 'PE', 'SD', 'AZ', 'CA', 'DE', 'MD', 'PR', 'NC', 'ID', 'OH', 'QC', 'YT', 'SC', 'VT', 'OK', 'MI', 'NY', 'IL', 'KS', 'VI', 'NB', 'VA', 'SK', 'TX', 'NT', 'WI', 'TN', 'MN', 'ME', 'WV', 'WY', 'NV', 'MB', 'MO', 'DC', 'MA', 'GU', 'FL', 'MS', 'RI', 'BC', 'LA', 'HI', 'WA', 'CO', 'KY', 'AB', 'NJ', 'UT', 'PA'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
+ sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
+ sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
+ sa.Column('division_code_us_census', sa.Enum('ENC', 'WSC', 'WNC', 'PCC', 'PCN', 'MAT', 'NEW', 'SAT', 'MTN', 'ESC'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
+ sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
+ sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
+ )
+ op.create_table('core_pudl__entity_plants_pudl',
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_pudl', sa.Text(), nullable=True, comment='Plant name, chosen arbitrarily from the several possible plant names available in the plant matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('plant_id_pudl', name=op.f('pk_core_pudl__entity_plants_pudl'))
+ )
+ op.create_table('core_pudl__entity_utilities_pudl',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_pudl', sa.Text(), nullable=True, comment='Utility name, chosen arbitrarily from the several possible utility names available in the utility matching process. Included for human readability only.'),
+ sa.PrimaryKeyConstraint('utility_id_pudl', name=op.f('pk_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia861__compiled_geometry_balancing_authorities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=False, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=False, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('balancing_authority_id_eia', 'report_date', 'county_id_fips', 'county', name=op.f('pk_out_eia861__compiled_geometry_balancing_authorities'))
+ )
+ op.create_table('out_eia861__compiled_geometry_utilities',
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('county_name_census', sa.Text(), nullable=True, comment='County name as specified in Census DP1 Data.'),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', 'county_id_fips', name=op.f('pk_out_eia861__compiled_geometry_utilities'))
+ )
+ op.create_table('out_ferc714__hourly_predicted_state_demand',
+ sa.Column('state_id_fips', sa.Text(), nullable=False, comment='Two digit state FIPS code.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.Column('scaled_demand_mwh', sa.Float(), nullable=True, comment='Estimated electricity demand scaled by the total sales within a state.'),
+ sa.PrimaryKeyConstraint('state_id_fips', 'utc_datetime', name=op.f('pk_out_ferc714__hourly_predicted_state_demand'))
+ )
+ op.create_table('_out_eia__monthly_heat_rate_by_unit',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk__out_eia__monthly_heat_rate_by_unit_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__monthly_heat_rate_by_unit'))
+ )
+ op.create_table('core_eia860__scd_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_core_eia860__scd_emissions_control_equipment'))
+ )
+ op.create_table('core_eia860__scd_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_core_eia860__scd_utilities_utility_id_eia_core_eia__entity_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_utilities'))
+ )
+ op.create_table('core_eia861__yearly_advanced_metering_infrastructure',
+ sa.Column('advanced_metering_infrastructure', sa.Integer(), nullable=True),
+ sa.Column('automated_meter_reading', sa.Integer(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('daily_digital_access_customers', sa.Integer(), nullable=True),
+ sa.Column('direct_load_control_customers', sa.Integer(), nullable=True),
+ sa.Column('energy_served_ami_mwh', sa.Float(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('home_area_network', sa.Integer(), nullable=True),
+ sa.Column('non_amr_ami', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_advanced_metering_infrastructure_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_advanced_metering_infrastructure'))
+ )
+ op.create_table('core_eia861__yearly_demand_response',
+ sa.Column('actual_peak_demand_savings_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_cost', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('other_costs', sa.Float(), nullable=True),
+ sa.Column('potential_peak_demand_savings_mw', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'customer_class', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response'))
+ )
+ op.create_table('core_eia861__yearly_demand_response_water_heater',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('water_heater', sa.Integer(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_response_water_heater_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('balancing_authority_code_eia', 'report_date', 'state', 'utility_id_eia', name=op.f('pk_core_eia861__yearly_demand_response_water_heater'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_ee_dr',
+ sa.Column('annual_indirect_program_cost', sa.Float(), nullable=True),
+ sa.Column('annual_total_cost', sa.Float(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('energy_efficiency_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_cost', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_annual_incentive_payment', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('energy_efficiency_incremental_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_cost', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_incentive_payment', sa.Float(), nullable=True),
+ sa.Column('load_management_annual_potential_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_actual_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_effects_mwh', sa.Float(), nullable=True),
+ sa.Column('load_management_incremental_potential_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('price_responsiveness_customers', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_responsiveness_customers', sa.Integer(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_ee_dr_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_misc',
+ sa.Column('energy_savings_estimates_independently_verified', sa.Boolean(), nullable=True),
+ sa.Column('energy_savings_independently_verified', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('major_program_changes', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('price_responsive_programs', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('reported_as_another_company', sa.Text(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_responsive_programs', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_demand_side_management_sales',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_to_ultimate_consumers_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_demand_side_management_sales_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_fuel',
+ sa.Column('estimated_or_actual_fuel_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('fuel_class', sa.Enum('gas', 'oil', 'other', 'renewable', 'water', 'wind', 'wood'), nullable=True),
+ sa.Column('fuel_pct', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_fuel_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('distributed_generation_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('estimated_or_actual_capacity_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('generators_num_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('total_capacity_less_1_mw', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distributed_generation_tech',
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('estimated_or_actual_tech_data', sa.Enum('estimated', 'actual'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distributed_generation_tech_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_distribution_systems',
+ sa.Column('circuits_with_voltage_optimization', sa.Integer(), nullable=True),
+ sa.Column('distribution_circuits', sa.Integer(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_distribution_systems_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_dynamic_pricing',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('critical_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('critical_peak_rebate', sa.Boolean(), nullable=True),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('real_time_pricing', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('time_of_use_pricing', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('variable_peak_pricing', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_dynamic_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_energy_efficiency',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customer_incentives_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('customer_incentives_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('customer_other_costs_incremental_life_cycle_cost', sa.Float(), nullable=True),
+ sa.Column('incremental_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_energy_savings_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_life_cycle_peak_reduction_mwh', sa.Float(), nullable=True),
+ sa.Column('incremental_peak_reduction_mw', sa.Float(), nullable=True),
+ sa.Column('other_costs_incremental_cost', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('weighted_average_life_years', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_energy_efficiency_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_green_pricing',
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('green_pricing_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_revenue', sa.Float(), nullable=True),
+ sa.Column('rec_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_green_pricing_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_mergers',
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('merge_address', sa.Text(), nullable=True),
+ sa.Column('merge_city', sa.Text(), nullable=True),
+ sa.Column('merge_company', sa.Text(), nullable=True),
+ sa.Column('merge_date', sa.Date(), nullable=True),
+ sa.Column('merge_state', sa.Text(), nullable=True, comment='Two letter US state abbreviations and three letter ISO-3166-1 country codes for international mines.'),
+ sa.Column('new_parent', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_mergers_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('energy_displaced_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('sold_to_utility_mwh', sa.Float(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_net_metering_misc',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_customer_fuel_class',
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=True, comment='High level categorization of customer type.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('tech_class', sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'all_storage', 'total', 'virtual_pv', 'wind'), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_customer_fuel_class_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_non_net_metering_misc',
+ sa.Column('backup_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('generators_number', sa.Float(), nullable=True),
+ sa.Column('pv_current_flow_type', sa.Enum('AC', 'DC'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_owned_capacity_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_non_net_metering_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_misc',
+ sa.Column('consumed_by_facility_mwh', sa.Float(), nullable=True),
+ sa.Column('consumed_by_respondent_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('exchange_energy_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('exchange_energy_received_mwh', sa.Float(), nullable=True),
+ sa.Column('furnished_without_charge_mwh', sa.Float(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_power_exchanged_mwh', sa.Float(), nullable=True),
+ sa.Column('net_wheeled_power_mwh', sa.Float(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_sales_mwh', sa.Float(), nullable=True),
+ sa.Column('sales_for_resale_mwh', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('summer_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('total_disposition_mwh', sa.Float(), nullable=True),
+ sa.Column('total_energy_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('total_sources_mwh', sa.Float(), nullable=True),
+ sa.Column('transmission_by_other_losses_mwh', sa.Float(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wheeled_power_delivered_mwh', sa.Float(), nullable=True),
+ sa.Column('wheeled_power_received_mwh', sa.Float(), nullable=True),
+ sa.Column('wholesale_power_purchases_mwh', sa.Float(), nullable=True),
+ sa.Column('winter_peak_demand_mw', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_operational_data_revenue',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('revenue', sa.Float(), nullable=True),
+ sa.Column('revenue_class', sa.Enum('credits_or_adjustments', 'delivery_customers', 'other', 'retail_sales', 'sales_for_resale', 'total', 'transmission', 'unbundled'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_operational_data_revenue_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_reliability',
+ sa.Column('caidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('caidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('highest_distribution_voltage_kv', sa.Float(), nullable=True),
+ sa.Column('inactive_accounts_included', sa.Boolean(), nullable=True),
+ sa.Column('momentary_interruption_definition', sa.Text(), nullable=True),
+ sa.Column('outages_recorded_automatically', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('saidi_w_major_event_days_minus_loss_of_service_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_w_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saidi_wo_major_event_days_minutes', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_w_major_event_days_minus_loss_of_service_customers', sa.Float(), nullable=True),
+ sa.Column('saifi_wo_major_event_days_customers', sa.Float(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('standard', sa.Enum('ieee_standard', 'other_standard'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_reliability_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['momentary_interruption_definition'], ['core_eia__codes_momentary_interruptions.code'], name=op.f('fk_core_eia861__yearly_reliability_momentary_interruption_definition_core_eia__codes_momentary_interruptions'))
+ )
+ op.create_table('core_eia861__yearly_sales',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('state', sa.Text(), nullable=False, comment='Two letter US state abbreviation.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=False, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('customer_class', sa.Enum('commercial', 'industrial', 'direct_connection', 'other', 'residential', 'total', 'transportation'), nullable=False, comment='High level categorization of customer type.'),
+ sa.Column('business_model', sa.Enum('retail', 'energy_services'), nullable=False),
+ sa.Column('data_observed', sa.Boolean(), nullable=True, comment='Is the value observed (True) or imputed (False).'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('service_type', sa.Enum('bundled', 'energy', 'delivery'), nullable=False),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('customers', sa.Float(), nullable=True, comment='Number of customers.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('sales_revenue', sa.Float(), nullable=True, comment='Revenue from electricity sold.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_sales_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'state', 'report_date', 'balancing_authority_code_eia', 'customer_class', 'business_model', 'service_type', name=op.f('pk_core_eia861__yearly_sales'))
+ )
+ op.create_table('core_eia861__yearly_service_territory',
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=False, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_service_territory_data_maturity_core_pudl__codes_data_maturities')),
+ sa.PrimaryKeyConstraint('report_date', 'utility_id_eia', 'county_id_fips', name=op.f('pk_core_eia861__yearly_service_territory'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_misc',
+ sa.Column('alternative_fuel_vehicle_2_activity', sa.Boolean(), nullable=True),
+ sa.Column('alternative_fuel_vehicle_activity', sa.Boolean(), nullable=True),
+ sa.Column('bundled_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('buying_transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('distribution_activity', sa.Boolean(), nullable=True),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('generation_activity', sa.Boolean(), nullable=True),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('operates_generating_plant', sa.Boolean(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('retail_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('short_form', sa.Boolean(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('transmission_activity', sa.Boolean(), nullable=True),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('wholesale_marketing_activity', sa.Boolean(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_misc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_nerc',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('nerc_regions_of_operation', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_nerc_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia861__yearly_utility_data_rto',
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('rtos_of_operation', sa.Enum('caiso', 'ercot', 'isone', 'miso', 'nyiso', 'other', 'pjm', 'spp'), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia861__yearly_utility_data_rto_data_maturity_core_pudl__codes_data_maturities'))
+ )
+ op.create_table('core_eia923__entity_coalmine',
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__entity_coalmine_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_core_eia923__entity_coalmine_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.PrimaryKeyConstraint('mine_id_pudl', name=op.f('pk_core_eia923__entity_coalmine'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_core_eia923__monthly_generation_fuel'))
+ )
+ op.create_table('core_eia923__monthly_generation_fuel_nuclear',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('nuclear_unit_id', sa.Text(), nullable=False, comment='For nuclear plants only, the unit number .One digit numeric. Nuclear plants are the only type of plants for which data are shown explicitly at the generating unit level.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_generation_fuel_nuclear_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'nuclear_unit_id', 'energy_source_code', 'prime_mover_code', name=op.f('pk_core_eia923__monthly_generation_fuel_nuclear'))
+ )
+ op.create_table('core_eia__entity_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia__entity_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_boilers_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', name=op.f('pk_core_eia__entity_boilers'))
+ )
+ op.create_table('core_eia__entity_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia__entity_generators_plant_id_eia_core_eia__entity_plants')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc714__hourly_demand_pa',
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
+ sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('demand_mwh', sa.Float(), nullable=True),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_core_ferc714__hourly_demand_pa_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'utc_datetime', name=op.f('pk_core_ferc714__hourly_demand_pa'))
+ )
+ op.create_table('core_pudl__assn_eia_pudl_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_eia_pudl_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', name=op.f('pk_core_pudl__assn_eia_pudl_plants'))
+ )
+ op.create_table('core_pudl__assn_eia_pudl_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_eia_pudl_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', name=op.f('pk_core_pudl__assn_eia_pudl_utilities'))
+ )
+ op.create_table('core_pudl__assn_ferc1_pudl_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_ferc1_pudl_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', name=op.f('pk_core_pudl__assn_ferc1_pudl_utilities'))
+ )
+ op.create_table('core_pudl__assn_utilities_plants',
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=False, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_core_pudl__assn_utilities_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_pudl', 'plant_id_pudl', name=op.f('pk_core_pudl__assn_utilities_plants'))
+ )
+ op.create_table('out_eia860__yearly_emissions_control_equipment',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('emission_control_id_pudl', sa.Float(), nullable=False, comment='A PUDL-generated ID used to distinguish emission control units in the same report year and plant id. This ID should not be used to track units over time or between plants.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('emission_control_equipment_type_code', sa.Text(), nullable=True, comment='Short code indicating the type of emission control equipment installed.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('mercury_control_id_eia', sa.Text(), nullable=True, comment='Mercury control identification number. This ID is not a unique identifier.'),
+ sa.Column('nox_control_id_eia', sa.Text(), nullable=True, comment='Nitrogen oxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('particulate_control_id_eia', sa.Text(), nullable=True, comment='Particulate matter control identification number. This ID is not a unique identifier.'),
+ sa.Column('so2_control_id_eia', sa.Text(), nullable=True, comment='Sulfur dioxide control identification number. This ID is not a unique identifier.'),
+ sa.Column('acid_gas_control', sa.Boolean(), nullable=True, comment='Indicates whether the emissions control equipment controls acid (HCl) gas.'),
+ sa.Column('emission_control_equipment_cost', sa.Float(), nullable=True, comment='The total cost to install a piece of emission control equipment.'),
+ sa.Column('emission_control_operating_date', sa.Date(), nullable=True, comment='The date a piece of emissions control equipment began operating. Derived from month and year columns in the raw data.'),
+ sa.Column('emission_control_retirement_date', sa.Date(), nullable=True, comment='The expected or actual retirement date for a piece of emissions control equipment. Derived from month and year columns in the raw data.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['emission_control_equipment_type_code'], ['core_eia__codes_emission_control_equipment_types.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_emission_control_equipment_type_code_core_eia__codes_emission_control_equipment_types')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_emissions_control_equipment_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'plant_id_eia', 'emission_control_id_pudl', name=op.f('pk_out_eia860__yearly_emissions_control_equipment'))
+ )
+ op.create_table('out_eia923__fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('bulk_agg_fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Fuel cost per mmbtu reported in the EIA bulk electricity data. This is an aggregate average fuel price for a whole state, region, month, sector, etc. Used to fill in missing fuel prices.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('mine_id_msha', sa.Integer(), nullable=True, comment='MSHA issued mine identifier.'),
+ sa.Column('mine_name', sa.Text(), nullable=True, comment='Coal mine name.'),
+ sa.Column('mine_state', sa.Text(), nullable=True, comment='State where the coal mine is located. Two letter abbreviation.'),
+ sa.Column('coalmine_county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4. This is the county where the coal mine is located.'),
+ sa.Column('mine_type_code', sa.Text(), nullable=True, comment='Type of coal mine.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_type_code'], ['core_eia__codes_coalmine_types.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_mine_type_code_core_eia__codes_coalmine_types')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia923__fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_code_aer', sa.Text(), nullable=True, comment='A partial aggregation of the reported fuel type codes into larger categories used by EIA in, for example, the Annual Energy Review (AER). Two or three letter alphanumeric.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['fuel_type_code_aer'], ['core_eia__codes_fuel_types_aer.code'], name=op.f('fk_out_eia923__generation_fuel_combined_fuel_type_code_aer_core_eia__codes_fuel_types_aer')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__generation_fuel_combined'))
+ )
+ op.create_table('out_eia923__monthly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
+ )
+ op.create_table('out_ferc714__respondents_with_fips',
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
+ sa.Column('county_id_fips', sa.Text(), nullable=True, comment='County ID from the Federal Information Processing Standard Publication 6-4.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__respondents_with_fips_respondent_id_ferc714_core_ferc714__respondent_id'))
+ )
+ op.create_table('out_ferc714__summarized_demand',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
+ sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
+ sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
+ sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
+ sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
+ sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
+ sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.ForeignKeyConstraint(['respondent_id_ferc714'], ['core_ferc714__respondent_id.respondent_id_ferc714'], name=op.f('fk_out_ferc714__summarized_demand_respondent_id_ferc714_core_ferc714__respondent_id')),
+ sa.PrimaryKeyConstraint('respondent_id_ferc714', 'report_date', name=op.f('pk_out_ferc714__summarized_demand'))
+ )
+ op.create_table('_out_eia__monthly_capacity_factor_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_capacity_factor_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_capacity_factor_by_generator'))
+ )
+ op.create_table('_out_eia__monthly_derived_generator_attributes',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_derived_generator_attributes_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_derived_generator_attributes'))
+ )
+ op.create_table('_out_eia__monthly_fuel_cost_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__monthly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_fuel_cost_by_generator'))
+ )
+ op.create_table('_out_eia__monthly_heat_rate_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__monthly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__monthly_heat_rate_by_generator'))
+ )
+ op.create_table('core_eia860__scd_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_core_eia860__scd_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia860__scd_plants_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_core_eia860__scd_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_core_eia860__scd_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_core_eia860__scd_plants'))
+ )
+ op.create_table('core_eia923__monthly_boiler_fuel',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_core_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('core_eia923__monthly_fuel_receipts_costs',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('contract_type_code', sa.Enum('S', 'C', 'NC', 'T'), nullable=True, comment='Purchase type under which receipts occurred in the reporting month. C: Contract, NC: New Contract, S: Spot Purchase, T: Tolling Agreement.'),
+ sa.Column('contract_expiration_date', sa.Date(), nullable=True, comment='Date contract expires.Format: MMYY.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=True, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_group_code', sa.Enum('petroleum', 'other_gas', 'petroleum_coke', 'natural_gas', 'coal'), nullable=True, comment='Fuel groups used in the Electric Power Monthly'),
+ sa.Column('mine_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL mine identifier.'),
+ sa.Column('supplier_name', sa.Text(), nullable=True, comment='Company that sold the fuel to the plant or, in the case of Natural Gas, pipline owner.'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('primary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the longest distance transported.'),
+ sa.Column('secondary_transportation_mode_code', sa.Text(), nullable=True, comment='Transportation mode for the second longest distance transported.'),
+ sa.Column('natural_gas_transport_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natural gas transportation service.'),
+ sa.Column('natural_gas_delivery_contract_type_code', sa.Enum('firm', 'interruptible'), nullable=True, comment='Contract type for natrual gas delivery service:'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['contract_type_code'], ['core_eia__codes_contract_types.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_contract_type_code_core_eia__codes_contract_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['mine_id_pudl'], ['core_eia923__entity_coalmine.mine_id_pudl'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_mine_id_pudl_core_eia923__entity_coalmine')),
+ sa.ForeignKeyConstraint(['plant_id_eia'], ['core_eia__entity_plants.plant_id_eia'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_plant_id_eia_core_eia__entity_plants')),
+ sa.ForeignKeyConstraint(['primary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_primary_transportation_mode_code_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['secondary_transportation_mode_code'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia923__monthly_fuel_receipts_costs_secondary_transportation_mode_code_core_eia__codes_fuel_transportation_modes'))
+ )
+ op.create_table('core_eia923__monthly_generation',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia923__monthly_generation'))
+ )
+ op.create_table('core_epa__assn_eia_epacamd',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_epa', sa.Integer(), nullable=True, comment='The ORISPL ID used by EPA to refer to the plant. Usually but not always the same as plant_id_eia.'),
+ sa.Column('emissions_unit_id_epa', sa.Text(), nullable=True, comment='Emissions (smokestack) unit monitored by EPA CEMS.'),
+ sa.Column('generator_id_epa', sa.Text(), nullable=True, comment='Generator ID used by the EPA.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=True, comment='Alphanumeric boiler ID.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_epa__assn_eia_epacamd_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_epa__assn_eia_epacamd_plant_id_eia_core_eia__entity_generators'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_assets_sched110',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_assets_sched110'))
+ )
+ op.create_table('core_ferc1__yearly_balance_sheet_liabilities_sched110',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_core_ferc1__yearly_balance_sheet_liabilities_sched110'))
+ )
+ op.create_table('core_ferc1__yearly_cash_flows_sched120',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_core_ferc1__yearly_cash_flows_sched120'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_by_function_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_depreciation_by_function_sched219'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_changes_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_core_ferc1__yearly_depreciation_changes_sched219'))
+ )
+ op.create_table('core_ferc1__yearly_depreciation_summary_sched336',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_depreciation_summary_sched336'))
+ )
+ op.create_table('core_ferc1__yearly_energy_dispositions_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_core_ferc1__yearly_energy_dispositions_sched401'))
+ )
+ op.create_table('core_ferc1__yearly_energy_sources_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_core_ferc1__yearly_energy_sources_sched401'))
+ )
+ op.create_table('core_ferc1__yearly_income_statements_sched114',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_core_ferc1__yearly_income_statements_sched114'))
+ )
+ op.create_table('core_ferc1__yearly_operating_expenses_sched320',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_core_ferc1__yearly_operating_expenses_sched320'))
+ )
+ op.create_table('core_ferc1__yearly_operating_revenues_sched300',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_core_ferc1__yearly_operating_revenues_sched300'))
+ )
+ op.create_table('core_ferc1__yearly_other_regulatory_liabilities_sched278',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities'))
+ )
+ op.create_table('core_ferc1__yearly_plant_in_service_sched204',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_core_ferc1__yearly_plant_in_service_sched204'))
+ )
+ op.create_table('core_ferc1__yearly_purchased_power_and_exchanges_sched326',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
+ sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
+ sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities'))
+ )
+ op.create_table('core_ferc1__yearly_retained_earnings_sched118',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_core_ferc1__yearly_retained_earnings_sched118'))
+ )
+ op.create_table('core_ferc1__yearly_sales_by_rate_schedules_sched304',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities'))
+ )
+ op.create_table('core_ferc1__yearly_transmission_lines_sched422',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of Land and land rights for the transmission line.'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Construction and other costs for the transmission line.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total costs for the transmission line.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Operating expenses for the transmission line.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Maintenance expenses for the transmission line.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Rent expenses for the transmission line.'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Overall expenses for the transmission line.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities'))
+ )
+ op.create_table('core_ferc1__yearly_utility_plant_summary_sched200',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_core_ferc1__yearly_utility_plant_summary_sched200'))
+ )
+ op.create_table('core_pudl__assn_ferc1_dbf_pudl_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_dbf', sa.Integer(), nullable=False, comment='FERC-assigned respondent_id from DBF reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_ferc1_dbf_pudl_utilities_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_dbf', name=op.f('pk_core_pudl__assn_ferc1_dbf_pudl_utilities'))
+ )
+ op.create_table('core_pudl__assn_ferc1_pudl_plants',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_core_pudl__assn_ferc1_pudl_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_ferc1_pudl_plants_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_core_pudl__assn_ferc1_pudl_plants'))
+ )
+ op.create_table('core_pudl__assn_ferc1_xbrl_pudl_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_ferc1_xbrl', sa.Text(), nullable=False, comment='FERC-assigned entity_id from XBRL reporting years, identifying the reporting entity. Stable from year to year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_core_pudl__assn_ferc1_xbrl_pudl_utilities_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1_xbrl', name=op.f('pk_core_pudl__assn_ferc1_xbrl_pudl_utilities'))
+ )
+ op.create_table('out_eia923__boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__boiler_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__boiler_fuel'))
+ )
+ op.create_table('out_eia923__generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__generation'))
+ )
+ op.create_table('out_eia923__monthly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__monthly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__monthly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__monthly_generation'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__monthly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__monthly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia__monthly_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__monthly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__monthly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_out_eia__monthly_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__monthly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__monthly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__monthly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia'], ['core_eia__entity_utilities.utility_id_eia'], name=op.f('fk_out_eia__monthly_generators_utility_id_eia_core_eia__entity_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__monthly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__monthly_generators'))
+ )
+ op.create_table('out_eia__yearly_utilities',
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('plants_reported_owner', sa.Boolean(), nullable=True, comment='Is the reporting entity an owner of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_operator', sa.Boolean(), nullable=True, comment='Is the reporting entity an operator of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_asset_manager', sa.Boolean(), nullable=True, comment='Is the reporting entity an asset manager of power plants reported on Schedule 2 of the form?'),
+ sa.Column('plants_reported_other_relationship', sa.Boolean(), nullable=True, comment='Does the reporting entity have any other relationship to the power plants reported on Schedule 2 of the form?'),
+ sa.Column('entity_type', sa.Text(), nullable=True, comment='Entity type of principal owner.'),
+ sa.Column('attention_line', sa.Text(), nullable=True),
+ sa.Column('address_2', sa.Text(), nullable=True),
+ sa.Column('zip_code_4', sa.Text(), nullable=True, comment='Four digit US Zip Code suffix.'),
+ sa.Column('contact_firstname', sa.Text(), nullable=True, comment='First name of utility contact 1.'),
+ sa.Column('contact_lastname', sa.Text(), nullable=True, comment='Last name of utility contact 1.'),
+ sa.Column('contact_title', sa.Text(), nullable=True, comment='Title of of utility contact 1.'),
+ sa.Column('phone_number', sa.Text(), nullable=True, comment='Phone number for utility contact 1.'),
+ sa.Column('phone_extension', sa.Text(), nullable=True, comment='Phone extension for utility contact 1'),
+ sa.Column('contact_firstname_2', sa.Text(), nullable=True, comment='First name of utility contact 2.'),
+ sa.Column('contact_lastname_2', sa.Text(), nullable=True, comment='Last name of utility contact 2.'),
+ sa.Column('contact_title_2', sa.Text(), nullable=True, comment='Title of utility contact 2.'),
+ sa.Column('phone_number_2', sa.Text(), nullable=True, comment='Phone number for utility contact 2.'),
+ sa.Column('phone_extension_2', sa.Text(), nullable=True, comment='Phone extension for utility contact 2'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_utilities'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_assets_sched110',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_type', sa.Text(), nullable=False, comment='Type of asset being reported to the core_ferc1__yearly_balance_sheet_assets_sched110 table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_assets_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'asset_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_assets_sched110'))
+ )
+ op.create_table('out_ferc1__yearly_balance_sheet_liabilities_sched110',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('liability_type', sa.Text(), nullable=False, comment='Type of liability being reported to the core_ferc1__yearly_balance_sheet_liabilities_sched110 table.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_balance_sheet_liabilities_sched110_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'liability_type', name=op.f('pk_out_ferc1__yearly_balance_sheet_liabilities_sched110'))
+ )
+ op.create_table('out_ferc1__yearly_cash_flows_sched120',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('amount_type', sa.Text(), nullable=False, comment='Label describing the type of amount being reported. This could be a balance or a change in value.'),
+ sa.Column('amount', sa.Float(), nullable=True, comment='Reported amount of dollars. This could be a balance or a change in value.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_cash_flows_sched120_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_cash_flows_sched120_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'amount_type', name=op.f('pk_out_ferc1__yearly_cash_flows_sched120'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_by_function_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=True, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_by_function_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_depreciation_by_function_sched219'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_changes_sched219',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('depreciation_type', sa.Text(), nullable=False, comment='Type of depreciation provision within FERC Account 108, including cost ofremoval, depreciation expenses, salvage, cost of retired plant, etc.'),
+ sa.Column('plant_status', sa.Text(), nullable=False, comment='Utility plant financial status (in service, future, leased, total).'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_changes_sched219_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'depreciation_type', 'plant_status', 'utility_type', name=op.f('pk_out_ferc1__yearly_depreciation_changes_sched219'))
+ )
+ op.create_table('out_ferc1__yearly_depreciation_summary_sched336',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_function', sa.Text(), nullable=False, comment='Functional role played by utility plant (steam production, nuclear production, distribution, transmission, etc.).'),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_depreciation_summary_sched336_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'plant_function', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_depreciation_summary_sched336'))
+ )
+ op.create_table('out_ferc1__yearly_energy_dispositions_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_disposition_type', sa.Text(), nullable=False, comment='Type of energy disposition reported in the core_ferc1__yearly_energy_dispositions_sched401. Dispositions include sales to customers, re-sales of energy, energy used internally, losses, etc.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_energy_dispositions_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_disposition_type', name=op.f('pk_out_ferc1__yearly_energy_dispositions_sched401'))
+ )
+ op.create_table('out_ferc1__yearly_energy_sources_sched401',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('energy_source_type', sa.Text(), nullable=False, comment='Type of energy source reported in the core_ferc1__yearly_energy_sources_sched401 table. There are three groups of energy sources: generation, power exchanges and transmission.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('energy_mwh', sa.Float(), nullable=True, comment='Sources and uses of energy in MWh.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_energy_sources_sched401_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_energy_sources_sched401_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'energy_source_type', name=op.f('pk_out_ferc1__yearly_energy_sources_sched401'))
+ )
+ op.create_table('out_ferc1__yearly_income_statements_sched114',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('income_type', sa.Text(), nullable=False, comment='Type of income reported in income_statement_ferc1 table.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_income_statements_sched114_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_income_statements_sched114_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'income_type', name=op.f('pk_out_ferc1__yearly_income_statements_sched114'))
+ )
+ op.create_table('out_ferc1__yearly_operating_expenses_sched320',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('expense_type', sa.Text(), nullable=False, comment='The type of expense.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_operating_expenses_sched320_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'expense_type', name=op.f('pk_out_ferc1__yearly_operating_expenses_sched320'))
+ )
+ op.create_table('out_ferc1__yearly_operating_revenues_sched300',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('revenue_type', sa.Text(), nullable=False, comment='Label describing types of revenues.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_operating_revenues_sched300_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'revenue_type', name=op.f('pk_out_ferc1__yearly_operating_revenues_sched300'))
+ )
+ op.create_table('out_ferc1__yearly_other_regulatory_liabilities_sched278',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('description', sa.Text(), nullable=True, comment='Long human-readable description of the meaning of a code/label.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('increase_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The increase during the reporting period of other regulatory liabilities.'),
+ sa.Column('account_detail', sa.Text(), nullable=True, comment='Description of the account number credited from making debit adjustment to other regulatory liabilities.'),
+ sa.Column('decrease_in_other_regulatory_liabilities', sa.Float(), nullable=True, comment='The decrease during the reporting period of other regulatory liabilities.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_other_regulatory_liabilities_sched278_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_plant_in_service_sched204',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_type', sa.Text(), nullable=True, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('additions', sa.Float(), nullable=True, comment='Cost of acquisition of items classified within the account.'),
+ sa.Column('adjustments', sa.Float(), nullable=True, comment='Cost of adjustments to the account.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('ferc_account_label', sa.Text(), nullable=False, comment='Long FERC account identifier derived from values reported in the XBRL taxonomies. May also refer to aggregations of individual FERC accounts.'),
+ sa.Column('retirements', sa.Float(), nullable=True, comment='Cost of disposal of items classified within the account.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('transfers', sa.Float(), nullable=True, comment='Cost of transfers into (out of) the account.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_plant_in_service_sched204_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'ferc_account_label', name=op.f('pk_out_ferc1__yearly_plant_in_service_sched204'))
+ )
+ op.create_table('out_ferc1__yearly_purchased_power_and_exchanges_sched326',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('seller_name', sa.Text(), nullable=True, comment='Name of the seller, or the other party in an exchange transaction.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('billing_demand_mw', sa.Float(), nullable=True, comment='Monthly average billing demand (for requirements purchases, and any transactions involving demand charges). In megawatts.'),
+ sa.Column('coincident_peak_demand_mw', sa.Float(), nullable=True, comment="Average monthly coincident peak (CP) demand (for requirements purchases, and any transactions involving demand charges). Monthly CP demand is the metered demand during the hour (60-minute integration) in which the supplier's system reaches its monthly peak. In megawatts."),
+ sa.Column('delivered_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours delivered in power exchanges and used as the basis for settlement.'),
+ sa.Column('demand_charges', sa.Float(), nullable=True, comment='Demand charges (USD).'),
+ sa.Column('energy_charges', sa.Float(), nullable=True, comment='Energy charges (USD).'),
+ sa.Column('non_coincident_peak_demand_mw', sa.Float(), nullable=True, comment='Average monthly non-coincident peak (NCP) demand (for requirements purhcases, and any transactions involving demand charges). Monthly NCP demand is the maximum metered hourly (60-minute integration) demand in a month. In megawatts.'),
+ sa.Column('other_charges', sa.Float(), nullable=True, comment='Other charges, including out-of-period adjustments (USD).'),
+ sa.Column('purchase_type_code', sa.Text(), nullable=True, comment="Categorization based on the original contractual terms and conditions of the service. Must be one of 'requirements', 'long_firm', 'intermediate_firm', 'short_firm', 'long_unit', 'intermediate_unit', 'electricity_exchange', 'other_service', or 'adjustment'. Requirements service is ongoing high reliability service, with load integrated into system resource planning. 'Long term' means 5+ years. 'Intermediate term' is 1-5 years. 'Short term' is less than 1 year. 'Firm' means not interruptible for economic reasons. 'unit' indicates service from a particular designated generating unit. 'exchange' is an in-kind transaction."),
+ sa.Column('purchased_mwh', sa.Float(), nullable=True, comment='Megawatt-hours shown on bills rendered to the respondent. Includes both electricity purchased for storage and non-storage purposes, which were lumped together prior to 2021.'),
+ sa.Column('purchased_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for energy storage.'),
+ sa.Column('purchased_other_than_storage_mwh', sa.Float(), nullable=True, comment='Number of megawatt hours purchased during the period for other than energy storage.'),
+ sa.Column('received_mwh', sa.Float(), nullable=True, comment='Gross megawatt-hours received in power exchanges and used as the basis for settlement.'),
+ sa.Column('tariff', sa.Text(), nullable=True, comment='FERC Rate Schedule Number or Tariff. (Note: may be incomplete if originally reported on multiple lines.)'),
+ sa.Column('total_settlement', sa.Float(), nullable=True, comment='Sum of demand, energy, and other charges (USD). For power exchanges, the settlement amount for the net receipt of energy. If more energy was delivered than received, this amount is negative.'),
+ sa.ForeignKeyConstraint(['purchase_type_code'], ['core_ferc1__codes_power_purchase_types.code'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_purchase_type_code_core_ferc1__codes_power_purchase_types')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_purchased_power_and_exchanges_sched326_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_retained_earnings_sched118',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('earnings_type', sa.Text(), nullable=False, comment='Label describing types of earnings.'),
+ sa.Column('starting_balance', sa.Float(), nullable=True, comment='Account balance at beginning of year.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('balance', sa.Text(), nullable=True, comment='Indication of whether a column is a credit or debit, as reported in the XBRL taxonomy.'),
+ sa.Column('ferc_account', sa.Text(), nullable=True, comment="Actual FERC Account number (e.g. '359.1') if available, or a PUDL assigned ID when FERC accounts have been split or combined in reporting."),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_retained_earnings_sched118_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'earnings_type', name=op.f('pk_out_ferc1__yearly_retained_earnings_sched118'))
+ )
+ op.create_table('out_ferc1__yearly_sales_by_rate_schedules_sched304',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('rate_schedule_type', sa.Text(), nullable=True, comment='Categorization of rate schedule type.'),
+ sa.Column('billing_status', sa.Text(), nullable=True, comment='Whether an amount is billed, unbilled, or both. Billed amounts pertain to the exchange of energy and unbilled amounts pertain to other sources of revenue such as contracts with peaker plants to keep them on standby or charging rent to host cell antennas on transmission towers.'),
+ sa.Column('rate_schedule_description', sa.Text(), nullable=True, comment='Free-form description of what the rate schedule name is. Not standardized. Often a sub-category of rate_schedule_type.'),
+ sa.Column('sales_mwh', sa.Float(), nullable=True, comment='Quantity of electricity sold in MWh.'),
+ sa.Column('dollar_value', sa.Float(), nullable=True, comment='Dollar value of reported income, expense, asset, or liability.'),
+ sa.Column('avg_customers_per_month', sa.Float(), nullable=True, comment='Average number of customers per month.'),
+ sa.Column('kwh_per_customer', sa.Float(), nullable=True, comment='kwh per customer.'),
+ sa.Column('revenue_per_kwh', sa.Float(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_sales_by_rate_schedules_sched304_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_transmission_lines_sched422',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('start_point', sa.Text(), nullable=True, comment='The starting point of a transmission line.'),
+ sa.Column('end_point', sa.Text(), nullable=True, comment='The end point of a transmission line.'),
+ sa.Column('operating_voltage_kv', sa.Float(), nullable=True, comment='The operating voltage, expressed kilo-volts, for three-phase 60 cycle alternative current transmission lines.'),
+ sa.Column('designed_voltage_kv', sa.Float(), nullable=True, comment='Manufactured (Designed) voltage, expressed in kilo-volts, for three-phase 60 cycle alternative current transmission lines'),
+ sa.Column('supporting_structure_type', sa.Text(), nullable=True, comment='Supporting structure of the transmission line.'),
+ sa.Column('transmission_line_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are stand alone structures (whose cost are reported on a stand-alone basis).'),
+ sa.Column('transmission_line_and_structures_length_miles', sa.Float(), nullable=True, comment='Length (in pole miles or circuit miles (if transmission lines are underground)) for lines that are agrregated with other lines / structures (whose cost are aggregated and combined with other structures).'),
+ sa.Column('num_transmission_circuits', sa.Integer(), nullable=True, comment='Number of circuits in a transmission line.'),
+ sa.Column('conductor_size_and_material', sa.Text(), nullable=True, comment='Size of transmission conductor and material of the transmission line.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_other', sa.Float(), nullable=True, comment='Other costs associated with the plant (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_transmission_lines_sched422_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_ferc1__yearly_utility_plant_summary_sched200',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_type', sa.Text(), nullable=False, comment='Listing of utility plant types. Examples include Electric Utility, Gas Utility, and Other Utility.'),
+ sa.Column('utility_type_other', sa.Text(), nullable=True, comment='Freeform description of type of utility reported in one of the other three other utility_type sections in the core_ferc1__yearly_utility_plant_summary_sched200 table. This field is reported only in the DBF reporting years (1994-2020).'),
+ sa.Column('utility_plant_asset_type', sa.Text(), nullable=False, comment='Type of utility plant asset reported in the core_ferc1__yearly_utility_plant_summary_sched200 table. Assets include those leased to others, held for future use, construction work-in-progress and details of accumulated depreciation.'),
+ sa.Column('row_type_xbrl', sa.Enum('calculated_value', 'reported_value', 'correction'), nullable=True, comment='Indicates whether the value reported in the row is calculated, or uniquely reported within the table.'),
+ sa.Column('ending_balance', sa.Float(), nullable=True, comment='Account balance at end of year.'),
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1'], ['core_pudl__assn_ferc1_pudl_utilities.utility_id_ferc1'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_ferc1_core_pudl__assn_ferc1_pudl_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_utility_plant_summary_sched200_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'report_year', 'utility_type', 'utility_plant_asset_type', name=op.f('pk_out_ferc1__yearly_utility_plant_summary_sched200'))
+ )
+ op.create_table('_out_eia__plants_utilities',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk__out_eia__plants_utilities_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__plants_utilities_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__plants_utilities_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'utility_id_eia', name=op.f('pk__out_eia__plants_utilities'))
+ )
+ op.create_table('_out_eia__yearly_heat_rate_by_unit',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=False, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_unit_plant_id_eia_core_eia860__scd_plants')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'unit_id_pudl', name=op.f('pk__out_eia__yearly_heat_rate_by_unit'))
+ )
+ op.create_table('_out_ferc1__yearly_hydroelectric_plants_sched406',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_hydroelectric_plants_sched406_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_hydroelectric_plants_sched406'))
+ )
+ op.create_table('_out_ferc1__yearly_plants_utilities',
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_plants_utilities_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk__out_ferc1__yearly_plants_utilities'))
+ )
+ op.create_table('_out_ferc1__yearly_pumped_storage_plants_sched408',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_pumped_storage_plants_sched408_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_pumped_storage_plants_sched408'))
+ )
+ op.create_table('_out_ferc1__yearly_small_plants_sched410',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_small_plants_sched410_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_small_plants_sched410'))
+ )
+ op.create_table('_out_ferc1__yearly_steam_plants_sched402',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_fuel_per_mwh', sa.Float(), nullable=True, comment='Production expenses: fuel (USD) per megawatt-hour (Mwh).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_ferc1__yearly_steam_plants_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk__out_ferc1__yearly_steam_plants_sched402'))
+ )
+ op.create_table('core_eia860__scd_boilers',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_core_eia860__scd_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_core_eia860__scd_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_core_eia860__scd_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id'], ['core_eia__entity_boilers.plant_id_eia', 'core_eia__entity_boilers.boiler_id'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia__entity_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_boilers_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_core_eia860__scd_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_core_eia860__scd_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_core_eia860__scd_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_core_eia860__scd_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_core_eia860__scd_boilers'))
+ )
+ op.create_table('core_eia860__scd_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_core_eia860__scd_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id'], ['core_eia__entity_generators.plant_id_eia', 'core_eia__entity_generators.generator_id'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia__entity_generators')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_core_eia860__scd_generators_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_core_eia860__scd_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_core_eia860__scd_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_core_eia860__scd_generators'))
+ )
+ op.create_table('core_ferc1__yearly_hydroelectric_plants_sched406',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('plant_type', sa.Enum('run_of_river_with_storage', 'run_of_river', 'hydro', 'storage', 'na_category'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_hydroelectric_plants_sched406_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants'))
+ )
+ op.create_table('core_ferc1__yearly_pumped_storage_plants_sched408',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_pumped_storage_plants_sched408_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants'))
+ )
+ op.create_table('core_ferc1__yearly_small_plants_sched410',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_small_plants_sched410_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants'))
+ )
+ op.create_table('core_ferc1__yearly_steam_plants_fuel_sched402',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants'))
+ )
+ op.create_table('core_ferc1__yearly_steam_plants_sched402',
+ sa.Column('record_id', sa.Text(), nullable=True, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('plant_type', sa.Enum('wind', 'photovoltaic', 'internal_combustion', 'combustion_turbine', 'nuclear', 'na_category', 'solar_thermal', 'geothermal', 'combined_cycle', 'steam'), nullable=True),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_plants', sa.Float(), nullable=True, comment='Maintenance of electrical plant.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_core_ferc1__yearly_steam_plants_sched402_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants'))
+ )
+ op.create_table('out_eia923__yearly_fuel_receipts_costs',
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_received_units', sa.Float(), nullable=True, comment='Quanity of fuel received in tons, barrel, or Mcf.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('mercury_content_ppm', sa.Float(), nullable=True, comment='Mercury content in parts per million (ppm) to the nearest 0.001 ppm.'),
+ sa.Column('moisture_content_pct', sa.Float(), nullable=True),
+ sa.Column('chlorine_content_ppm', sa.Float(), nullable=True),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_fuel_receipts_costs_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_combined',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_units', sa.Float(), nullable=True, comment='Consumption for electric generation of the fuel type in physical unit.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_combined_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_combined'))
+ )
+ op.create_table('out_eia__yearly_plants',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('ash_impoundment', sa.Boolean(), nullable=True, comment='Is there an ash impoundment (e.g. pond, reservoir) at the plant?'),
+ sa.Column('ash_impoundment_lined', sa.Boolean(), nullable=True, comment='If there is an ash impoundment at the plant, is the impoundment lined?'),
+ sa.Column('ash_impoundment_status', sa.Text(), nullable=True, comment='If there is an ash impoundment at the plant, the ash impoundment status as of December 31 of the reporting year.'),
+ sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
+ sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
+ sa.Column('datum', sa.Text(), nullable=True, comment='Geodetic coordinate system identifier (e.g. NAD27, NAD83, or WGS84).'),
+ sa.Column('energy_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility has energy storage capabilities.'),
+ sa.Column('ferc_cogen_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_cogen_status', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('ferc_exempt_wholesale_generator_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility exempt wholesale generator status.'),
+ sa.Column('ferc_exempt_wholesale_generator', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility exempt wholesale generator status'),
+ sa.Column('ferc_small_power_producer_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_small_power_producer', sa.Boolean(), nullable=True, comment='Indicates whether the plant has FERC qualifying facility small power producer status. See FERC Form 556.'),
+ sa.Column('ferc_qualifying_facility_docket_no', sa.Text(), nullable=True, comment='The docket number relating to the FERC qualifying facility cogenerator status. See FERC Form 556.'),
+ sa.Column('grid_voltage_1_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_2_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('grid_voltage_3_kv', sa.Float(), nullable=True, comment="Plant's grid voltage at point of interconnection to transmission or distibution facilities"),
+ sa.Column('iso_rto_code', sa.Text(), nullable=True, comment="The code of the plant's ISO or RTO. NA if not reported in that year."),
+ sa.Column('liquefied_natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have the capability to store the natural gas in the form of liquefied natural gas.'),
+ sa.Column('natural_gas_local_distribution_company', sa.Text(), nullable=True, comment='Names of Local Distribution Company (LDC), connected to natural gas burning power plants.'),
+ sa.Column('natural_gas_storage', sa.Boolean(), nullable=True, comment='Indicates if the facility have on-site storage of natural gas.'),
+ sa.Column('natural_gas_pipeline_name_1', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_2', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('natural_gas_pipeline_name_3', sa.Text(), nullable=True, comment='The name of the owner or operator of natural gas pipeline that connects directly to this facility or that connects to a lateral pipeline owned by this facility.'),
+ sa.Column('nerc_region', sa.Enum('BASN', 'CALN', 'CALS', 'DSW', 'ASCC', 'ISONE', 'ERCOT', 'NORW', 'NYISO', 'PJM', 'ROCK', 'ECAR', 'FRCC', 'HICC', 'MAAC', 'MAIN', 'MAPP', 'MRO', 'NPCC', 'RFC', 'SERC', 'SPP', 'TRE', 'WECC', 'WSCC', 'MISO', 'ECAR_MAAC', 'MAPP_WECC', 'RFC_SERC', 'SPP_WECC', 'MRO_WECC', 'ERCOT_SPP', 'SPP_TRE', 'ERCOT_TRE', 'MISO_TRE', 'VI', 'GU', 'PR', 'AS', 'UNK'), nullable=True, comment='NERC region in which the plant is located'),
+ sa.Column('net_metering', sa.Boolean(), nullable=True, comment='Did this plant have a net metering agreement in effect during the reporting year? (Only displayed for facilities that report the sun or wind as an energy source). This field was only reported up until 2015'),
+ sa.Column('pipeline_notes', sa.Text(), nullable=True, comment='Additional owner or operator of natural gas pipeline.'),
+ sa.Column('primary_purpose_id_naics', sa.Integer(), nullable=True, comment='North American Industry Classification System (NAICS) code that best describes the primary purpose of the reporting plant'),
+ sa.Column('regulatory_status_code', sa.Text(), nullable=True, comment='Indicates whether the plant is regulated or non-regulated.'),
+ sa.Column('reporting_frequency_code', sa.Enum('A', 'AM', 'M'), nullable=True, comment='Code that specifies what time period data has to be reported (i.e. monthly data or annual totals) and how often the power plant reports this data to EIA. See reporting_frequencies_eia for more details.'),
+ sa.Column('sector_id_eia', sa.Integer(), nullable=True, comment='EIA assigned sector ID, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('sector_name_eia', sa.Text(), nullable=True, comment='EIA assigned sector name, corresponding to high level NAICS sector, designated by the primary purpose, regulatory status and plant-level combined heat and power status'),
+ sa.Column('service_area', sa.Text(), nullable=True, comment="Service area in which plant is located; for unregulated companies, it's the electric utility with which plant is interconnected"),
+ sa.Column('transmission_distribution_owner_id', sa.Integer(), nullable=True, comment='EIA-assigned code for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_name', sa.Text(), nullable=True, comment='Name of the owner of the transmission or distribution system to which the plant is interconnected.'),
+ sa.Column('transmission_distribution_owner_state', sa.Text(), nullable=True, comment='State location for owner of transmission/distribution system to which the plant is interconnected.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('water_source', sa.Text(), nullable=True, comment='Name of water source associated with the plant.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('balancing_authority_code_eia_consistent_rate', sa.Float(), nullable=True, comment='Percentage consistency of balancing authority code across entity records.'),
+ sa.ForeignKeyConstraint(['balancing_authority_code_eia'], ['core_eia__codes_balancing_authorities.code'], name=op.f('fk_out_eia__yearly_plants_balancing_authority_code_eia_core_eia__codes_balancing_authorities')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_plants_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'report_date'], ['core_eia860__scd_plants.plant_id_eia', 'core_eia860__scd_plants.report_date'], name=op.f('fk_out_eia__yearly_plants_plant_id_eia_core_eia860__scd_plants')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['reporting_frequency_code'], ['core_eia__codes_reporting_frequencies.code'], name=op.f('fk_out_eia__yearly_plants_reporting_frequency_code_core_eia__codes_reporting_frequencies')),
+ sa.ForeignKeyConstraint(['sector_id_eia'], ['core_eia__codes_sector_consolidated.code'], name=op.f('fk_out_eia__yearly_plants_sector_id_eia_core_eia__codes_sector_consolidated')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plants_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', name=op.f('pk_out_eia__yearly_plants'))
+ )
+ op.create_table('out_ferc1__yearly_all_plants',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_all_plants_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_all_plants'))
+ )
+ op.create_table('out_ferc1__yearly_steam_plants_fuel_by_plant_sched402',
+ sa.Column('report_year', sa.Integer(), nullable=False, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=False, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=False, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('coal_fraction_cost', sa.Float(), nullable=True, comment='Coal cost as a percentage of overall fuel cost.'),
+ sa.Column('coal_fraction_mmbtu', sa.Float(), nullable=True, comment='Coal heat content as a percentage of overall fuel heat content (mmBTU).'),
+ sa.Column('fuel_cost', sa.Float(), nullable=True, comment='Total fuel cost for plant (in $USD).'),
+ sa.Column('fuel_mmbtu', sa.Float(), nullable=True, comment='Total heat content for plant (in MMBtu).'),
+ sa.Column('gas_fraction_cost', sa.Float(), nullable=True, comment='Natural gas cost as a percentage of overall fuel cost.'),
+ sa.Column('gas_fraction_mmbtu', sa.Float(), nullable=True, comment='Natural gas heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('nuclear_fraction_cost', sa.Float(), nullable=True, comment='Nuclear cost as a percentage of overall fuel cost.'),
+ sa.Column('nuclear_fraction_mmbtu', sa.Float(), nullable=True, comment='Nuclear heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('oil_fraction_cost', sa.Float(), nullable=True, comment='Oil cost as a percentage of overall fuel cost.'),
+ sa.Column('oil_fraction_mmbtu', sa.Float(), nullable=True, comment='Oil heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.Column('primary_fuel_by_cost', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of cost.'),
+ sa.Column('primary_fuel_by_mmbtu', sa.Text(), nullable=True, comment='Primary fuel for plant as a percentage of heat content.'),
+ sa.Column('waste_fraction_cost', sa.Float(), nullable=True, comment='Waste-heat cost as a percentage of overall fuel cost.'),
+ sa.Column('waste_fraction_mmbtu', sa.Float(), nullable=True, comment='Waste-heat heat content as a percentage of overall fuel heat content (MMBtu).'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_year', 'utility_id_ferc1', 'plant_name_ferc1', name=op.f('pk_out_ferc1__yearly_steam_plants_fuel_by_plant_sched402'))
+ )
+ op.create_table('out_ferc1__yearly_steam_plants_fuel_sched402',
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_total_cost', sa.Float(), nullable=True, comment='Total cost of consumed fuel.'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_unit_burned', sa.Float(), nullable=True, comment='Average cost of fuel consumed in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_cost_per_unit_delivered', sa.Float(), nullable=True, comment='Average cost of fuel delivered in the report year per reported fuel unit (USD).'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_units', sa.Enum('mmbtu', 'gramsU', 'kg', 'mwhth', 'kgal', 'bbl', 'klbs', 'mcf', 'gal', 'mwdth', 'btu', 'ton'), nullable=True, comment='Reported unit of measure for fuel.'),
+ sa.Column('record_id', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_ferc1__yearly_steam_plants_fuel_sched402_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id', name=op.f('pk_out_ferc1__yearly_steam_plants_fuel_sched402'))
+ )
+ op.create_table('_out_eia__yearly_capacity_factor_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_capacity_factor_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_capacity_factor_by_generator'))
+ )
+ op.create_table('_out_eia__yearly_derived_generator_attributes',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_derived_generator_attributes_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_derived_generator_attributes'))
+ )
+ op.create_table('_out_eia__yearly_fuel_cost_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_fuel_cost_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_fuel_cost_by_generator'))
+ )
+ op.create_table('_out_eia__yearly_generators',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk__out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk__out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk__out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk__out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk__out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk__out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk__out_eia__yearly_generators'))
+ )
+ op.create_table('_out_eia__yearly_heat_rate_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk__out_eia__yearly_heat_rate_by_generator_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk__out_eia__yearly_heat_rate_by_generator'))
+ )
+ op.create_table('core_eia860__assn_boiler_cooling',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('cooling_id_eia', sa.Text(), nullable=False, comment='The cooling system identification number reported to EIA.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_cooling_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_cooling_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'cooling_id_eia', name=op.f('pk_core_eia860__assn_boiler_cooling'))
+ )
+ op.create_table('core_eia860__assn_boiler_generator',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_eia', sa.Text(), nullable=True, comment='EIA-assigned unit identification code.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('boiler_generator_assn_type_code', sa.Text(), nullable=True, comment='Indicates whether boiler associations with generator during the year were actual or theoretical. Only available before 2013.'),
+ sa.Column('steam_plant_type_code', sa.Integer(), nullable=True, comment='Code that describes types of steam plants from EIA 860. See steam_plant_types_eia table for more details.'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['boiler_generator_assn_type_code'], ['core_eia__codes_boiler_generator_assn_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_boiler_generator_assn_type_code_core_eia__codes_boiler_generator_assn_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_boiler_generator_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__assn_boiler_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['steam_plant_type_code'], ['core_eia__codes_steam_plant_types.code'], name=op.f('fk_core_eia860__assn_boiler_generator_steam_plant_type_code_core_eia__codes_steam_plant_types')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'generator_id', 'boiler_id', name=op.f('pk_core_eia860__assn_boiler_generator'))
+ )
+ op.create_table('core_eia860__assn_boiler_stack_flue',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('stack_id_eia', sa.Text(), nullable=True, comment='The stack identification value reported to EIA. Stacks or chimneys are the place where emissions from the combustion process are released into the atmosphere. This field was reported in conjunction with flue_id_eia until 2013 when stack_flue_id_eia took their place.'),
+ sa.Column('flue_id_eia', sa.Text(), nullable=True, comment='The flue identification value reported to EIA. The flue is a duct, pipe, or opening that transports exhast gases through the stack. This field was reported in conjunction with stack_id_eia until 2013 when stack_flue_id_eia took their place.'),
+ sa.Column('stack_flue_id_eia', sa.Text(), nullable=True, comment='The stack or flue identification value reported to EIA. This denotes the place where emissions from the combusion process are released into the atmosphere. Prior to 2013, this was reported as `stack_id_eia` and `flue_id_eia`.'),
+ sa.Column('stack_flue_id_pudl', sa.Text(), nullable=False, comment='A stack and/or flue identification value created by PUDL for use as part of the primary key for the stack flue equipment and boiler association tables. For 2013 and onward, this value is equal to the value for stack_flue_id_eia. Prior to 2013, this value is equal to the value for stack_id_eia and the value for flue_id_eia seperated by an underscore or just the stack_flue_eia in cases where flue_id_eia is NA.'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_boiler_stack_flue_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'stack_flue_id_pudl', name=op.f('pk_core_eia860__assn_boiler_stack_flue'))
+ )
+ op.create_table('core_eia860__assn_yearly_boiler_emissions_control_equipment',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('emission_control_id_type', sa.Text(), nullable=False, comment='The type of emissions control id: so2, nox, particulate, or mercury.'),
+ sa.Column('emission_control_id_eia', sa.Text(), nullable=False, comment="The emission control ID used to collect so2, nox, particulate, and mercury emissions data. This column should be used in conjunction with emissions_control_type as it's not guaranteed to be unique."),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__assn_yearly_boiler_emissions_control_equipment_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_core_eia860__assn_yearly_boiler_emissions_control_equipment_plant_id_eia_core_eia860__scd_boilers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'boiler_id', 'emission_control_id_type', 'emission_control_id_eia', name=op.f('pk_core_eia860__assn_yearly_boiler_emissions_control_equipment'))
+ )
+ op.create_table('core_eia860__scd_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
+ sa.Column('owner_state', sa.Enum('MP', 'ON', 'OR', 'GA', 'IN', 'AR', 'AS', 'AK', 'CT', 'NS', 'AL', 'NM', 'NE', 'ND', 'NH', 'NU', 'IA', 'NL', 'MT', 'PE', 'SD', 'AZ', 'CA', 'DE', 'MD', 'PR', 'NC', 'ID', 'OH', 'QC', 'YT', 'SC', 'VT', 'OK', 'MI', 'NY', 'IL', 'KS', 'VI', 'NB', 'VA', 'SK', 'TX', 'NT', 'WI', 'TN', 'MN', 'ME', 'WV', 'WY', 'NV', 'MB', 'MO', 'DC', 'MA', 'GU', 'FL', 'MS', 'RI', 'BC', 'LA', 'HI', 'WA', 'CO', 'KY', 'AB', 'NJ', 'UT', 'PA'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('owner_country', sa.Enum('CAN', 'USA'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_core_eia860__scd_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_core_eia860__scd_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
+ )
+ op.create_table('mega_generators_eia',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia860__yearly_ownership',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('owner_utility_id_eia', sa.Integer(), nullable=False, comment='The EIA utility Identification number for the owner company that is responsible for the day-to-day operations of the generator, not the operator utility.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('owner_state', sa.Enum('MP', 'ON', 'OR', 'GA', 'IN', 'AR', 'AS', 'AK', 'CT', 'NS', 'AL', 'NM', 'NE', 'ND', 'NH', 'NU', 'IA', 'NL', 'MT', 'PE', 'SD', 'AZ', 'CA', 'DE', 'MD', 'PR', 'NC', 'ID', 'OH', 'QC', 'YT', 'SC', 'VT', 'OK', 'MI', 'NY', 'IL', 'KS', 'VI', 'NB', 'VA', 'SK', 'TX', 'NT', 'WI', 'TN', 'MN', 'ME', 'WV', 'WY', 'NV', 'MB', 'MO', 'DC', 'MA', 'GU', 'FL', 'MS', 'RI', 'BC', 'LA', 'HI', 'WA', 'CO', 'KY', 'AB', 'NJ', 'UT', 'PA'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
+ sa.Column('owner_country', sa.Enum('CAN', 'USA'), nullable=True, comment='Three letter ISO-3166 country code.'),
+ sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
+ sa.Column('owner_zip_code', sa.Text(), nullable=True, comment='Zip code of owner.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia860__yearly_ownership_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['owner_utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia860__yearly_ownership_owner_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia860__yearly_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_out_eia860__yearly_ownership'))
+ )
+ op.create_table('out_eia923__yearly_boiler_fuel',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('fuel_consumed_units', sa.Float(), nullable=True, comment='Consumption of the fuel type in physical unit. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_mmbtu_per_unit', sa.Float(), nullable=True, comment='Heat content of the fuel in millions of Btus per physical unit.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('sulfur_content_pct', sa.Float(), nullable=True, comment='Sulfur content percentage by weight to the nearest 0.01 percent.'),
+ sa.Column('ash_content_pct', sa.Float(), nullable=True, comment='Ash content percentage by weight to the nearest 0.1 percent.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_boiler_fuel_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_boiler_fuel_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'energy_source_code', 'prime_mover_code', 'report_date', name=op.f('pk_out_eia923__yearly_boiler_fuel'))
+ )
+ op.create_table('out_eia923__yearly_generation',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia923__yearly_generation_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', 'report_date', name=op.f('pk_out_eia923__yearly_generation'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source'))
+ )
+ op.create_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=False, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code', sa.Text(), nullable=False, comment='A 2-3 letter code indicating the energy source (e.g. fuel type) associated with the record.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=False, comment='The EIA Utility Identification number.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=False, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('energy_source_code_num', sa.Enum('energy_source_code_1', 'energy_source_code_2', 'energy_source_code_3', 'energy_source_code_4', 'energy_source_code_5', 'energy_source_code_6', 'energy_source_code_7', 'energy_source_code_8'), nullable=True, comment='Name of the energy_source_code_N column that this energy source code was reported in for the generator referenced in the same record.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('fuel_consumed_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel in physical unit, year to date. Note: this is the total quantity consumed for both electricity and, in the case of combined heat and power plants, process steam production.'),
+ sa.Column('fuel_consumed_for_electricity_mmbtu', sa.Float(), nullable=True, comment='Total consumption of fuel to produce electricity, in physical unit, year to date.'),
+ sa.ForeignKeyConstraint(['energy_source_code'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_energy_source_code_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'prime_mover_code', 'energy_source_code', 'utility_id_eia', 'ownership_record_type', name=op.f('pk_out_eia923__yearly_generation_fuel_by_generator_energy_source_owner'))
+ )
+ op.create_table('out_eia__yearly_boilers',
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('boiler_id', sa.Text(), nullable=False, comment='Alphanumeric boiler ID.'),
+ sa.Column('air_flow_100pct_load_cubic_feet_per_minute', sa.Float(), nullable=True, comment='Total air flow including excess air at 100 percent load, reported at standard temperature and pressure (i.e. 68 F and one atmosphere pressure).'),
+ sa.Column('boiler_fuel_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_fuel_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the boiler.'),
+ sa.Column('boiler_manufacturer', sa.Text(), nullable=True, comment='Name of boiler manufacturer.'),
+ sa.Column('boiler_manufacturer_code', sa.Text(), nullable=True, comment='EIA short code for boiler manufacturer.'),
+ sa.Column('boiler_operating_date', sa.Date(), nullable=True, comment='Date the boiler began or is planned to begin commercial operation.'),
+ sa.Column('boiler_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the boiler.'),
+ sa.Column('boiler_status', sa.Text(), nullable=True, comment='EIA short code identifying boiler operational status.'),
+ sa.Column('boiler_type', sa.Text(), nullable=True, comment='EIA short code indicating the standards under which the boiler is operating as described in the U.S. EPA regulation under 40 CFR.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('compliance_year_mercury', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for mercury emissions.'),
+ sa.Column('compliance_year_nox', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for nitrogen oxide emissions.'),
+ sa.Column('compliance_year_particulate', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for particulate matter emissions.'),
+ sa.Column('compliance_year_so2', sa.Integer(), nullable=True, comment='Year boiler was or is expected to be in compliance with federal, state and/or local regulations for sulfur dioxide emissions.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('efficiency_100pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 100 percent load to the nearest 0.1 percent.'),
+ sa.Column('efficiency_50pct_load', sa.Float(), nullable=True, comment='Boiler efficiency percentage when burning at 50 percent load to the nearest 0.1 percent.'),
+ sa.Column('firing_rate_using_coal_tons_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for coal to the nearest 0.1 ton per hour.'),
+ sa.Column('firing_rate_using_gas_mcf_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for gas to the nearest 0.1 cubic feet per hour.'),
+ sa.Column('firing_rate_using_oil_bbls_per_hour', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for pet coke to the nearest 0.1 barrels per hour.'),
+ sa.Column('firing_rate_using_other_fuels', sa.Float(), nullable=True, comment='Design firing rate at maximum continuous steam flow for energy sources other than coal, petroleum, or natural gas.'),
+ sa.Column('firing_type_1', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_2', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('firing_type_3', sa.Text(), nullable=True, comment='EIA short code indicating the type of firing used by this boiler.'),
+ sa.Column('fly_ash_reinjection', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is capable of re-injecting fly ash.'),
+ sa.Column('hrsg', sa.Boolean(), nullable=True, comment='indicates if the boiler is a heat recovery steam generator (HRSG).'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('max_steam_flow_1000_lbs_per_hour', sa.Float(), nullable=True, comment='Maximum continuous steam flow at 100 percent load.'),
+ sa.Column('mercury_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_4', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_5', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_existing_strategy_6', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('mercury_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent mercury regulation.'),
+ sa.Column('new_source_review', sa.Boolean(), nullable=True, comment='Indicates whether the boiler is subject to New Source Review requirements.'),
+ sa.Column('new_source_review_date', sa.Date(), nullable=True, comment='Month of issued New Source Review permit.'),
+ sa.Column('new_source_review_permit', sa.Text(), nullable=True, comment='New Source Review permit number.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_manufacturer', sa.Text(), nullable=True, comment='Name of nitrogen oxide control manufacturer.'),
+ sa.Column('nox_control_manufacturer_code', sa.Text(), nullable=True, comment='Code indicating the nitrogen oxide control burner manufacturer.'),
+ sa.Column('nox_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with nitrogen oxide regulations, strategy for compliance.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the nitrogen oxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('nox_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent nitrogen oxide regulation.'),
+ sa.Column('nox_control_status_code', sa.Text(), nullable=True, comment='Nitrogen oxide control status code.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('particulate_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with particulate matter regulations, strategy for compliance.'),
+ sa.Column('regulation_mercury', sa.Text(), nullable=True, comment='Most stringent type of statute or regulation code under which the boiler is operating for mercury control standards.'),
+ sa.Column('regulation_nox', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for nitrogen oxide control standards.'),
+ sa.Column('regulation_particulate', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for particulate matter control standards.'),
+ sa.Column('regulation_so2', sa.Text(), nullable=True, comment='EIA short code for most stringent type of statute or regulation code under which the boiler is operating for sulfur dioxide control standards.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Existing strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_existing_strategy_1', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_2', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_existing_strategy_3', sa.Text(), nullable=True, comment='Existing strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_out_of_compliance_strategy_1', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_2', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_out_of_compliance_strategy_3', sa.Text(), nullable=True, comment='If boiler is not in compliance with sulfur dioxide regulations, strategy for compliance.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_1', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_2', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_planned_caaa_compliance_strategy_3', sa.Text(), nullable=True, comment='Planned strategies to meet the sulfur dioxide requirements of Title IV of the Clean Air Act Amendment of 1990.'),
+ sa.Column('so2_control_proposed_strategy_1', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_2', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('so2_control_proposed_strategy_3', sa.Text(), nullable=True, comment='Proposed strategy to comply with the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_nox_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('standard_particulate_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('standard_so2_percent_scrubbed', sa.Float(), nullable=True, comment='The percent of sulfur dioxide to be scrubbed specified by the most stringent sulfur dioxide regulation.'),
+ sa.Column('standard_so2_rate', sa.Float(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('turndown_ratio', sa.Float(), nullable=True, comment='The turndown ratio for the boiler.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('unit_nox', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for nitrogen oxide.'),
+ sa.Column('unit_particulate', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for particulate matter.'),
+ sa.Column('unit_so2', sa.Text(), nullable=True, comment='Numeric value for the unit of measurement specified for sulfur dioxide.'),
+ sa.Column('waste_heat_input_mmbtu_per_hour', sa.Float(), nullable=True, comment='Design waste-heat input rate at maximum continuous steam flow where a waste-heat boiler is a boiler that receives all or a substantial portion of its energy input from the noncumbustible exhaust gases of a separate fuel-burning process (MMBtu per hour).'),
+ sa.Column('wet_dry_bottom', sa.Text(), nullable=True, comment='Wet or Dry Bottom where Wet Bottom is defined as slag tanks that are installed at furnace throat to contain and remove molten ash from the furnace, and Dry Bottom is defined as having no slag tanks at furnace throat area, throat area is clear, and bottom ash drops through throat to bottom ash water hoppers.'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_fuel_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_fuel_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['boiler_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['boiler_status'], ['core_eia__codes_boiler_status.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_status_core_eia__codes_boiler_status')),
+ sa.ForeignKeyConstraint(['boiler_type'], ['core_eia__codes_boiler_types.code'], name=op.f('fk_out_eia__yearly_boilers_boiler_type_core_eia__codes_boiler_types')),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_boilers_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['firing_type_1'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_1_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_2'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_2_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['firing_type_3'], ['core_eia__codes_firing_types.code'], name=op.f('fk_out_eia__yearly_boilers_firing_type_3_core_eia__codes_firing_types')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_4'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_4_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_5'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_5_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_existing_strategy_6'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_existing_strategy_6_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_1'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_1_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_2'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_2_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['mercury_control_proposed_strategy_3'], ['core_eia__codes_mercury_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_mercury_control_proposed_strategy_3_core_eia__codes_mercury_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_existing_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_manufacturer_code'], ['core_eia__codes_environmental_equipment_manufacturers.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_manufacturer_code_core_eia__codes_environmental_equipment_manufacturers')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_out_of_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_out_of_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_1_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_2_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_nox_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_planned_caaa_compliance_strategy_3_core_eia__codes_nox_compliance_strategies')),
+ sa.ForeignKeyConstraint(['nox_control_status_code'], ['core_eia__codes_nox_control_status.code'], name=op.f('fk_out_eia__yearly_boilers_nox_control_status_code_core_eia__codes_nox_control_status')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_1'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_1_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_2'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_2_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['particulate_control_out_of_compliance_strategy_3'], ['core_eia__codes_particulate_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_particulate_control_out_of_compliance_strategy_3_core_eia__codes_particulate_compliance_strategies')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'boiler_id', 'report_date'], ['core_eia860__scd_boilers.plant_id_eia', 'core_eia860__scd_boilers.boiler_id', 'core_eia860__scd_boilers.report_date'], name=op.f('fk_out_eia__yearly_boilers_plant_id_eia_core_eia860__scd_boilers')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['regulation_mercury'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_mercury_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_nox'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_nox_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_particulate'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_particulate_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['regulation_so2'], ['core_eia__codes_regulations.code'], name=op.f('fk_out_eia__yearly_boilers_regulation_so2_core_eia__codes_regulations')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_existing_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_existing_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_out_of_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_out_of_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_1'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_1_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_2'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_2_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['so2_control_planned_caaa_compliance_strategy_3'], ['core_eia__codes_so2_compliance_strategies.code'], name=op.f('fk_out_eia__yearly_boilers_so2_control_planned_caaa_compliance_strategy_3_core_eia__codes_so2_compliance_strategies')),
+ sa.ForeignKeyConstraint(['unit_nox'], ['core_eia__codes_nox_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_nox_core_eia__codes_nox_units')),
+ sa.ForeignKeyConstraint(['unit_particulate'], ['core_eia__codes_particulate_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_particulate_core_eia__codes_particulate_units')),
+ sa.ForeignKeyConstraint(['unit_so2'], ['core_eia__codes_so2_units.code'], name=op.f('fk_out_eia__yearly_boilers_unit_so2_core_eia__codes_so2_units')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_boilers_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_boilers_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.ForeignKeyConstraint(['wet_dry_bottom'], ['core_eia__codes_wet_dry_bottom.code'], name=op.f('fk_out_eia__yearly_boilers_wet_dry_bottom_core_eia__codes_wet_dry_bottom')),
+ sa.PrimaryKeyConstraint('plant_id_eia', 'boiler_id', 'report_date', name=op.f('pk_out_eia__yearly_boilers'))
+ )
+ op.create_table('out_eia__yearly_generators',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('associated_combined_heat_power', sa.Boolean(), nullable=True, comment='Indicates whether the generator is associated with a combined heat and power system'),
+ sa.Column('bga_source', sa.Text(), nullable=True, comment='The source from where the unit_id_pudl is compiled. The unit_id_pudl comes directly from EIA 860, or string association (which looks at all the boilers and generators that are not associated with a unit and tries to find a matching string in the respective collection of boilers or generator), or from a unit connection (where the unit_id_eia is employed to find additional boiler generator connections).'),
+ sa.Column('bypass_heat_recovery', sa.Boolean(), nullable=True, comment='Can this generator operate while bypassing the heat recovery steam generator?'),
+ sa.Column('carbon_capture', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses carbon capture technology.'),
+ sa.Column('city', sa.Text(), nullable=True),
+ sa.Column('cofire_fuels', sa.Boolean(), nullable=True, comment='Can the generator co-fire fuels?.'),
+ sa.Column('county', sa.Text(), nullable=True, comment='County name.'),
+ sa.Column('current_planned_generator_operating_date', sa.Date(), nullable=True, comment='The most recently updated effective date on which the generator is scheduled to start operation'),
+ sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'),
+ sa.Column('deliver_power_transgrid', sa.Boolean(), nullable=True, comment='Indicate whether the generator can deliver power to the transmission grid.'),
+ sa.Column('distributed_generation', sa.Boolean(), nullable=True, comment='Whether the generator is considered distributed generation'),
+ sa.Column('duct_burners', sa.Boolean(), nullable=True, comment='Indicates whether the unit has duct-burners for supplementary firing of the turbine exhaust gas'),
+ sa.Column('energy_source_1_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 1.'),
+ sa.Column('energy_source_1_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 1.'),
+ sa.Column('energy_source_2_transport_1', sa.Text(), nullable=True, comment='Primary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_2', sa.Text(), nullable=True, comment='Secondary mode of transport for energy source 2.'),
+ sa.Column('energy_source_2_transport_3', sa.Text(), nullable=True, comment='Tertiary mode of transport for energy source 2.'),
+ sa.Column('energy_source_code_2', sa.Text(), nullable=True, comment='The code representing the second most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_3', sa.Text(), nullable=True, comment='The code representing the third most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_4', sa.Text(), nullable=True, comment='The code representing the fourth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_5', sa.Text(), nullable=True, comment='The code representing the fifth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_source_code_6', sa.Text(), nullable=True, comment='The code representing the sixth most predominant type of energy that fuels the generator'),
+ sa.Column('energy_storage_capacity_mwh', sa.Float(), nullable=True, comment='Energy storage capacity in MWh (e.g. for batteries).'),
+ sa.Column('ferc_qualifying_facility', sa.Boolean(), nullable=True, comment='Indicatates whether or not a generator is a qualifying FERC cogeneation facility.'),
+ sa.Column('fluidized_bed_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses fluidized bed technology'),
+ sa.Column('fuel_type_count', sa.Integer(), nullable=True, comment='A count of how many different simple energy sources there are associated with a generator.'),
+ sa.Column('latitude', sa.Float(), nullable=True, comment="Latitude of the plant's location, in degrees."),
+ sa.Column('longitude', sa.Float(), nullable=True, comment="Longitude of the plant's location, in degrees."),
+ sa.Column('minimum_load_mw', sa.Float(), nullable=True, comment='The minimum load at which the generator can operate at continuosuly.'),
+ sa.Column('multiple_fuels', sa.Boolean(), nullable=True, comment='Can the generator burn multiple fuels?'),
+ sa.Column('nameplate_power_factor', sa.Float(), nullable=True, comment='The nameplate power factor of the generator.'),
+ sa.Column('net_capacity_mwdc', sa.Float(), nullable=True, comment='Generation capacity in megawatts of direct current that is subject to a net metering agreement. Typically used for behind-the-meter solar PV.'),
+ sa.Column('operating_switch', sa.Text(), nullable=True, comment='Indicates whether the fuel switching generator can switch when operating'),
+ sa.Column('operational_status_code', sa.Text(), nullable=True, comment='The operating status of the asset.'),
+ sa.Column('original_planned_generator_operating_date', sa.Date(), nullable=True, comment='The date the generator was originally scheduled to be operational'),
+ sa.Column('other_combustion_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses other combustion technologies'),
+ sa.Column('other_modifications_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter commercial operation after any other planned modification is complete.'),
+ sa.Column('other_planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are there other modifications planned for the generator.'),
+ sa.Column('owned_by_non_utility', sa.Boolean(), nullable=True, comment='Whether any part of generator is owned by a nonutilty'),
+ sa.Column('ownership_code', sa.Text(), nullable=True, comment='Identifies the ownership for each generator.'),
+ sa.Column('planned_derate_date', sa.Date(), nullable=True, comment='Planned effective month that the generator is scheduled to enter operation after the derate modification.'),
+ sa.Column('planned_energy_source_code_1', sa.Text(), nullable=True, comment='New energy source code for the planned repowered generator.'),
+ sa.Column('planned_modifications', sa.Boolean(), nullable=True, comment='Indicates whether there are any planned capacity uprates/derates, repowering, other modifications, or generator retirements scheduled for the next 5 years.'),
+ sa.Column('planned_net_summer_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in summer capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_summer_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in summer capacity expected to be realized from the modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_derate_mw', sa.Float(), nullable=True, comment='Decrease in winter capacity expected to be realized from the derate modification to the equipment.'),
+ sa.Column('planned_net_winter_capacity_uprate_mw', sa.Float(), nullable=True, comment='Increase in winter capacity expected to be realized from the uprate modification to the equipment.'),
+ sa.Column('planned_new_capacity_mw', sa.Float(), nullable=True, comment='The expected new namplate capacity for the generator.'),
+ sa.Column('planned_new_prime_mover_code', sa.Text(), nullable=True, comment='New prime mover for the planned repowered generator.'),
+ sa.Column('planned_repower_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the repowering is complete.'),
+ sa.Column('planned_uprate_date', sa.Date(), nullable=True, comment='Planned effective date that the generator is scheduled to enter operation after the uprate modification.'),
+ sa.Column('previously_canceled', sa.Boolean(), nullable=True, comment='Indicates whether the generator was previously reported as indefinitely postponed or canceled'),
+ sa.Column('pulverized_coal_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses pulverized coal technology'),
+ sa.Column('reactive_power_output_mvar', sa.Float(), nullable=True, comment='Reactive Power Output (MVAr)'),
+ sa.Column('rto_iso_lmp_node_id', sa.Text(), nullable=True, comment='The designation used to identify the price node in RTO/ISO Locational Marginal Price reports'),
+ sa.Column('rto_iso_location_wholesale_reporting_id', sa.Text(), nullable=True, comment='The designation used to report ths specific location of the wholesale sales transactions to FERC for the Electric Quarterly Report'),
+ sa.Column('solid_fuel_gasification', sa.Boolean(), nullable=True, comment='Indicates whether the generator is part of a solid fuel gasification system'),
+ sa.Column('startup_source_code_1', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_2', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_3', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('startup_source_code_4', sa.Text(), nullable=True, comment='The code representing the first, second, third or fourth start-up and flame stabilization energy source used by the combustion unit(s) associated with this generator.'),
+ sa.Column('state', sa.Text(), nullable=True, comment='Two letter US state abbreviation.'),
+ sa.Column('stoker_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses stoker technology'),
+ sa.Column('street_address', sa.Text(), nullable=True),
+ sa.Column('subcritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses subcritical technology'),
+ sa.Column('summer_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the summer capacity value was an estimate'),
+ sa.Column('summer_capacity_mw', sa.Float(), nullable=True, comment='The net summer capacity.'),
+ sa.Column('summer_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated summer capacity (in MWh).'),
+ sa.Column('supercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses supercritical technology'),
+ sa.Column('switch_oil_gas', sa.Boolean(), nullable=True, comment='Indicates whether the generator switch between oil and natural gas.'),
+ sa.Column('syncronized_transmission_grid', sa.Boolean(), nullable=True, comment='Indicates whether standby generators (SB status) can be synchronized to the grid.'),
+ sa.Column('time_cold_shutdown_full_load_code', sa.Text(), nullable=True, comment='The minimum amount of time required to bring the unit to full load from shutdown.'),
+ sa.Column('timezone', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name'),
+ sa.Column('topping_bottoming_code', sa.Text(), nullable=True, comment='If the generator is associated with a combined heat and power system, indicates whether the generator is part of a topping cycle or a bottoming cycle'),
+ sa.Column('turbines_inverters_hydrokinetics', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('turbines_num', sa.Integer(), nullable=True, comment='Number of wind turbines, or hydrokinetic buoys.'),
+ sa.Column('ultrasupercritical_tech', sa.Boolean(), nullable=True, comment='Indicates whether the generator uses ultra-supercritical technology'),
+ sa.Column('uprate_derate_completed_date', sa.Date(), nullable=True, comment='The date when the uprate or derate was completed.'),
+ sa.Column('uprate_derate_during_year', sa.Boolean(), nullable=True, comment='Was an uprate or derate completed on this generator during the reporting year?'),
+ sa.Column('winter_capacity_estimate', sa.Boolean(), nullable=True, comment='Whether the winter capacity value was an estimate'),
+ sa.Column('winter_capacity_mw', sa.Float(), nullable=True, comment='The net winter capacity.'),
+ sa.Column('winter_estimated_capability_mw', sa.Float(), nullable=True, comment='EIA estimated winter capacity (in MWh).'),
+ sa.Column('zip_code', sa.Text(), nullable=True, comment='Five digit US Zip Code.'),
+ sa.ForeignKeyConstraint(['data_maturity'], ['core_pudl__codes_data_maturities.code'], name=op.f('fk_out_eia__yearly_generators_data_maturity_core_pudl__codes_data_maturities')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_1_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_1_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_1'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_1_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_2'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_2_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_2_transport_3'], ['core_eia__codes_fuel_transportation_modes.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_2_transport_3_core_eia__codes_fuel_transportation_modes')),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_5'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_5_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['energy_source_code_6'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_energy_source_code_6_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['operational_status_code'], ['core_eia__codes_operational_status.code'], name=op.f('fk_out_eia__yearly_generators_operational_status_code_core_eia__codes_operational_status')),
+ sa.ForeignKeyConstraint(['planned_energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_planned_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['planned_new_prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_planned_new_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['startup_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_2'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_2_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_3'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_3_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['startup_source_code_4'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_startup_source_code_4_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', name=op.f('pk_out_eia__yearly_generators'))
+ )
+ op.create_table('out_eia__yearly_generators_by_ownership',
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_generators_by_ownership_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_generators_by_ownership_utility_id_pudl_core_pudl__entity_utilities_pudl'))
+ )
+ op.create_table('out_eia__yearly_plant_parts',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_prime_fuel', 'plant_technology', 'plant_match_ferc1', 'plant_unit', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_prime_fuel', 'plant_technology', 'plant_match_ferc1', 'plant_unit', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_eia__yearly_plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_eia__yearly_plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_eia__yearly_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_out_eia__yearly_plant_parts'))
+ )
+ op.create_table('out_pudl__yearly_assn_eia_ferc1_plant_parts',
+ sa.Column('record_id_ferc1', sa.Text(), nullable=False, comment='Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.'),
+ sa.Column('record_id_eia', sa.Text(), nullable=True, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('match_type', sa.Text(), nullable=True, comment='Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_prime_fuel', 'plant_technology', 'plant_match_ferc1', 'plant_unit', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_prime_fuel', 'plant_technology', 'plant_match_ferc1', 'plant_unit', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('total_fuel_cost_eia', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('fuel_cost_per_mmbtu_eia', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('net_generation_mwh_eia', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('capacity_mw_eia', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capacity_factor_eia', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('total_mmbtu_eia', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('heat_rate_mmbtu_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('fuel_type_code_pudl_eia', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('installation_year_eia', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('utility_id_ferc1', sa.Integer(), nullable=True, comment='PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.'),
+ sa.Column('utility_name_ferc1', sa.Text(), nullable=True, comment='Name of the responding utility, as it is reported in FERC Form 1. For human readability only.'),
+ sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
+ sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
+ sa.Column('asset_retirement_cost', sa.Float(), nullable=True, comment='Asset retirement cost (USD).'),
+ sa.Column('avg_num_employees', sa.Float(), nullable=True),
+ sa.Column('capacity_factor_ferc1', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw_ferc1', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('capex_annual_addition', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total`.'),
+ sa.Column('capex_annual_addition_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total`.'),
+ sa.Column('capex_annual_per_kw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per kw.'),
+ sa.Column('capex_annual_per_mw', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mw_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MW.'),
+ sa.Column('capex_annual_per_mwh', sa.Float(), nullable=True, comment='Annual capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_annual_per_mwh_rolling', sa.Float(), nullable=True, comment='Year-to-date capital addition into `capex_total` per MWh.'),
+ sa.Column('capex_equipment', sa.Float(), nullable=True, comment='Cost of plant: equipment (USD).'),
+ sa.Column('capex_land', sa.Float(), nullable=True, comment='Cost of plant: land and land rights (USD).'),
+ sa.Column('capex_per_mw', sa.Float(), nullable=True, comment='Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.'),
+ sa.Column('capex_structures', sa.Float(), nullable=True, comment='Cost of plant: structures and improvements (USD).'),
+ sa.Column('capex_total', sa.Float(), nullable=True, comment='Total cost of plant (USD).'),
+ sa.Column('capex_wo_retirement_total', sa.Float(), nullable=True, comment='Total cost of plant (USD) without retirements.'),
+ sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
+ sa.Column('construction_year_eia', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('construction_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('installation_year_ferc1', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh_ferc1', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('not_water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when not limited by condenser water.'),
+ sa.Column('opex_allowances', sa.Float(), nullable=True, comment='Allowances.'),
+ sa.Column('opex_boiler', sa.Float(), nullable=True, comment='Maintenance of boiler (or reactor) plant.'),
+ sa.Column('opex_coolants', sa.Float(), nullable=True, comment='Cost of coolants and water (nuclear plants only)'),
+ sa.Column('opex_electric', sa.Float(), nullable=True, comment='Production expenses: electric expenses (USD).'),
+ sa.Column('opex_engineering', sa.Float(), nullable=True, comment='Production expenses: maintenance, supervision, and engineering (USD).'),
+ sa.Column('opex_fuel', sa.Float(), nullable=True, comment='Production expenses: fuel (USD).'),
+ sa.Column('fuel_cost_per_mwh_eia', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh_ferc1', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('opex_misc_power', sa.Float(), nullable=True, comment='Miscellaneous steam (or nuclear) expenses.'),
+ sa.Column('opex_misc_steam', sa.Float(), nullable=True, comment='Maintenance of miscellaneous steam (or nuclear) plant.'),
+ sa.Column('opex_nonfuel_per_mwh', sa.Float(), nullable=True, comment='Investments in non-fuel production expenses per Mwh.'),
+ sa.Column('opex_operations', sa.Float(), nullable=True, comment='Production expenses: operations, supervision, and engineering (USD).'),
+ sa.Column('opex_per_mwh', sa.Float(), nullable=True, comment='Total production expenses (USD per MWh generated).'),
+ sa.Column('opex_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of electric plant (USD).'),
+ sa.Column('opex_production_total', sa.Float(), nullable=True, comment='Total operating expenses.'),
+ sa.Column('opex_rents', sa.Float(), nullable=True, comment='Production expenses: rents (USD).'),
+ sa.Column('opex_steam', sa.Float(), nullable=True, comment='Steam expenses.'),
+ sa.Column('opex_steam_other', sa.Float(), nullable=True, comment='Steam from other sources.'),
+ sa.Column('opex_structures', sa.Float(), nullable=True, comment='Production expenses: maintenance of structures (USD).'),
+ sa.Column('opex_total_nonfuel', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('opex_transfer', sa.Float(), nullable=True, comment='Steam transferred (Credit).'),
+ sa.Column('peak_demand_mw', sa.Float(), nullable=True, comment='Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.'),
+ sa.Column('plant_capability_mw', sa.Float(), nullable=True, comment='Net plant capability in megawatts.'),
+ sa.Column('plant_hours_connected_while_generating', sa.Float(), nullable=True, comment='Hours the plant was connected to load while generating in the report year.'),
+ sa.Column('plant_type', sa.Text(), nullable=True),
+ sa.Column('water_limited_capacity_mw', sa.Float(), nullable=True, comment='Plant capacity in MW when limited by condenser water.'),
+ sa.Column('fuel_cost_per_mmbtu_ferc1', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_type', sa.Text(), nullable=True),
+ sa.Column('license_id_ferc1', sa.Integer(), nullable=True, comment='FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.'),
+ sa.Column('opex_maintenance', sa.Float(), nullable=True, comment='Production expenses: Maintenance (USD).'),
+ sa.Column('opex_total', sa.Float(), nullable=True, comment='Total production expenses, excluding fuel (USD).'),
+ sa.Column('capex_facilities', sa.Float(), nullable=True, comment='Cost of plant: reservoirs, dams, and waterways (USD).'),
+ sa.Column('capex_roads', sa.Float(), nullable=True, comment='Cost of plant: roads, railroads, and bridges (USD).'),
+ sa.Column('net_capacity_adverse_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the least favorable operating conditions, in megawatts.'),
+ sa.Column('net_capacity_favorable_conditions_mw', sa.Float(), nullable=True, comment='Net plant capability under the most favorable operating conditions, in megawatts.'),
+ sa.Column('opex_dams', sa.Float(), nullable=True, comment='Production expenses: maintenance of reservoirs, dams, and waterways (USD).'),
+ sa.Column('opex_generation_misc', sa.Float(), nullable=True, comment='Production expenses: miscellaneous power generation expenses (USD).'),
+ sa.Column('opex_hydraulic', sa.Float(), nullable=True, comment='Production expenses: hydraulic expenses (USD).'),
+ sa.Column('opex_misc_plant', sa.Float(), nullable=True, comment='Production expenses: maintenance of miscellaneous hydraulic plant (USD).'),
+ sa.Column('opex_water_for_power', sa.Float(), nullable=True, comment='Production expenses: water for power (USD).'),
+ sa.Column('ferc_license_id', sa.Text(), nullable=True, comment='The FERC license ID of a project.'),
+ sa.Column('capex_equipment_electric', sa.Float(), nullable=True, comment='Cost of plant: accessory electric equipment (USD).'),
+ sa.Column('capex_equipment_misc', sa.Float(), nullable=True, comment='Cost of plant: miscellaneous power plant equipment (USD).'),
+ sa.Column('capex_wheels_turbines_generators', sa.Float(), nullable=True, comment='Cost of plant: water wheels, turbines, and generators (USD).'),
+ sa.Column('energy_used_for_pumping_mwh', sa.Float(), nullable=True, comment='Energy used for pumping, in megawatt-hours.'),
+ sa.Column('net_load_mwh', sa.Float(), nullable=True, comment='Net output for load (net generation - energy used for pumping) in megawatt-hours.'),
+ sa.Column('opex_production_before_pumping', sa.Float(), nullable=True, comment='Total production expenses before pumping (USD).'),
+ sa.Column('opex_pumped_storage', sa.Float(), nullable=True, comment='Production expenses: pumped storage (USD).'),
+ sa.Column('opex_pumping', sa.Float(), nullable=True, comment='Production expenses: We are here to PUMP YOU UP! (USD).'),
+ sa.Column('total_fuel_cost_ferc1', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu_ferc1', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('fuel_type_code_pudl_ferc1', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_ferc1', 'plant_name_ferc1'], ['core_pudl__assn_ferc1_pudl_plants.utility_id_ferc1', 'core_pudl__assn_ferc1_pudl_plants.plant_name_ferc1'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_ferc1_core_pudl__assn_ferc1_pudl_plants')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_ferc1', name=op.f('pk_out_pudl__yearly_assn_eia_ferc1_plant_parts'))
+ )
+ op.create_table('plant_parts_eia',
+ sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
+ sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
+ sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
+ sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_prime_fuel', 'plant_technology', 'plant_match_ferc1', 'plant_unit', 'plant_operating_year'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
+ sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
+ sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
+ sa.Column('energy_source_code_1', sa.Enum('SUB', 'PUR', 'SGP', 'WH', 'ANT', 'SG', 'NUC', 'TDF', 'LFG', 'NG', 'BFG', 'BIT', 'LIG', 'BLQ', 'WDS', 'KER', 'PC', 'OTH', 'WND', 'SGC', 'SLW', 'MSW', 'OBL', 'RC', 'MSN', 'OG', 'OBS', 'MSB', 'SC', 'WDL', 'WC', 'PG', 'OBG', 'GEO', 'MWH', 'WO', 'SUN', 'AB', 'DFO', 'JF', 'WAT', 'RFO'), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
+ sa.Column('technology_description', sa.Enum('Natural Gas Internal Combustion Engine', 'Batteries', 'Other Waste Biomass', 'All Other', 'Hydrokinetic', 'Landfill Gas', 'Nuclear', 'Natural Gas Steam Turbine', 'Municipal Solid Waste', 'Solar Thermal without Energy Storage', 'Solar Thermal with Energy Storage', 'Other Gases', 'Natural Gas with Compressed Air Storage', 'Natural Gas Fired Combustion Turbine', 'Offshore Wind Turbine', 'Petroleum Liquids', 'Geothermal', 'Natural Gas Fired Combined Cycle', 'Conventional Hydroelectric', 'Coal Integrated Gasification Combined Cycle', 'Flywheels', 'Solar Photovoltaic', 'Wood/Wood Waste Biomass', 'Petroleum Coke', 'Other Natural Gas', 'Conventional Steam Coal', 'Onshore Wind Turbine', 'Hydroelectric Pumped Storage'), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
+ sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
+ sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
+ sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
+ sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_prime_mover', 'plant_gen', 'plant', 'plant_prime_fuel', 'plant_technology', 'plant_match_ferc1', 'plant_unit', 'plant_operating_year'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
+ sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
+ sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
+ sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
+ sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
+ sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
+ sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
+ sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
+ sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
+ sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
+ sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
+ sa.Column('heat_rate_mmbtu_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
+ sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
+ sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
+ sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
+ sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
+ sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
+ sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
+ sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
+ sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
+ sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
+ sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
+ sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
+ sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
+ sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
+ sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
+ sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
+ sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
+ sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
+ sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
+ sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
+ sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
+ sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
+ sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
+ sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
+ sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
+ sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_plant_parts_eia'))
+ )
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_table('plant_parts_eia')
+ op.drop_table('out_pudl__yearly_assn_eia_ferc1_plant_parts')
+ op.drop_table('out_eia__yearly_plant_parts')
+ op.drop_table('out_eia__yearly_generators_by_ownership')
+ op.drop_table('out_eia__yearly_generators')
+ op.drop_table('out_eia__yearly_boilers')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source_owner')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__yearly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__yearly_generation')
+ op.drop_table('out_eia923__yearly_boiler_fuel')
+ op.drop_table('out_eia860__yearly_ownership')
+ op.drop_table('mega_generators_eia')
+ op.drop_table('core_eia860__scd_ownership')
+ op.drop_table('core_eia860__assn_yearly_boiler_emissions_control_equipment')
+ op.drop_table('core_eia860__assn_boiler_stack_flue')
+ op.drop_table('core_eia860__assn_boiler_generator')
+ op.drop_table('core_eia860__assn_boiler_cooling')
+ op.drop_table('_out_eia__yearly_heat_rate_by_generator')
+ op.drop_table('_out_eia__yearly_generators')
+ op.drop_table('_out_eia__yearly_fuel_cost_by_generator')
+ op.drop_table('_out_eia__yearly_derived_generator_attributes')
+ op.drop_table('_out_eia__yearly_capacity_factor_by_generator')
+ op.drop_table('out_ferc1__yearly_steam_plants_fuel_sched402')
+ op.drop_table('out_ferc1__yearly_steam_plants_fuel_by_plant_sched402')
+ op.drop_table('out_ferc1__yearly_all_plants')
+ op.drop_table('out_eia__yearly_plants')
+ op.drop_table('out_eia923__yearly_generation_fuel_combined')
+ op.drop_table('out_eia923__yearly_fuel_receipts_costs')
+ op.drop_table('core_ferc1__yearly_steam_plants_sched402')
+ op.drop_table('core_ferc1__yearly_steam_plants_fuel_sched402')
+ op.drop_table('core_ferc1__yearly_small_plants_sched410')
+ op.drop_table('core_ferc1__yearly_pumped_storage_plants_sched408')
+ op.drop_table('core_ferc1__yearly_hydroelectric_plants_sched406')
+ op.drop_table('core_eia860__scd_generators')
+ op.drop_table('core_eia860__scd_boilers')
+ op.drop_table('_out_ferc1__yearly_steam_plants_sched402')
+ op.drop_table('_out_ferc1__yearly_small_plants_sched410')
+ op.drop_table('_out_ferc1__yearly_pumped_storage_plants_sched408')
+ op.drop_table('_out_ferc1__yearly_plants_utilities')
+ op.drop_table('_out_ferc1__yearly_hydroelectric_plants_sched406')
+ op.drop_table('_out_eia__yearly_heat_rate_by_unit')
+ op.drop_table('_out_eia__plants_utilities')
+ op.drop_table('out_ferc1__yearly_utility_plant_summary_sched200')
+ op.drop_table('out_ferc1__yearly_transmission_lines_sched422')
+ op.drop_table('out_ferc1__yearly_sales_by_rate_schedules_sched304')
+ op.drop_table('out_ferc1__yearly_retained_earnings_sched118')
+ op.drop_table('out_ferc1__yearly_purchased_power_and_exchanges_sched326')
+ op.drop_table('out_ferc1__yearly_plant_in_service_sched204')
+ op.drop_table('out_ferc1__yearly_other_regulatory_liabilities_sched278')
+ op.drop_table('out_ferc1__yearly_operating_revenues_sched300')
+ op.drop_table('out_ferc1__yearly_operating_expenses_sched320')
+ op.drop_table('out_ferc1__yearly_income_statements_sched114')
+ op.drop_table('out_ferc1__yearly_energy_sources_sched401')
+ op.drop_table('out_ferc1__yearly_energy_dispositions_sched401')
+ op.drop_table('out_ferc1__yearly_depreciation_summary_sched336')
+ op.drop_table('out_ferc1__yearly_depreciation_changes_sched219')
+ op.drop_table('out_ferc1__yearly_depreciation_by_function_sched219')
+ op.drop_table('out_ferc1__yearly_cash_flows_sched120')
+ op.drop_table('out_ferc1__yearly_balance_sheet_liabilities_sched110')
+ op.drop_table('out_ferc1__yearly_balance_sheet_assets_sched110')
+ op.drop_table('out_eia__yearly_utilities')
+ op.drop_table('out_eia__monthly_generators')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator_energy_source')
+ op.drop_table('out_eia923__monthly_generation_fuel_by_generator')
+ op.drop_table('out_eia923__monthly_generation')
+ op.drop_table('out_eia923__monthly_boiler_fuel')
+ op.drop_table('out_eia923__generation')
+ op.drop_table('out_eia923__boiler_fuel')
+ op.drop_table('core_pudl__assn_ferc1_xbrl_pudl_utilities')
+ op.drop_table('core_pudl__assn_ferc1_pudl_plants')
+ op.drop_table('core_pudl__assn_ferc1_dbf_pudl_utilities')
+ op.drop_table('core_ferc1__yearly_utility_plant_summary_sched200')
+ op.drop_table('core_ferc1__yearly_transmission_lines_sched422')
+ op.drop_table('core_ferc1__yearly_sales_by_rate_schedules_sched304')
+ op.drop_table('core_ferc1__yearly_retained_earnings_sched118')
+ op.drop_table('core_ferc1__yearly_purchased_power_and_exchanges_sched326')
+ op.drop_table('core_ferc1__yearly_plant_in_service_sched204')
+ op.drop_table('core_ferc1__yearly_other_regulatory_liabilities_sched278')
+ op.drop_table('core_ferc1__yearly_operating_revenues_sched300')
+ op.drop_table('core_ferc1__yearly_operating_expenses_sched320')
+ op.drop_table('core_ferc1__yearly_income_statements_sched114')
+ op.drop_table('core_ferc1__yearly_energy_sources_sched401')
+ op.drop_table('core_ferc1__yearly_energy_dispositions_sched401')
+ op.drop_table('core_ferc1__yearly_depreciation_summary_sched336')
+ op.drop_table('core_ferc1__yearly_depreciation_changes_sched219')
+ op.drop_table('core_ferc1__yearly_depreciation_by_function_sched219')
+ op.drop_table('core_ferc1__yearly_cash_flows_sched120')
+ op.drop_table('core_ferc1__yearly_balance_sheet_liabilities_sched110')
+ op.drop_table('core_ferc1__yearly_balance_sheet_assets_sched110')
+ op.drop_table('core_epa__assn_eia_epacamd')
+ op.drop_table('core_eia923__monthly_generation')
+ op.drop_table('core_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('core_eia923__monthly_boiler_fuel')
+ op.drop_table('core_eia860__scd_plants')
+ op.drop_table('_out_eia__monthly_heat_rate_by_generator')
+ op.drop_table('_out_eia__monthly_fuel_cost_by_generator')
+ op.drop_table('_out_eia__monthly_derived_generator_attributes')
+ op.drop_table('_out_eia__monthly_capacity_factor_by_generator')
+ op.drop_table('out_ferc714__summarized_demand')
+ op.drop_table('out_ferc714__respondents_with_fips')
+ op.drop_table('out_eia923__monthly_generation_fuel_combined')
+ op.drop_table('out_eia923__monthly_fuel_receipts_costs')
+ op.drop_table('out_eia923__generation_fuel_combined')
+ op.drop_table('out_eia923__fuel_receipts_costs')
+ op.drop_table('out_eia860__yearly_emissions_control_equipment')
+ op.drop_table('core_pudl__assn_utilities_plants')
+ op.drop_table('core_pudl__assn_ferc1_pudl_utilities')
+ op.drop_table('core_pudl__assn_eia_pudl_utilities')
+ op.drop_table('core_pudl__assn_eia_pudl_plants')
+ op.drop_table('core_ferc714__hourly_demand_pa')
+ op.drop_table('core_eia__entity_generators')
+ op.drop_table('core_eia__entity_boilers')
+ op.drop_table('core_eia923__monthly_generation_fuel_nuclear')
+ op.drop_table('core_eia923__monthly_generation_fuel')
+ op.drop_table('core_eia923__entity_coalmine')
+ op.drop_table('core_eia861__yearly_utility_data_rto')
+ op.drop_table('core_eia861__yearly_utility_data_nerc')
+ op.drop_table('core_eia861__yearly_utility_data_misc')
+ op.drop_table('core_eia861__yearly_service_territory')
+ op.drop_table('core_eia861__yearly_sales')
+ op.drop_table('core_eia861__yearly_reliability')
+ op.drop_table('core_eia861__yearly_operational_data_revenue')
+ op.drop_table('core_eia861__yearly_operational_data_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_misc')
+ op.drop_table('core_eia861__yearly_non_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_net_metering_misc')
+ op.drop_table('core_eia861__yearly_net_metering_customer_fuel_class')
+ op.drop_table('core_eia861__yearly_mergers')
+ op.drop_table('core_eia861__yearly_green_pricing')
+ op.drop_table('core_eia861__yearly_energy_efficiency')
+ op.drop_table('core_eia861__yearly_dynamic_pricing')
+ op.drop_table('core_eia861__yearly_distribution_systems')
+ op.drop_table('core_eia861__yearly_distributed_generation_tech')
+ op.drop_table('core_eia861__yearly_distributed_generation_misc')
+ op.drop_table('core_eia861__yearly_distributed_generation_fuel')
+ op.drop_table('core_eia861__yearly_demand_side_management_sales')
+ op.drop_table('core_eia861__yearly_demand_side_management_misc')
+ op.drop_table('core_eia861__yearly_demand_side_management_ee_dr')
+ op.drop_table('core_eia861__yearly_demand_response_water_heater')
+ op.drop_table('core_eia861__yearly_demand_response')
+ op.drop_table('core_eia861__yearly_advanced_metering_infrastructure')
+ op.drop_table('core_eia860__scd_utilities')
+ op.drop_table('core_eia860__scd_emissions_control_equipment')
+ op.drop_table('_out_eia__monthly_heat_rate_by_unit')
+ op.drop_table('out_ferc714__hourly_predicted_state_demand')
+ op.drop_table('out_eia861__compiled_geometry_utilities')
+ op.drop_table('out_eia861__compiled_geometry_balancing_authorities')
+ op.drop_table('core_pudl__entity_utilities_pudl')
+ op.drop_table('core_pudl__entity_plants_pudl')
+ op.drop_table('core_pudl__codes_subdivisions')
+ op.drop_table('core_pudl__codes_datasources')
+ op.drop_table('core_pudl__codes_data_maturities')
+ op.drop_table('core_ferc__codes_accounts')
+ op.drop_table('core_ferc714__respondent_id')
+ op.drop_table('core_ferc1__codes_power_purchase_types')
+ op.drop_table('core_epa__assn_eia_epacamd_subplant_ids')
+ op.drop_table('core_eia__yearly_fuel_receipts_costs_aggs')
+ op.drop_table('core_eia__entity_utilities')
+ op.drop_table('core_eia__entity_plants')
+ op.drop_table('core_eia__codes_wet_dry_bottom')
+ op.drop_table('core_eia__codes_steam_plant_types')
+ op.drop_table('core_eia__codes_so2_units')
+ op.drop_table('core_eia__codes_so2_compliance_strategies')
+ op.drop_table('core_eia__codes_sector_consolidated')
+ op.drop_table('core_eia__codes_reporting_frequencies')
+ op.drop_table('core_eia__codes_regulations')
+ op.drop_table('core_eia__codes_prime_movers')
+ op.drop_table('core_eia__codes_particulate_units')
+ op.drop_table('core_eia__codes_particulate_compliance_strategies')
+ op.drop_table('core_eia__codes_operational_status')
+ op.drop_table('core_eia__codes_nox_units')
+ op.drop_table('core_eia__codes_nox_control_status')
+ op.drop_table('core_eia__codes_nox_compliance_strategies')
+ op.drop_table('core_eia__codes_momentary_interruptions')
+ op.drop_table('core_eia__codes_mercury_compliance_strategies')
+ op.drop_table('core_eia__codes_fuel_types_aer')
+ op.drop_table('core_eia__codes_fuel_transportation_modes')
+ op.drop_table('core_eia__codes_firing_types')
+ op.drop_table('core_eia__codes_environmental_equipment_manufacturers')
+ op.drop_table('core_eia__codes_energy_sources')
+ op.drop_table('core_eia__codes_emission_control_equipment_types')
+ op.drop_table('core_eia__codes_contract_types')
+ op.drop_table('core_eia__codes_coalmine_types')
+ op.drop_table('core_eia__codes_boiler_types')
+ op.drop_table('core_eia__codes_boiler_status')
+ op.drop_table('core_eia__codes_boiler_generator_assn_types')
+ op.drop_table('core_eia__codes_balancing_authorities')
+ op.drop_table('core_eia__codes_averaging_periods')
+ op.drop_table('core_eia861__yearly_balancing_authority')
+ op.drop_table('core_eia861__assn_utility')
+ op.drop_table('core_eia861__assn_balancing_authority')
+ # ### end Alembic commands ###
diff --git a/src/pudl/analysis/epacamd_eia.py b/src/pudl/analysis/epacamd_eia.py
index a4b7a53792..d829d3eb34 100644
--- a/src/pudl/analysis/epacamd_eia.py
+++ b/src/pudl/analysis/epacamd_eia.py
@@ -7,8 +7,8 @@
Usage Example:
epacems = pudl.output.epacems.epacems(states=['ID'], years=[2020]) # subset for test
-core_epa__assn_epacamd_eia = pudl_out.epacamd_eia()
-filtered_crosswalk = filter_crosswalk(core_epa__assn_epacamd_eia, epacems)
+core_epa__assn_eia_epacamd = pudl_out.epacamd_eia()
+filtered_crosswalk = filter_crosswalk(core_epa__assn_eia_epacamd, epacems)
crosswalk_with_subplant_ids = pudl.etl.make_subplant_ids(filtered_crosswalk)
"""
@@ -37,18 +37,18 @@ def _get_unique_keys(epacems: pd.DataFrame | dd.DataFrame) -> pd.DataFrame:
def filter_crosswalk_by_epacems(
crosswalk: pd.DataFrame, epacems: pd.DataFrame | dd.DataFrame
) -> pd.DataFrame:
- """Inner join unique CEMS units with the core_epa__assn_epacamd_eia crosswalk.
+ """Inner join unique CEMS units with the core_epa__assn_eia_epacamd crosswalk.
This is essentially an empirical filter on EPA units. Instead of filtering by
construction/retirement dates in the crosswalk (thus assuming they are accurate),
use the presence/absence of CEMS data to filter the units.
Args:
- crosswalk: core_epa__assn_epacamd_eia crosswalk
+ crosswalk: core_epa__assn_eia_epacamd crosswalk
unique_epacems_ids (pd.DataFrame): unique ids from _get_unique_keys
Returns:
- The inner join of the core_epa__assn_epacamd_eia crosswalk and unique epacems units. Adds
+ The inner join of the core_epa__assn_eia_epacamd crosswalk and unique epacems units. Adds
the global ID column unit_id_epa.
"""
unique_epacems_ids = _get_unique_keys(epacems)
@@ -64,10 +64,10 @@ def filter_out_boiler_rows(crosswalk: pd.DataFrame) -> pd.DataFrame:
"""Remove rows that represent graph edges between generators and boilers.
Args:
- crosswalk (pd.DataFrame): core_epa__assn_epacamd_eia crosswalk
+ crosswalk (pd.DataFrame): core_epa__assn_eia_epacamd crosswalk
Returns:
- pd.DataFrame: the core_epa__assn_epacamd_eia crosswalk with boiler rows (many/one-to-many)
+ pd.DataFrame: the core_epa__assn_eia_epacamd crosswalk with boiler rows (many/one-to-many)
removed
"""
crosswalk = crosswalk.drop_duplicates(
@@ -82,12 +82,12 @@ def filter_crosswalk(
"""Remove unmapped crosswalk rows or duplicates due to m2m boiler relationships.
Args:
- crosswalk (pd.DataFrame): The core_epa__assn_epacamd_eia crosswalk.
+ crosswalk (pd.DataFrame): The core_epa__assn_eia_epacamd crosswalk.
epacems (Union[pd.DataFrame, dd.DataFrame]): Emissions data. Must contain
columns named ["plant_id_eia", "emissions_unit_id_epa"]
Returns:
- pd.DataFrame: A filtered copy of core_epa__assn_epacamd_eia crosswalk
+ pd.DataFrame: A filtered copy of core_epa__assn_eia_epacamd crosswalk
"""
filtered_crosswalk = filter_out_boiler_rows(crosswalk)
key_map = filter_crosswalk_by_epacems(filtered_crosswalk, epacems)
diff --git a/src/pudl/etl/epacems_assets.py b/src/pudl/etl/epacems_assets.py
index 67938ddf01..ab3a1b1008 100644
--- a/src/pudl/etl/epacems_assets.py
+++ b/src/pudl/etl/epacems_assets.py
@@ -45,7 +45,7 @@ def get_years_from_settings(context):
def process_single_year(
context,
year,
- core_epa__assn_epacamd_eia: pd.DataFrame,
+ core_epa__assn_eia_epacamd: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
) -> YearPartitions:
"""Process a single year of EPA CEMS data.
@@ -53,7 +53,7 @@ def process_single_year(
Args:
context: dagster keyword that provides access to resources and config.
year: Year of data to process.
- core_epa__assn_epacamd_eia: The EPA EIA crosswalk table used for harmonizing the
+ core_epa__assn_eia_epacamd: The EPA EIA crosswalk table used for harmonizing the
ORISPL code with EIA.
core_eia__entity_plants: The EIA Plant entities used for aligning timezones.
"""
@@ -69,7 +69,7 @@ def process_single_year(
df = pudl.extract.epacems.extract(year=year, state=state, ds=ds)
if not df.empty: # If state-year combination has data
df = pudl.transform.epacems.transform(
- df, core_epa__assn_epacamd_eia, core_eia__entity_plants
+ df, core_epa__assn_eia_epacamd, core_eia__entity_plants
)
table = pa.Table.from_pandas(df, schema=schema, preserve_index=False)
@@ -112,7 +112,7 @@ def consolidate_partitions(context, partitions: list[YearPartitions]) -> None:
@graph_asset
def core_epacems__hourly_emissions(
- _core_epa__assn_epacamd_eia_unique: pd.DataFrame,
+ _core_epa__assn_eia_epacamd_unique: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
) -> None:
"""Extract, transform and load CSVs for EPA CEMS.
@@ -126,7 +126,7 @@ def core_epacems__hourly_emissions(
partitions = years.map(
lambda year: process_single_year(
year,
- _core_epa__assn_epacamd_eia_unique,
+ _core_epa__assn_eia_epacamd_unique,
core_eia__entity_plants,
)
)
diff --git a/src/pudl/etl/glue_assets.py b/src/pudl/etl/glue_assets.py
index 13d7bca9c3..885c54b047 100644
--- a/src/pudl/etl/glue_assets.py
+++ b/src/pudl/etl/glue_assets.py
@@ -19,8 +19,8 @@
outs={
table_name: AssetOut(io_manager_key="pudl_sqlite_io_manager")
for table_name in Package.get_etl_group_tables("glue")
- # do not load core_epa__assn_epacamd_eia glue assets bc they are stand-alone assets below.
- if "core_epa__assn_epacamd_eia" not in table_name
+ # do not load core_epa__assn_eia_epacamd glue assets bc they are stand-alone assets below.
+ if "core_epa__assn_eia_epacamd" not in table_name
},
required_resource_keys={"datastore", "dataset_settings"},
)
@@ -57,7 +57,7 @@ def create_glue_tables(context):
@asset(required_resource_keys={"datastore"})
-def raw_epacamd_eia(context) -> pd.DataFrame:
+def raw_pudl__assn_eia_epacamd(context) -> pd.DataFrame:
"""Extract the EPACAMD-EIA Crosswalk from the Datastore."""
logger.info("Extracting the EPACAMD-EIA crosswalk from Zenodo")
csv_map = {
@@ -79,9 +79,9 @@ def raw_epacamd_eia(context) -> pd.DataFrame:
@asset(
required_resource_keys={"dataset_settings"}, io_manager_key="pudl_sqlite_io_manager"
)
-def core_epa__assn_epacamd_eia(
+def core_epa__assn_eia_epacamd(
context,
- raw_epacamd_eia: pd.DataFrame,
+ raw_pudl__assn_eia_epacamd: pd.DataFrame,
core_eia__entity_generators: pd.DataFrame,
core_eia__entity_boilers: pd.DataFrame,
) -> pd.DataFrame:
@@ -142,7 +142,7 @@ def core_epa__assn_epacamd_eia(
match the EIA860 working partitions. This indicates whether or not to
restrict the crosswalk data so the tests don't fail on foreign key
restraints.
- raw_epacamd_eia: The result of running this module's extract() function.
+ raw_pudl__assn_eia_epacamd: The result of running this module's extract() function.
core_eia__entity_generators: The core_eia__entity_generator table.
core_eia__entity_boilers: The core_eia__entity_boilerstable.
@@ -163,7 +163,7 @@ def core_epa__assn_epacamd_eia(
# Basic column rename, selection, and dtype alignment.
crosswalk_clean = (
- raw_epacamd_eia.pipe(pudl.helpers.simplify_columns)
+ raw_pudl__assn_eia_epacamd.pipe(pudl.helpers.simplify_columns)
.rename(columns=column_rename)
.filter(list(column_rename.values()))
.pipe(
@@ -209,12 +209,12 @@ def core_epa__assn_epacamd_eia(
@asset
-def _core_epa__assn_epacamd_eia_unique(
- core_epa__assn_epacamd_eia: pd.DataFrame,
+def _core_epa__assn_eia_epacamd_unique(
+ core_epa__assn_eia_epacamd: pd.DataFrame,
) -> pd.DataFrame:
- """Intermediate asset that contains all unique core_epa__assn_epacamd_eia matches.
+ """Intermediate asset that contains all unique core_epa__assn_eia_epacamd matches.
- The core_epa__assn_epacamd_eia asset contains crosswalk matches from both 2018 and 2021. This
+ The core_epa__assn_eia_epacamd asset contains crosswalk matches from both 2018 and 2021. This
means there are many duplicate matches found from both years. Several downstream
assets expect these matches to be unique, so this asset will drop duplicates to
serve as the input to those downstream assets. This asset, however, will not itself
@@ -222,26 +222,26 @@ def _core_epa__assn_epacamd_eia_unique(
taking the match from the most recent year (2021).
Args:
- core_epa__assn_epacamd_eia: Cleaned crosswalk with duplicate matches.
+ core_epa__assn_eia_epacamd: Cleaned crosswalk with duplicate matches.
Returns:
Cleaned crosswalk with duplicates removed.
"""
# Drop fully duplicated matches
- core_epa__assn_epacamd_eia = core_epa__assn_epacamd_eia.drop_duplicates(
- subset=core_epa__assn_epacamd_eia.columns.difference(["report_year"])
+ core_epa__assn_eia_epacamd = core_epa__assn_eia_epacamd.drop_duplicates(
+ subset=core_epa__assn_eia_epacamd.columns.difference(["report_year"])
)
# Find mismatches where there are different plant_id_eia values between years for
# the same plant_id_epa and emissions_unit_id_epa value.
- one_to_many = core_epa__assn_epacamd_eia.groupby(
+ one_to_many = core_epa__assn_eia_epacamd.groupby(
["plant_id_epa", "emissions_unit_id_epa"]
).filter(
lambda x: x.plant_id_eia.nunique() > 1 # noqa: PD101
and x.report_year.nunique() > 1 # noqa: PD101)
)
# For each mismatch drop the one from 2018, then drop report_year column
- return core_epa__assn_epacamd_eia.drop(
+ return core_epa__assn_eia_epacamd.drop(
one_to_many[one_to_many.report_year == 2018].index
).drop(["report_year"], axis=1)
@@ -263,16 +263,16 @@ def correct_epa_eia_plant_id_mapping(df: pd.DataFrame) -> pd.DataFrame:
@asset(io_manager_key="pudl_sqlite_io_manager")
-def core_epa__assn_epacamd_eia_subplant_ids(
- _core_epa__assn_epacamd_eia_unique: pd.DataFrame,
+def core_epa__assn_eia_epacamd_subplant_ids(
+ _core_epa__assn_eia_epacamd_unique: pd.DataFrame,
core_eia860__scd_generators: pd.DataFrame,
emissions_unit_ids_epacems: pd.DataFrame,
core_eia860__assn_boiler_generator: pd.DataFrame,
) -> pd.DataFrame:
"""Groups units and generators into unique subplant groups.
- This takes :func:`_core_epa__assn_epacamd_eia_unique` as an input because this asset so it doesn't
- have to deal with duplicate matches that may be present in the :func:`core_epa__assn_epacamd_eia`
+ This takes :func:`_core_epa__assn_eia_epacamd_unique` as an input because this asset so it doesn't
+ have to deal with duplicate matches that may be present in the :func:`core_epa__assn_eia_epacamd`
asset due to its use of multiple years of raw crosswalk outputs.
This function consists of three primary parts:
@@ -299,7 +299,7 @@ def core_epa__assn_epacamd_eia_subplant_ids(
# BEFORE this step so the subplant IDs can benefit from the more fleshed out units
epacamd_eia_complete = (
augement_crosswalk_with_generators_eia860(
- _core_epa__assn_epacamd_eia_unique, core_eia860__scd_generators
+ _core_epa__assn_eia_epacamd_unique, core_eia860__scd_generators
)
.pipe(augement_crosswalk_with_epacamd_ids, emissions_unit_ids_epacems)
.pipe(augement_crosswalk_with_bga_eia860, core_eia860__assn_boiler_generator)
@@ -412,10 +412,10 @@ def _prep_for_networkx(crosswalk: pd.DataFrame) -> pd.DataFrame:
"""Make surrogate keys for combustors and generators.
Args:
- crosswalk (pd.DataFrame): core_epa__assn_epacamd_eia crosswalk
+ crosswalk (pd.DataFrame): core_epa__assn_eia_epacamd crosswalk
Returns:
- pd.DataFrame: copy of core_epa__assn_epacamd_eia crosswalk with new surrogate ID columns
+ pd.DataFrame: copy of core_epa__assn_eia_epacamd crosswalk with new surrogate ID columns
'combustor_id' and 'generator_id'
"""
prepped = crosswalk.copy()
@@ -436,11 +436,11 @@ def _subplant_ids_from_prepped_crosswalk(prepped: pd.DataFrame) -> pd.DataFrame:
"""Use networkx graph analysis to create subplant IDs from crosswalk edge list.
Args:
- prepped (pd.DataFrame): core_epa__assn_epacamd_eia crosswalked passed through
+ prepped (pd.DataFrame): core_epa__assn_eia_epacamd crosswalked passed through
_prep_for_networkx()
Returns:
- pd.DataFrame: copy of core_epa__assn_epacamd_eia crosswalk plus new column 'global_subplant_id'
+ pd.DataFrame: copy of core_epa__assn_eia_epacamd crosswalk plus new column 'global_subplant_id'
"""
graph = nx.from_pandas_edgelist(
prepped,
@@ -533,8 +533,8 @@ def make_subplant_ids(crosswalk: pd.DataFrame) -> pd.DataFrame:
Usage Example:
epacems = pudl.output.epacems.epacems(states=['ID']) # small subset for quick test
- core_epa__assn_epacamd_eia = pudl_out.epacamd_eia()
- filtered_crosswalk = pudl.analysis.epacamd_eia.filter_crosswalk(core_epa__assn_epacamd_eia, epacems)
+ core_epa__assn_eia_epacamd = pudl_out.epacamd_eia()
+ filtered_crosswalk = pudl.analysis.epacamd_eia.filter_crosswalk(core_epa__assn_eia_epacamd, epacems)
crosswalk_with_subplant_ids = make_subplant_ids(filtered_crosswalk)
Note that sub-plant ids should be used in conjunction with `plant_id_eia` vs.
@@ -542,7 +542,7 @@ def make_subplant_ids(crosswalk: pd.DataFrame) -> pd.DataFrame:
the transform process.
Args:
- crosswalk (pd.DataFrame): The core_epa__assn_epacamd_eia crosswalk
+ crosswalk (pd.DataFrame): The core_epa__assn_eia_epacamd crosswalk
Returns:
pd.DataFrame: An edge list connecting EPA units to EIA generators, with
diff --git a/src/pudl/extract/epacems.py b/src/pudl/extract/epacems.py
index 3b4dfa00b8..4587df7991 100644
--- a/src/pudl/extract/epacems.py
+++ b/src/pudl/extract/epacems.py
@@ -14,7 +14,7 @@
Pre-transform, the `plant_id_epa` field is a close but not perfect indicator for
`plant_id_eia`. In the raw data it's called `Facility ID` (ORISPL code) but that's not
-entirely accurate. The core_epa__assn_epacamd_eia crosswalk will show that the mapping between
+entirely accurate. The core_epa__assn_eia_epacamd crosswalk will show that the mapping between
`Facility ID` as it appears in CEMS and the `plant_id_eia` field used in EIA data.
Hence, we've called it `plant_id_epa` until it gets transformed into `plant_id_eia`
during the transform process with help from the crosswalk.
diff --git a/src/pudl/glue/ferc1_eia.py b/src/pudl/glue/ferc1_eia.py
index 2154c7d764..fe7893e7d8 100644
--- a/src/pudl/glue/ferc1_eia.py
+++ b/src/pudl/glue/ferc1_eia.py
@@ -392,21 +392,21 @@ def label_plants_eia(pudl_out: pudl.output.pudltabl.PudlTabl):
def label_utilities_ferc1_dbf(
- core_pudl__assn_utilities_ferc1_dbf: pd.DataFrame,
+ core_pudl__assn_ferc1_dbf_pudl_utilities: pd.DataFrame,
util_ids_ferc1_raw_dbf: pd.DataFrame,
) -> pd.DataFrame:
"""Get the DBF FERC1 utilities with their names."""
- return core_pudl__assn_utilities_ferc1_dbf.merge(
+ return core_pudl__assn_ferc1_dbf_pudl_utilities.merge(
util_ids_ferc1_raw_dbf, how="outer", on="utility_id_ferc1_dbf"
)
def label_utilities_ferc1_xbrl(
- core_pudl__assn_utilities_ferc1_xbrl: pd.DataFrame,
+ core_pudl__assn_ferc1_xbrl_pudl_utilities: pd.DataFrame,
util_ids_ferc1_raw_xbrl: pd.DataFrame,
) -> pd.DataFrame:
"""Get the XBRL FERC1 utilities with their names."""
- return core_pudl__assn_utilities_ferc1_xbrl.merge(
+ return core_pudl__assn_ferc1_xbrl_pudl_utilities.merge(
util_ids_ferc1_raw_xbrl, how="outer", on="utility_id_ferc1_xbrl"
)
@@ -518,9 +518,9 @@ def glue(ferc1=False, eia=False):
- utilities: Unique id and name for each utility for use across the
PUDL DB.
- plants: Unique id and name for each plant for use across the PUDL DB.
- - core_pudl__assn_utilities_eia: EIA operator ids and names attached to a PUDL
+ - core_pudl__assn_eia_pudl_utilities: EIA operator ids and names attached to a PUDL
utility id.
- - core_pudl__assn_plants_eia: EIA plant ids and names attached to a PUDL plant id.
+ - core_pudl__assn_eia_pudl_plants: EIA plant ids and names attached to a PUDL plant id.
- utilities_ferc: FERC respondent ids & names attached to a PUDL
utility id.
- plants_ferc: A combination of FERC plant names and respondent ids,
@@ -560,12 +560,12 @@ def glue(ferc1=False, eia=False):
.drop_duplicates("plant_id_pudl")
.dropna(how="all")
)
- core_pudl__assn_plants_eia = (
+ core_pudl__assn_eia_pudl_plants = (
plant_map.loc[:, ["plant_id_eia", "plant_name_eia", "plant_id_pudl"]]
.drop_duplicates("plant_id_eia")
.dropna(subset=["plant_id_eia"])
)
- core_pudl__assn_plants_ferc1 = (
+ core_pudl__assn_ferc1_pudl_plants = (
plant_map.loc[:, ["plant_name_ferc1", "utility_id_ferc1", "plant_id_pudl"]]
.drop_duplicates(["plant_name_ferc1", "utility_id_ferc1"])
.dropna(subset=["utility_id_ferc1", "plant_name_ferc1"])
@@ -577,14 +577,14 @@ def glue(ferc1=False, eia=False):
.drop_duplicates("utility_id_pudl")
.dropna(how="all")
)
- core_pudl__assn_utilities_eia = (
+ core_pudl__assn_eia_pudl_utilities = (
utility_map_pudl.loc[
:, ["utility_id_eia", "utility_name_eia", "utility_id_pudl"]
]
.drop_duplicates("utility_id_eia")
.dropna(subset=["utility_id_eia"])
)
- core_pudl__assn_utilities_ferc1 = (
+ core_pudl__assn_ferc1_pudl_utilities = (
utility_map_pudl.loc[
:, ["utility_id_ferc1", "utility_name_ferc1", "utility_id_pudl"]
]
@@ -593,12 +593,12 @@ def glue(ferc1=False, eia=False):
)
utility_map_ferc1 = get_utility_map_ferc1()
- core_pudl__assn_utilities_ferc1_dbf = (
+ core_pudl__assn_ferc1_dbf_pudl_utilities = (
utility_map_ferc1.loc[:, ["utility_id_ferc1", "utility_id_ferc1_dbf"]]
.drop_duplicates("utility_id_ferc1_dbf")
.dropna(subset=["utility_id_ferc1_dbf"])
)
- core_pudl__assn_utilities_ferc1_xbrl = (
+ core_pudl__assn_ferc1_xbrl_pudl_utilities = (
utility_map_ferc1.loc[:, ["utility_id_ferc1", "utility_id_ferc1_xbrl"]]
.drop_duplicates("utility_id_ferc1_xbrl")
.dropna(subset=["utility_id_ferc1_xbrl"])
@@ -624,10 +624,12 @@ def glue(ferc1=False, eia=False):
core_pudl__assn_utilities_plants = pd.concat(
[
pd.merge(
- core_pudl__assn_utilities_eia, plants_utilities_eia, on="utility_id_eia"
+ core_pudl__assn_eia_pudl_utilities,
+ plants_utilities_eia,
+ on="utility_id_eia",
),
pd.merge(
- core_pudl__assn_utilities_ferc1,
+ core_pudl__assn_ferc1_pudl_utilities,
plants_utilities_ferc1,
on="utility_id_ferc1",
),
@@ -650,10 +652,10 @@ def glue(ferc1=False, eia=False):
# we're harvesting IDs for, with no names?
for df, df_n in zip(
[
- core_pudl__assn_plants_eia,
- core_pudl__assn_plants_ferc1,
- core_pudl__assn_utilities_eia,
- core_pudl__assn_utilities_ferc1,
+ core_pudl__assn_eia_pudl_plants,
+ core_pudl__assn_ferc1_pudl_plants,
+ core_pudl__assn_eia_pudl_utilities,
+ core_pudl__assn_ferc1_pudl_utilities,
],
["plants_eia", "plants_ferc1", "utilities_eia", "utilities_ferc1"],
):
@@ -668,19 +670,19 @@ def glue(ferc1=False, eia=False):
# sanity checks to ensure that it's (at least kind of) clean.
# INSERT SANITY HERE
- # Any FERC respondent_id that appears in core_pudl__assn_plants_ferc1 must also exist in
- # core_pudl__assn_utilities_ferc1:
+ # Any FERC respondent_id that appears in core_pudl__assn_ferc1_pudl_plants must also exist in
+ # core_pudl__assn_ferc1_pudl_utilities:
# INSERT MORE SANITY HERE
glue_dfs = {
"core_pudl__entity_plants_pudl": core_pudl__entity_plants_pudl,
"core_pudl__entity_utilities_pudl": core_pudl__entity_utilities_pudl,
- "core_pudl__assn_plants_ferc1": core_pudl__assn_plants_ferc1,
- "core_pudl__assn_utilities_ferc1": core_pudl__assn_utilities_ferc1,
- "core_pudl__assn_utilities_ferc1_dbf": core_pudl__assn_utilities_ferc1_dbf,
- "core_pudl__assn_utilities_ferc1_xbrl": core_pudl__assn_utilities_ferc1_xbrl,
- "core_pudl__assn_plants_eia": core_pudl__assn_plants_eia,
- "core_pudl__assn_utilities_eia": core_pudl__assn_utilities_eia,
+ "core_pudl__assn_ferc1_pudl_plants": core_pudl__assn_ferc1_pudl_plants,
+ "core_pudl__assn_ferc1_pudl_utilities": core_pudl__assn_ferc1_pudl_utilities,
+ "core_pudl__assn_ferc1_dbf_pudl_utilities": core_pudl__assn_ferc1_dbf_pudl_utilities,
+ "core_pudl__assn_ferc1_xbrl_pudl_utilities": core_pudl__assn_ferc1_xbrl_pudl_utilities,
+ "core_pudl__assn_eia_pudl_plants": core_pudl__assn_eia_pudl_plants,
+ "core_pudl__assn_eia_pudl_utilities": core_pudl__assn_eia_pudl_utilities,
"core_pudl__assn_utilities_plants": core_pudl__assn_utilities_plants,
}
diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py
index 543bd3c058..c33a7e9d27 100644
--- a/src/pudl/metadata/classes.py
+++ b/src/pudl/metadata/classes.py
@@ -1965,10 +1965,10 @@ class DatasetteMetadata(Base):
xbrl_resources: dict[str, list[Resource]] = {}
label_columns: dict[str, str] = {
"core_eia__entity_plants": "plant_name_eia",
- "core_pudl__assn_plants_ferc1": "plant_name_ferc1",
+ "core_pudl__assn_ferc1_pudl_plants": "plant_name_ferc1",
"core_pudl__entity_plants_pudl": "plant_name_pudl",
"core_eia__entity_utilities": "utility_name_eia",
- "core_pudl__assn_utilities_ferc1": "utility_name_ferc1",
+ "core_pudl__assn_ferc1_pudl_utilities": "utility_name_ferc1",
"core_pudl__entity_utilities_pudl": "utility_name_pudl",
}
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index d67edc40b8..96844449a3 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -516,9 +516,9 @@
"primary_key": ["plant_id_eia", "generator_id"],
"foreign_key_rules": {
"fields": [["plant_id_eia", "generator_id"]],
- # exclude core_epa__assn_epacamd_eia_subplant_ids bc there are generator ids in this
+ # exclude core_epa__assn_eia_epacamd_subplant_ids bc there are generator ids in this
# glue table that come only from epacamd
- "exclude": ["core_epa__assn_epacamd_eia_subplant_ids"],
+ "exclude": ["core_epa__assn_eia_epacamd_subplant_ids"],
},
},
"sources": ["eia860", "eia923"],
@@ -579,7 +579,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "core_pudl__assn_plants_eia": {
+ "core_pudl__assn_eia_pudl_plants": {
"description": "Association between EIA Plant IDs and manually assigned PUDL Plant IDs",
"schema": {
"fields": ["plant_id_eia", "plant_name_eia", "plant_id_pudl"],
@@ -607,15 +607,15 @@
"primary_key": ["plant_id_eia"],
"foreign_key_rules": {
"fields": [["plant_id_eia"]],
- # Excluding core_pudl__assn_plants_eia because it's static and manually compiled
+ # Excluding core_pudl__assn_eia_pudl_plants because it's static and manually compiled
# so it has plants from *all* years of data, even when only a
# restricted set of data is processed, leading to constraint
# violations.
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
- # Exclude the core_epa__assn_epacamd_eia_subplant_ids table
+ # Exclude the core_epa__assn_eia_epacamd_subplant_ids table
"exclude": [
- "core_pudl__assn_plants_eia",
- "core_epa__assn_epacamd_eia_subplant_ids",
+ "core_pudl__assn_eia_pudl_plants",
+ "core_epa__assn_eia_epacamd_subplant_ids",
],
},
},
@@ -706,7 +706,7 @@
"etl_group": "static_eia",
"field_namespace": "eia",
},
- "core_pudl__assn_utilities_eia": {
+ "core_pudl__assn_eia_pudl_utilities": {
"description": "Associations between the EIA Utility IDs and the manually assigned PUDL Utility IDs.",
"schema": {
"fields": ["utility_id_eia", "utility_name_eia", "utility_id_pudl"],
@@ -730,7 +730,7 @@
# See: https://github.com/catalyst-cooperative/pudl/issues/1196
# Excluding EIA-861 because they haven't been harvested/normalized.
"exclude": [
- "core_pudl__assn_utilities_eia",
+ "core_pudl__assn_eia_pudl_utilities",
"core_eia861__yearly_advanced_metering_infrastructure",
"core_eia861__assn_balancing_authority",
"out_eia861__compiled_geometry_utilities",
diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py
index d799e195e6..d1e0ea11df 100644
--- a/src/pudl/metadata/resources/eia860.py
+++ b/src/pudl/metadata/resources/eia860.py
@@ -565,7 +565,7 @@
"sources": ["eia860"],
"etl_group": "eia860",
},
- "core_eia860__yearly_boiler_emissions_control_equipment_assn": {
+ "core_eia860__assn_yearly_boiler_emissions_control_equipment": {
"description": (
"""A table that links EIA boiler IDs to emissions control IDs for NOx, SO2,
mercury, and particulate monitoring. The relationship between the IDs is sometimes many
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index 21fc44f9ac..c220283d44 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -417,7 +417,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_pudl__assn_plants_ferc1": {
+ "core_pudl__assn_ferc1_pudl_plants": {
"description": "FERC 1 Plants and their associated manually assigned PUDL Plant IDs",
"schema": {
"fields": ["utility_id_ferc1", "plant_name_ferc1", "plant_id_pudl"],
@@ -715,7 +715,7 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "core_pudl__assn_utilities_ferc1": {
+ "core_pudl__assn_ferc1_pudl_utilities": {
"description": "This table maps two manually assigned utility IDs: a PUDL ID and a FERC1 ID. The PUDL ID maps EIA and FERC1 utilities. The FERC1 ID maps the older DBF respondent IDs to new XBRL entity IDs. This table is generated from a table stored in the PUDL repository: src/package_data/glue/utility_id_pudl.csv",
"schema": {
"fields": ["utility_id_ferc1", "utility_name_ferc1", "utility_id_pudl"],
@@ -726,7 +726,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "core_pudl__assn_utilities_ferc1_dbf": {
+ "core_pudl__assn_ferc1_dbf_pudl_utilities": {
"description": "This table maps the assign utility ID FERC1 to the native utility ID from the FERC1 DBF inputs - originally reported as respondent_id.",
"schema": {
"fields": ["utility_id_ferc1", "utility_id_ferc1_dbf"],
@@ -736,7 +736,7 @@
"etl_group": "glue",
"field_namespace": "ferc1",
},
- "core_pudl__assn_utilities_ferc1_xbrl": {
+ "core_pudl__assn_ferc1_xbrl_pudl_utilities": {
"description": "This table maps the assign utility ID FERC1 to the native utility ID from the FERC1 XBRL inputs - originally reported as entity_id.",
"schema": {
"fields": ["utility_id_ferc1", "utility_id_ferc1_xbrl"],
diff --git a/src/pudl/metadata/resources/glue.py b/src/pudl/metadata/resources/glue.py
index e2e2beffa8..7de151fd2d 100644
--- a/src/pudl/metadata/resources/glue.py
+++ b/src/pudl/metadata/resources/glue.py
@@ -2,7 +2,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "core_epa__assn_epacamd_eia": {
+ "core_epa__assn_eia_epacamd": {
"description": """This crosswalk table comes from the
EPA's Github repo camd-eia-crosswalk:
https://github.com/USEPA/camd-eia-crosswalk.
@@ -17,7 +17,7 @@
to create a temporal version of the crosswalk at some point.
Our version of the crosswalk clarifies some of the column names and removes unmatched
-rows. The :func:`pudl.etl.glue_assets.core_epa__assn_epacamd_eia` function doc strings explain
+rows. The :func:`pudl.etl.glue_assets.core_epa__assn_eia_epacamd` function doc strings explain
what changes are made from the EPA's version.
""",
"schema": {
@@ -35,8 +35,8 @@
"etl_group": "glue",
"sources": ["epacamd_eia"],
},
- "core_epa__assn_epacamd_eia_subplant_ids": {
- "description": """This table is an augmented version of the core_epa__assn_epacamd_eia
+ "core_epa__assn_eia_epacamd_subplant_ids": {
+ "description": """This table is an augmented version of the core_epa__assn_eia_epacamd
crosswalk table which initally comes from the EPA's Github repo camd-eia-crosswalk:
https://github.com/USEPA/camd-eia-crosswalk.
It's purpose is to connect EPA units with EIA units, and generators.
@@ -56,7 +56,7 @@
This table inherits from the EPA's crosswalk, the ID's from EPA CAMD
core_epacems__hourly_emissions table itself, the core_eia860__assn_boiler_generator table and the
-core_eia860__scd_generators table. While the core_epa__assn_epacamd_eia table is the core backbone of the table,
+core_eia860__scd_generators table. While the core_epa__assn_eia_epacamd table is the core backbone of the table,
EPA CAMD id's ensure there is complete coverage of EPA CAMD reporting units. The EIA 860
table addition ensures there is also complete coverage of those units as well.
@@ -65,7 +65,7 @@
from: https://catalystcoop-pudl.readthedocs.io/en/latest/autoapi/index.html
But by analyzing the relationships between combustors and generators,
-as provided in the core_epa__assn_epacamd_eia crosswalk, we can identify distinct power plants.
+as provided in the core_epa__assn_eia_epacamd crosswalk, we can identify distinct power plants.
These are the smallest coherent units of aggregation.
This table does not have primary keys because the primary keys would have been:
diff --git a/src/pudl/metadata/sources.py b/src/pudl/metadata/sources.py
index 4dd9a6afa8..0833affa72 100644
--- a/src/pudl/metadata/sources.py
+++ b/src/pudl/metadata/sources.py
@@ -296,7 +296,7 @@
"license_raw": LICENSES["us-govt"],
"license_pudl": LICENSES["cc-by-4.0"],
},
- "core_epa__assn_epacamd_eia": {
+ "core_epa__assn_eia_epacamd": {
"title": "EPA CAMD to EIA Power Sector Data Crosswalk",
"path": "https://github.com/USEPA/camd-eia-crosswalk",
"description": (
diff --git a/src/pudl/output/eia.py b/src/pudl/output/eia.py
index 112db12656..38ff6ee1a6 100644
--- a/src/pudl/output/eia.py
+++ b/src/pudl/output/eia.py
@@ -15,19 +15,19 @@
def out_eia__yearly_utilities(
core_eia__entity_utilities: pd.DataFrame,
core_eia860__scd_utilities: pd.DataFrame,
- core_pudl__assn_utilities_eia: pd.DataFrame,
+ core_pudl__assn_eia_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Utilities table.
Args:
core_eia__entity_utilities: EIA utility entity table.
core_eia860__scd_utilities: EIA 860 annual utility table.
- core_pudl__assn_utilities_eia: Associations between EIA utilities and pudl utility IDs.
+ core_pudl__assn_eia_pudl_utilities: Associations between EIA utilities and pudl utility IDs.
Returns:
A DataFrame containing utility attributes from EIA Forms 860 and 923.
"""
- core_pudl__assn_utilities_eia = core_pudl__assn_utilities_eia[
+ core_pudl__assn_eia_pudl_utilities = core_pudl__assn_eia_pudl_utilities[
["utility_id_eia", "utility_id_pudl"]
]
out_df = pd.merge(
@@ -37,7 +37,7 @@ def out_eia__yearly_utilities(
on=["utility_id_eia"],
)
out_df = pd.merge(
- out_df, core_pudl__assn_utilities_eia, how="left", on=["utility_id_eia"]
+ out_df, core_pudl__assn_eia_pudl_utilities, how="left", on=["utility_id_eia"]
)
out_df = out_df.assign(report_date=lambda x: pd.to_datetime(x.report_date)).dropna(
subset=["report_date", "utility_id_eia"]
@@ -56,16 +56,16 @@ def out_eia__yearly_utilities(
def out_eia__yearly_plants(
core_eia__entity_plants: pd.DataFrame,
core_eia860__scd_plants: pd.DataFrame,
- core_pudl__assn_plants_eia: pd.DataFrame,
- core_pudl__assn_utilities_eia: pd.DataFrame,
+ core_pudl__assn_eia_pudl_plants: pd.DataFrame,
+ core_pudl__assn_eia_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull all fields from the EIA Plants tables.
Args:
core_eia__entity_plants: EIA plant entity table.
core_eia860__scd_plants: EIA 860 annual plant attribute table.
- core_pudl__assn_plants_eia: Associations between EIA plants and pudl utility IDs.
- core_pudl__assn_utilities_eia: EIA utility ID table.
+ core_pudl__assn_eia_pudl_plants: Associations between EIA plants and pudl utility IDs.
+ core_pudl__assn_eia_pudl_utilities: EIA utility ID table.
Returns:
A DataFrame containing plant attributes from EIA Forms 860 and 923
@@ -74,7 +74,7 @@ def out_eia__yearly_plants(
report_date=lambda x: pd.to_datetime(x.report_date)
)
- core_pudl__assn_plants_eia = core_pudl__assn_plants_eia[
+ core_pudl__assn_eia_pudl_plants = core_pudl__assn_eia_pudl_plants[
["plant_id_eia", "plant_id_pudl"]
]
@@ -85,8 +85,8 @@ def out_eia__yearly_plants(
how="left",
on=["plant_id_eia"],
)
- .merge(core_pudl__assn_plants_eia, how="left", on=["plant_id_eia"])
- .merge(core_pudl__assn_utilities_eia, how="left", on=["utility_id_eia"])
+ .merge(core_pudl__assn_eia_pudl_plants, how="left", on=["plant_id_eia"])
+ .merge(core_pudl__assn_eia_pudl_utilities, how="left", on=["utility_id_eia"])
.dropna(subset=["report_date", "plant_id_eia"])
.pipe(fill_in_missing_ba_codes)
)
@@ -329,7 +329,7 @@ def _out_eia__plants_utilities(
A DataFrame containing plant and utility IDs and names from EIA 860.
"""
# Contains the one-to-one mapping of EIA plants to their operators
- core_pudl__assn_plants_eia = out_eia__yearly_plants.drop(
+ core_pudl__assn_eia_pudl_plants = out_eia__yearly_plants.drop(
[
"utility_id_pudl",
"city",
@@ -345,7 +345,7 @@ def _out_eia__plants_utilities(
# to avoid duplicate columns on the merge...
out_df = pd.merge(
- core_pudl__assn_plants_eia,
+ core_pudl__assn_eia_pudl_plants,
out_eia__yearly_utilities.drop(columns=["data_maturity"]),
how="left",
on=["report_date", "utility_id_eia"],
diff --git a/src/pudl/output/eia860.py b/src/pudl/output/eia860.py
index 69aea2630a..32e9606438 100644
--- a/src/pudl/output/eia860.py
+++ b/src/pudl/output/eia860.py
@@ -10,7 +10,7 @@
def out_eia860__yearly_ownership(
_out_eia__plants_utilities: pd.DataFrame,
core_eia860__scd_ownership: pd.DataFrame,
- core_pudl__assn_utilities_eia: pd.DataFrame,
+ core_pudl__assn_eia_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized version of the EIA 860 ownership table.
@@ -18,7 +18,7 @@ def out_eia860__yearly_ownership(
_out_eia__plants_utilities: Denormalized table containing plant and utility
names and IDs.
core_eia860__scd_ownership: EIA 860 ownership table.
- core_pudl__assn_utilities_eia: Table of associations between EIA utility IDs and
+ core_pudl__assn_eia_pudl_utilities: Table of associations between EIA utility IDs and
PUDL Utility IDs.
Returns:
@@ -41,7 +41,7 @@ def out_eia860__yearly_ownership(
).dropna(
subset=["report_date", "plant_id_eia", "generator_id", "owner_utility_id_eia"]
)
- util_df = core_pudl__assn_utilities_eia.loc[
+ util_df = core_pudl__assn_eia_pudl_utilities.loc[
:, ["utility_id_eia", "utility_id_pudl"]
]
own_df = own_df.merge(
diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py
index 909891d371..3cb7d457bf 100644
--- a/src/pudl/output/ferc1.py
+++ b/src/pudl/output/ferc1.py
@@ -120,13 +120,13 @@
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def _out_ferc1__yearly_plants_utilities(
- core_pudl__assn_plants_ferc1: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_plants: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""A denormalized table containing FERC plant and utility names and IDs."""
return pd.merge(
- core_pudl__assn_plants_ferc1,
- core_pudl__assn_utilities_ferc1,
+ core_pudl__assn_ferc1_pudl_plants,
+ core_pudl__assn_ferc1_pudl_utilities,
on="utility_id_ferc1",
)
@@ -336,12 +336,12 @@ def out_ferc1__yearly_steam_plants_fuel_sched402(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_purchased_power_and_exchanges_sched326(
core_ferc1__yearly_purchased_power_and_exchanges_sched326: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
purchased_power_df = (
core_ferc1__yearly_purchased_power_and_exchanges_sched326.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -360,11 +360,11 @@ def out_ferc1__yearly_purchased_power_and_exchanges_sched326(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_plant_in_service_sched204(
core_ferc1__yearly_plant_in_service_sched204: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a dataframe of FERC Form 1 Electric Plant in Service data."""
pis_df = core_ferc1__yearly_plant_in_service_sched204.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -381,12 +381,12 @@ def out_ferc1__yearly_plant_in_service_sched204(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_balance_sheet_assets_sched110(
core_ferc1__yearly_balance_sheet_assets_sched110: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance sheet assets data."""
out_ferc1__yearly_balance_sheet_assets_sched110 = (
core_ferc1__yearly_balance_sheet_assets_sched110.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -405,12 +405,12 @@ def out_ferc1__yearly_balance_sheet_assets_sched110(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_balance_sheet_liabilities_sched110(
core_ferc1__yearly_balance_sheet_liabilities_sched110: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 balance_sheet liabilities data."""
out_ferc1__yearly_balance_sheet_liabilities_sched110 = (
core_ferc1__yearly_balance_sheet_liabilities_sched110.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -429,12 +429,12 @@ def out_ferc1__yearly_balance_sheet_liabilities_sched110(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_cash_flows_sched120(
core_ferc1__yearly_cash_flows_sched120: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 cash flow data."""
out_ferc1__yearly_cash_flows_sched120 = (
core_ferc1__yearly_cash_flows_sched120.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -453,12 +453,12 @@ def out_ferc1__yearly_cash_flows_sched120(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_depreciation_summary_sched336(
core_ferc1__yearly_depreciation_summary_sched336: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 depreciation amortization data."""
out_ferc1__yearly_depreciation_summary_sched336 = (
core_ferc1__yearly_depreciation_summary_sched336.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -478,12 +478,12 @@ def out_ferc1__yearly_depreciation_summary_sched336(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_energy_dispositions_sched401(
core_ferc1__yearly_energy_dispositions_sched401: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 energy dispositions data."""
out_ferc1__yearly_energy_dispositions_sched401 = (
core_ferc1__yearly_energy_dispositions_sched401.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -502,12 +502,12 @@ def out_ferc1__yearly_energy_dispositions_sched401(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_energy_sources_sched401(
core_ferc1__yearly_energy_sources_sched401: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_energy_sources_sched401 = (
core_ferc1__yearly_energy_sources_sched401.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -526,12 +526,12 @@ def out_ferc1__yearly_energy_sources_sched401(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_operating_expenses_sched320(
core_ferc1__yearly_operating_expenses_sched320: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_operating_expenses_sched320 = (
core_ferc1__yearly_operating_expenses_sched320.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -550,12 +550,12 @@ def out_ferc1__yearly_operating_expenses_sched320(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_operating_revenues_sched300(
core_ferc1__yearly_operating_revenues_sched300: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_operating_revenues_sched300 = (
core_ferc1__yearly_operating_revenues_sched300.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -574,12 +574,12 @@ def out_ferc1__yearly_operating_revenues_sched300(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_depreciation_changes_sched219(
core_ferc1__yearly_depreciation_changes_sched219: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_depreciation_changes_sched219 = (
core_ferc1__yearly_depreciation_changes_sched219.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -600,12 +600,12 @@ def out_ferc1__yearly_depreciation_changes_sched219(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_depreciation_by_function_sched219(
core_ferc1__yearly_depreciation_by_function_sched219: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_depreciation_by_function_sched219 = (
core_ferc1__yearly_depreciation_by_function_sched219.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -626,12 +626,12 @@ def out_ferc1__yearly_depreciation_by_function_sched219(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_sales_by_rate_schedules_sched304(
core_ferc1__yearly_sales_by_rate_schedules_sched304: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_sales_by_rate_schedules_sched304 = (
core_ferc1__yearly_sales_by_rate_schedules_sched304.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -649,12 +649,12 @@ def out_ferc1__yearly_sales_by_rate_schedules_sched304(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_income_statements_sched114(
core_ferc1__yearly_income_statements_sched114: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_income_statements_sched114 = (
core_ferc1__yearly_income_statements_sched114.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -674,12 +674,12 @@ def out_ferc1__yearly_income_statements_sched114(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_other_regulatory_liabilities_sched278(
core_ferc1__yearly_other_regulatory_liabilities_sched278: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_other_regulatory_liabilities_sched278 = (
core_ferc1__yearly_other_regulatory_liabilities_sched278.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -696,12 +696,12 @@ def out_ferc1__yearly_other_regulatory_liabilities_sched278(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_retained_earnings_sched118(
core_ferc1__yearly_retained_earnings_sched118: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_retained_earnings_sched118 = (
core_ferc1__yearly_retained_earnings_sched118.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -720,12 +720,12 @@ def out_ferc1__yearly_retained_earnings_sched118(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_transmission_lines_sched422(
core_ferc1__yearly_transmission_lines_sched422: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_transmission_lines_sched422 = (
core_ferc1__yearly_transmission_lines_sched422.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
@@ -742,12 +742,12 @@ def out_ferc1__yearly_transmission_lines_sched422(
@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
def out_ferc1__yearly_utility_plant_summary_sched200(
core_ferc1__yearly_utility_plant_summary_sched200: pd.DataFrame,
- core_pudl__assn_utilities_ferc1: pd.DataFrame,
+ core_pudl__assn_ferc1_pudl_utilities: pd.DataFrame,
) -> pd.DataFrame:
"""Pull a useful dataframe of FERC Form 1 Purchased Power data."""
out_ferc1__yearly_utility_plant_summary_sched200 = (
core_ferc1__yearly_utility_plant_summary_sched200.merge(
- core_pudl__assn_utilities_ferc1, on="utility_id_ferc1"
+ core_pudl__assn_ferc1_pudl_utilities, on="utility_id_ferc1"
).pipe(
pudl.helpers.organize_cols,
[
diff --git a/src/pudl/output/pudltabl.py b/src/pudl/output/pudltabl.py
index 41f8dbd455..8f4057d33b 100644
--- a/src/pudl/output/pudltabl.py
+++ b/src/pudl/output/pudltabl.py
@@ -169,7 +169,7 @@ def _register_output_methods(self: Self):
"out_eia860__yearly_ownership": "own_eia860",
"core_eia860__assn_boiler_generator": "bga_eia860",
"out_eia860__yearly_emissions_control_equipment": "denorm_emissions_control_equipment_eia860",
- "core_eia860__yearly_boiler_emissions_control_equipment_assn": "boiler_emissions_control_equipment_assn_eia860",
+ "core_eia860__assn_yearly_boiler_emissions_control_equipment": "boiler_emissions_control_equipment_assn_eia860",
"core_eia860__scd_emissions_control_equipment": "emissions_control_equipment_eia860",
"core_eia860__assn_boiler_stack_flue": "boiler_stack_flue_assn_eia860",
"core_eia860__assn_boiler_cooling": "boiler_cooling_assn_eia860",
@@ -411,6 +411,6 @@ def gen_eia923(self: Self, update: bool = False) -> pd.DataFrame:
###########################################################################
def epacamd_eia(self: Self) -> pd.DataFrame:
"""Read the EPACAMD-EIA Crosswalk from the PUDL DB."""
- return pd.read_sql("core_epa__assn_epacamd_eia", self.pudl_engine).pipe(
+ return pd.read_sql("core_epa__assn_eia_epacamd", self.pudl_engine).pipe(
apply_pudl_dtypes, group="glue"
)
diff --git a/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql b/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql
index 001c18b855..b47ca7e6c8 100644
--- a/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql
+++ b/src/pudl/output/sql/denorm_plants_utilities_ferc1.sql
@@ -1,5 +1,5 @@
-- Build a view of useful FERC Plant & Utility information.
CREATE VIEW denorm_plants_utilities_ferc1 AS
SELECT *
-FROM core_pudl__assn_plants_ferc1
- INNER JOIN core_pudl__assn_utilities_ferc1 USING(utility_id_ferc1);
+FROM core_pudl__assn_ferc1_pudl_plants
+ INNER JOIN core_pudl__assn_ferc1_pudl_utilities USING(utility_id_ferc1);
diff --git a/src/pudl/transform/eia.py b/src/pudl/transform/eia.py
index 5e0ad00c0c..9acf25d76a 100644
--- a/src/pudl/transform/eia.py
+++ b/src/pudl/transform/eia.py
@@ -1217,15 +1217,18 @@ def harvested_entity(context, **clean_dfs):
def finished_eia_asset_factory(
- table_name: str, io_manager_key: str | None = None
+ table_name: str, _core_table_name: str, io_manager_key: str | None = None
) -> AssetsDefinition:
- """An asset factory for finished EIA tables."""
- # TODO (bendnorman): Create a more graceful function for parsing table name
- table_name_parts = table_name.split("__")
- dataset = table_name_parts[0].replace("core_", "")
- table_name_no_asset_type = "_".join(table_name_parts[-1].split("_")[1:])
+ """An asset factory for finished EIA tables.
- _core_table_name = f"_core_{dataset}__{table_name_no_asset_type}"
+ Args:
+ table_name: the name of the harvest table.
+ _core_table_name: the name of the unharvested input table
+ io_manager_key: the name of the IO Manager of the final asset.
+
+ Returns:
+ A harvest EIA asset.
+ """
@asset(
ins={_core_table_name: AssetIn()},
@@ -1242,18 +1245,20 @@ def finished_eia_asset(**kwargs) -> pd.DataFrame:
finished_eia_assets = [
- finished_eia_asset_factory(table_name, io_manager_key="pudl_sqlite_io_manager")
- for table_name in [
- "core_eia923__monthly_boiler_fuel",
- "core_eia923__entity_coalmine",
- "core_eia923__monthly_fuel_receipts_costs",
- "core_eia923__monthly_generation",
- "core_eia923__monthly_generation_fuel",
- "core_eia923__monthly_generation_fuel_nuclear",
- "core_eia860__scd_ownership",
- "core_eia860__scd_emissions_control_equipment",
- "core_eia860__yearly_boiler_emissions_control_equipment_assn",
- "core_eia860__assn_boiler_cooling",
- "core_eia860__assn_boiler_stack_flue",
- ]
+ finished_eia_asset_factory(
+ table_name, _core_table_name, io_manager_key="pudl_sqlite_io_manager"
+ )
+ for table_name, _core_table_name in {
+ "core_eia923__monthly_boiler_fuel": "_core_eia923__boiler_fuel",
+ "core_eia923__entity_coalmine": "_core_eia923__coalmine",
+ "core_eia923__monthly_fuel_receipts_costs": "_core_eia923__fuel_receipts_costs",
+ "core_eia923__monthly_generation": "_core_eia923__generation",
+ "core_eia923__monthly_generation_fuel": "_core_eia923__generation_fuel",
+ "core_eia923__monthly_generation_fuel_nuclear": "_core_eia923__generation_fuel_nuclear",
+ "core_eia860__scd_ownership": "_core_eia860__ownership",
+ "core_eia860__scd_emissions_control_equipment": "_core_eia860__emissions_control_equipment",
+ "core_eia860__assn_yearly_boiler_emissions_control_equipment": "_core_eia860__boiler_emissions_control_equipment_assn",
+ "core_eia860__assn_boiler_cooling": "_core_eia860__boiler_cooling",
+ "core_eia860__assn_boiler_stack_flue": "_core_eia860__boiler_stack_flue",
+ }.items()
]
diff --git a/src/pudl/transform/epacems.py b/src/pudl/transform/epacems.py
index 5cb5e6edd9..bd2cd94e2a 100644
--- a/src/pudl/transform/epacems.py
+++ b/src/pudl/transform/epacems.py
@@ -43,7 +43,7 @@ def harmonize_eia_epa_orispl(
Args:
df: A CEMS hourly dataframe for one year-month-state.
- crosswalk_df: The core_epa__assn_epacamd_eia dataframe from the database.
+ crosswalk_df: The core_epa__assn_eia_epacamd dataframe from the database.
Returns:
The same data, with the ORISPL plant codes corrected to match the EIA plant IDs.
@@ -58,7 +58,7 @@ def harmonize_eia_epa_orispl(
if not one_to_many.empty:
raise AssertionError(
- "The core_epa__assn_epacamd_eia crosswalk has more than one plant_id_eia value per "
+ "The core_epa__assn_eia_epacamd crosswalk has more than one plant_id_eia value per "
"plant_id_epa and emissions_unit_id_epa group"
)
crosswalk_df = crosswalk_df[
@@ -175,7 +175,7 @@ def correct_gross_load_mw(df: pd.DataFrame) -> pd.DataFrame:
def transform(
raw_df: pd.DataFrame,
- core_epa__assn_epacamd_eia: pd.DataFrame,
+ core_epa__assn_eia_epacamd: pd.DataFrame,
core_eia__entity_plants: pd.DataFrame,
) -> pd.DataFrame:
"""Transform EPA CEMS hourly data and ready it for export to Parquet.
@@ -192,7 +192,7 @@ def transform(
return (
raw_df.pipe(apply_pudl_dtypes, group="epacems")
.pipe(remove_leading_zeros_from_numeric_strings, "emissions_unit_id_epa")
- .pipe(harmonize_eia_epa_orispl, core_epa__assn_epacamd_eia)
+ .pipe(harmonize_eia_epa_orispl, core_epa__assn_eia_epacamd)
.pipe(
convert_to_utc,
plant_utc_offset=_load_plant_utc_offset(core_eia__entity_plants),
diff --git a/test/integration/glue_test.py b/test/integration/glue_test.py
index a0f858a2a1..0a58f44fd9 100644
--- a/test/integration/glue_test.py
+++ b/test/integration/glue_test.py
@@ -75,11 +75,11 @@ def glue_test_dfs(
glue_test_dfs.update(
{
"utilities_ferc1_dbf_labeled": label_utilities_ferc1_dbf(
- glue_test_dfs["core_pudl__assn_utilities_ferc1_dbf"],
+ glue_test_dfs["core_pudl__assn_ferc1_dbf_pudl_utilities"],
glue_test_dfs["util_ids_ferc1_raw_dbf"],
),
"utilities_ferc1_xbrl_labeled": label_utilities_ferc1_xbrl(
- glue_test_dfs["core_pudl__assn_utilities_ferc1_xbrl"],
+ glue_test_dfs["core_pudl__assn_ferc1_xbrl_pudl_utilities"],
glue_test_dfs["util_ids_ferc1_raw_xbrl"],
),
}
@@ -104,41 +104,41 @@ def save_to_devtools_glue(missing_df: pd.DataFrame, test_dir, file_name: str):
[
pytest.param(
"core_pudl__entity_utilities_pudl",
- "core_pudl__assn_utilities_ferc1",
+ "core_pudl__assn_ferc1_pudl_utilities",
["utility_id_pudl"],
- "core_pudl__assn_utilities_ferc1",
+ "core_pudl__assn_ferc1_pudl_utilities",
id="missing_utility_id_pudl_in_utilities_ferc1",
),
pytest.param(
- "core_pudl__assn_utilities_ferc1",
- "core_pudl__assn_utilities_ferc1_dbf",
+ "core_pudl__assn_ferc1_pudl_utilities",
+ "core_pudl__assn_ferc1_dbf_pudl_utilities",
["utility_id_ferc1"],
"utilities_ferc1_dbf_labeled",
id="missing_utility_id_ferc1_in_utilities_ferc1_dbf",
),
pytest.param(
- "core_pudl__assn_utilities_ferc1",
- "core_pudl__assn_utilities_ferc1_xbrl",
+ "core_pudl__assn_ferc1_pudl_utilities",
+ "core_pudl__assn_ferc1_xbrl_pudl_utilities",
["utility_id_ferc1"],
"utilities_ferc1_xbrl_labeled",
id="missing_utility_id_ferc1_in_utilities_ferc1_xbrl",
),
pytest.param(
- "core_pudl__assn_utilities_ferc1",
- "core_pudl__assn_plants_ferc1",
+ "core_pudl__assn_ferc1_pudl_utilities",
+ "core_pudl__assn_ferc1_pudl_plants",
["utility_id_ferc1"],
- "core_pudl__assn_plants_ferc1",
+ "core_pudl__assn_ferc1_pudl_plants",
id="missing_utility_id_ferc1_in_plants_ferc1",
),
pytest.param(
- "core_pudl__assn_utilities_ferc1_xbrl",
+ "core_pudl__assn_ferc1_xbrl_pudl_utilities",
"util_ids_ferc1_raw_xbrl",
["utility_id_ferc1_xbrl"],
"util_ids_ferc1_raw_xbrl",
id="missing_utility_id_ferc1_xbrl_in_raw_xbrl",
),
pytest.param(
- "core_pudl__assn_utilities_ferc1_dbf",
+ "core_pudl__assn_ferc1_dbf_pudl_utilities",
"util_ids_ferc1_raw_dbf",
["utility_id_ferc1_dbf"],
"util_ids_ferc1_raw_dbf",
@@ -146,20 +146,20 @@ def save_to_devtools_glue(missing_df: pd.DataFrame, test_dir, file_name: str):
),
pytest.param(
"core_pudl__entity_plants_pudl",
- "core_pudl__assn_plants_ferc1",
+ "core_pudl__assn_ferc1_pudl_plants",
["plant_id_pudl"],
None, # should only ever happen if a plant is in the mapping sheet w/o a pudl id
id="missing_plant_id_pudl_in_plants_ferc1",
),
pytest.param(
- "core_pudl__assn_plants_ferc1",
+ "core_pudl__assn_ferc1_pudl_plants",
"plants_ferc1_raw",
["utility_id_ferc1", "plant_name_ferc1"],
"plants_ferc1_raw",
id="missing_plants_in_plants_ferc1",
),
pytest.param(
- "core_pudl__assn_plants_eia",
+ "core_pudl__assn_eia_pudl_plants",
"plants_eia_pudl_db",
["plant_id_eia"],
"plants_eia_labeled",
@@ -222,15 +222,15 @@ def test_for_fk_validation_and_unmapped_ids(
"ids_left,ids_right,id_cols,drop",
[
pytest.param(
- "core_pudl__assn_plants_ferc1",
+ "core_pudl__assn_ferc1_pudl_plants",
"plants_ferc1_raw",
["utility_id_ferc1", "plant_name_ferc1"],
(227, "comanche"),
id="check_for_unmmapped_plants_in_plants_ferc1",
),
pytest.param(
- "core_pudl__assn_utilities_ferc1",
- "core_pudl__assn_utilities_ferc1_xbrl",
+ "core_pudl__assn_ferc1_pudl_utilities",
+ "core_pudl__assn_ferc1_xbrl_pudl_utilities",
["utility_id_ferc1"],
(227),
id="validate_utility_id_ferc1_in_utilities_ferc1_xbrl",
@@ -276,7 +276,7 @@ def test_unmapped_utils_eia(
unmapped_utils_eia = get_util_ids_eia_unmapped(
pudl_out,
pudl_engine,
- glue_test_dfs["core_pudl__assn_utilities_eia"],
+ glue_test_dfs["core_pudl__assn_eia_pudl_utilities"],
)
if save_unmapped_ids:
diff --git a/test/unit/transform/glue_test.py b/test/unit/transform/glue_test.py
index 9f6cb397a2..7ff18ef227 100644
--- a/test/unit/transform/glue_test.py
+++ b/test/unit/transform/glue_test.py
@@ -76,8 +76,8 @@ def test_epacamd_eia_subplant_ids():
)
)
- epacamd_eia_subplant_ids_got = glue_assets.core_epa__assn_epacamd_eia_subplant_ids(
- _core_epa__assn_epacamd_eia_unique=epacamd_eia_test,
+ epacamd_eia_subplant_ids_got = glue_assets.core_epa__assn_eia_epacamd_subplant_ids(
+ _core_epa__assn_eia_epacamd_unique=epacamd_eia_test,
core_eia860__scd_generators=generators_entity_eia_test,
emissions_unit_ids_epacems=emissions_unit_ids_epacems_test,
core_eia860__assn_boiler_generator=boiler_generator_assn_eia860_test,
diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py
index 421b7ca375..f32ba94db8 100644
--- a/test/validate/eia_test.py
+++ b/test/validate/eia_test.py
@@ -168,7 +168,7 @@ def test_minmax_rows(
"boiler_emissions_control_equipment_assn_eia860",
(
Resource.from_id(
- "core_eia860__yearly_boiler_emissions_control_equipment_assn"
+ "core_eia860__assn_yearly_boiler_emissions_control_equipment"
).schema.primary_key
),
),
From 1d2d71ccac6bbca5ba08640094f72ec43be678b7 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 9 Nov 2023 15:50:53 -0900
Subject: [PATCH 56/70] Add association assset naming convention to docs
---
docs/dev/naming_conventions.rst | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/docs/dev/naming_conventions.rst b/docs/dev/naming_conventions.rst
index 0a39ecd64b..4993fb77ec 100644
--- a/docs/dev/naming_conventions.rst
+++ b/docs/dev/naming_conventions.rst
@@ -64,10 +64,15 @@ Naming convention: ``core_{source}__{asset_type}_{asset_name}``
* ``asset_type`` describes how the asset is modeled and its role in PUDL’s
collection of core assets. There are a handful of table types in this layer:
- * ``assn``: Association tables provide connections between entities. This data
- can be manually compiled or extracted from data sources. If the asset associates
- data from two sources, the source names should be included in the ``asset_name``
- in alphabetical order. Examples:
+ * ``assn``: Association assets provide connections between entities. They should
+ follow this naming convention:
+
+ ``{layer}_{source of association asset}__assn_{datasets being linked}_{entity
+ being linked}``
+
+ Association assets can be manually compiled or extracted from data sources. If
+ the asset associates data from two sources, the source names should be included
+ in the ``asset_name`` in alphabetical order. Examples:
* ``core_pudl__assn_plants_eia`` associates EIA Plant IDs and manually assigned
PUDL Plant IDs.
From 0f90efa3bbb66353251ecaba23d1f40035a37a1b Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 15 Nov 2023 11:10:49 -0900
Subject: [PATCH 57/70] Resolve migration issues with unit heat rate column
---
...b_wipe_schema_and_ferc1_name_transition.py | 4 +-
...3_add_unit__to_heat_rate_mmbtu_per_mwh.py} | 20 ++++++++--
...4_add_unit__to_ferc1_and_eia_heat_rate_.py | 37 -------------------
3 files changed, 18 insertions(+), 43 deletions(-)
rename migrations/versions/{c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py => 9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py} (93%)
delete mode 100644 migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py
diff --git a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
index 80e88b2943..d43a703aa4 100644
--- a/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
+++ b/migrations/versions/1fef7b82e48b_wipe_schema_and_ferc1_name_transition.py
@@ -21309,7 +21309,7 @@ def upgrade() -> None:
comment="Total annual heat content of fuel consumed by a plant part record in the plant parts list.",
),
sa.Column(
- "unit_heat_rate_mmbtu_per_mwh_eia",
+ "heat_rate_mmbtu_mwh_eia",
sa.Float(),
nullable=True,
comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
@@ -21802,7 +21802,7 @@ def upgrade() -> None:
comment="Simplified fuel type code used in PUDL",
),
sa.Column(
- "unit_heat_rate_mmbtu_per_mwh_ferc1",
+ "heat_rate_mmbtu_mwh_ferc1",
sa.Float(),
nullable=True,
comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
diff --git a/migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py b/migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py
similarity index 93%
rename from migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py
rename to migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py
index f66e808f39..710a4eb2e0 100644
--- a/migrations/versions/c22d59125ab4_rename_heat_rate_mmbtu_mwh_unit_heat_.py
+++ b/migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py
@@ -1,15 +1,15 @@
-"""Rename heat_rate_mmbtu_mwh -> unit_heat_rate_mmbtu_per_mwh
+"""Add unit_ to heat_rate_mmbtu_per_mwh
-Revision ID: c22d59125ab4
+Revision ID: 9ccfb2eb8d23
Revises: 1fef7b82e48b
-Create Date: 2023-11-08 11:48:55.310396
+Create Date: 2023-11-15 10:27:27.709921
"""
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
-revision = 'c22d59125ab4'
+revision = '9ccfb2eb8d23'
down_revision = '1fef7b82e48b'
branch_labels = None
depends_on = None
@@ -118,6 +118,12 @@ def upgrade() -> None:
batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
batch_op.drop_column('heat_rate_mmbtu_mwh')
+ with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
+ batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'))
+ batch_op.drop_column('heat_rate_mmbtu_mwh_eia')
+ batch_op.drop_column('heat_rate_mmbtu_mwh_ferc1')
+
with op.batch_alter_table('plant_parts_eia', schema=None) as batch_op:
batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
batch_op.drop_column('heat_rate_mmbtu_mwh')
@@ -131,6 +137,12 @@ def downgrade() -> None:
batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
+ with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.FLOAT(), nullable=True))
+ batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_eia', sa.FLOAT(), nullable=True))
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_ferc1')
+ batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_eia')
+
with op.batch_alter_table('out_eia__yearly_plant_parts', schema=None) as batch_op:
batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
diff --git a/migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py b/migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py
deleted file mode 100644
index e6a5b0a89c..0000000000
--- a/migrations/versions/f5a33d973154_add_unit__to_ferc1_and_eia_heat_rate_.py
+++ /dev/null
@@ -1,37 +0,0 @@
-"""Add unit_ to ferc1 and eia heat rate columns
-
-Revision ID: f5a33d973154
-Revises: c22d59125ab4
-Create Date: 2023-11-08 12:34:10.536814
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = 'f5a33d973154'
-down_revision = 'c22d59125ab4'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_ferc1')
- batch_op.drop_column('heat_rate_mmbtu_mwh_eia')
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_eia', sa.FLOAT(), nullable=True))
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_ferc1')
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_eia')
-
- # ### end Alembic commands ###
From 4a2be6a52ff38875ab6850351f1c786c56dd9d69 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 15 Nov 2023 21:35:18 +0000
Subject: [PATCH 58/70] Update conda-lock.yml and rendered conda environment
files.
---
environments/conda-linux-64.lock.yml | 56 +--
environments/conda-lock.yml | 699 +++++++++++++-------------
environments/conda-osx-64.lock.yml | 56 +--
environments/conda-osx-arm64.lock.yml | 56 +--
4 files changed, 435 insertions(+), 432 deletions(-)
diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml
index 5b1366e104..cc53eed84a 100644
--- a/environments/conda-linux-64.lock.yml
+++ b/environments/conda-linux-64.lock.yml
@@ -162,7 +162,7 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.7=pyhd8ed1ab_0
+ - dagster-pipes=1.5.8=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- dbus=1.13.6=h5008d03_3
- debugpy=1.8.0=py311hb755f60_1
@@ -249,7 +249,7 @@ dependencies:
- pyparsing=3.1.1=pyhd8ed1ab_0
- pysocks=1.7.1=pyha2e5f31_6
- python-dotenv=1.0.0=pyhd8ed1ab_1
- - python-fastjsonschema=2.18.1=pyhd8ed1ab_0
+ - python-fastjsonschema=2.19.0=pyhd8ed1ab_0
- python-json-logger=2.0.7=pyhd8ed1ab_0
- python-multipart=0.0.6=pyhd8ed1ab_0
- python-tzdata=2023.3=pyhd8ed1ab_0
@@ -283,7 +283,7 @@ dependencies:
- threadpoolctl=3.2.0=pyha21a80b_0
- toml=0.10.2=pyhd8ed1ab_0
- tomli=2.0.1=pyhd8ed1ab_0
- - tomlkit=0.12.2=pyha770c72_0
+ - tomlkit=0.12.3=pyha770c72_0
- toolz=0.12.0=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311h459d7ec_1
@@ -379,7 +379,7 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.30.2=pyhd8ed1ab_0
+ - referencing=0.31.0=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
@@ -400,8 +400,8 @@ dependencies:
- argon2-cffi-bindings=21.2.0=py311h459d7ec_4
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- - aws-c-s3=0.3.23=h7630044_1
- - botocore=1.31.85=pyhd8ed1ab_0
+ - aws-c-s3=0.3.24=h7630044_0
+ - botocore=1.32.0=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311h63ff55d_0
@@ -416,7 +416,7 @@ dependencies:
- harfbuzz=8.3.0=h3d44ed6_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- - jsonschema-specifications=2023.7.1=pyhd8ed1ab_0
+ - jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=hcd42e92_1
- libnetcdf=4.9.2=nompi_h80fb2b6_112
@@ -426,7 +426,7 @@ dependencies:
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311h459d7ec_6
- platformdirs=3.11.0=pyhd8ed1ab_0
- - poppler=23.10.0=h590f24d_0
+ - poppler=23.11.0=h590f24d_0
- psycopg2-binary=2.9.7=pyhd8ed1ab_1
- pybtex=0.24.0=pyhd8ed1ab_2
- pydantic=1.10.13=py311h459d7ec_1
@@ -449,7 +449,7 @@ dependencies:
- alembic=1.12.1=pyhd8ed1ab_0
- arelle-release=2.17.3=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- - aws-crt-cpp=0.24.6=h270613d_0
+ - aws-crt-cpp=0.24.7=h4712614_1
- black=23.10.1=py311h38be061_0
- bottleneck=1.3.7=py311h1f0f07a_1
- cachecontrol=0.13.1=pyhd8ed1ab_0
@@ -467,7 +467,7 @@ dependencies:
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.19.2=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h38be061_0
- - libgdal=3.7.3=h6f3d308_3
+ - libgdal=3.8.0=h0a992f2_1
- numba=0.58.1=py311h96b013e_0
- numexpr=2.8.7=py311h039bad6_104
- oauthlib=3.2.2=pyhd8ed1ab_0
@@ -488,15 +488,15 @@ dependencies:
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0=h38be061_0
- virtualenv=20.24.6=pyhd8ed1ab_0
- - aws-sdk-cpp=1.11.182=h771f7cb_6
- - boto3=1.28.85=pyhd8ed1ab_0
+ - aws-sdk-cpp=1.11.182=h8beafcf_7
+ - boto3=1.29.0=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.7=pyhd8ed1ab_0
+ - dagster=1.5.8=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.7.3=py311h815a124_3
+ - gdal=3.8.0=py311h815a124_1
- geopandas-base=0.14.1=pyha770c72_0
- google-auth=2.23.4=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
@@ -515,48 +515,48 @@ dependencies:
- timezonefinder=6.2.0=py311h459d7ec_2
- catalystcoop.ferc_xbrl_extractor=1.2.1=pyhd8ed1ab_0
- conda-lock=2.4.2=pyhd8ed1ab_0
- - dagster-graphql=1.5.7=pyhd8ed1ab_0
- - dagster-postgres=0.21.7=pyhd8ed1ab_0
- - fiona=1.9.5=py311hbac4ec9_0
+ - dagster-graphql=1.5.8=pyhd8ed1ab_0
+ - dagster-postgres=0.21.8=pyhd8ed1ab_0
+ - fiona=1.9.5=py311hf8e0aa6_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
- graphviz=8.1.0=h28d9a01_0
- ipython=8.17.2=pyh41d4057_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- - libarrow=14.0.1=he5826ec_2_cpu
+ - libarrow=14.0.1=h4df1b6a_3_cpu
- mapclassify=2.6.1=pyhd8ed1ab_0
- nbclient=0.8.0=pyhd8ed1ab_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.7=pyhd8ed1ab_0
+ - dagster-webserver=1.5.8=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- ipykernel=6.26.0=pyhf8b6a83_0
- ipywidgets=8.1.1=pyhd8ed1ab_0
- - libarrow-acero=14.0.1=h59595ed_2_cpu
- - libarrow-flight=14.0.1=h120cb0d_2_cpu
- - libarrow-gandiva=14.0.1=hacb8726_2_cpu
- - libparquet=14.0.1=h352af49_2_cpu
+ - libarrow-acero=14.0.1=h59595ed_3_cpu
+ - libarrow-flight=14.0.1=h120cb0d_3_cpu
+ - libarrow-gandiva=14.0.1=hacb8726_3_cpu
+ - libparquet=14.0.1=h352af49_3_cpu
- nbconvert-core=7.11.0=pyhd8ed1ab_0
- pygraphviz=1.11=py311h72a77b7_1
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- jupyter_console=6.6.3=pyhd8ed1ab_0
- - jupyter_server=2.10.0=pyhd8ed1ab_0
- - libarrow-dataset=14.0.1=h59595ed_2_cpu
- - libarrow-flight-sql=14.0.1=h61ff412_2_cpu
+ - jupyter_server=2.10.1=pyhd8ed1ab_0
+ - libarrow-dataset=14.0.1=h59595ed_3_cpu
+ - libarrow-flight-sql=14.0.1=h61ff412_3_cpu
- nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
- qtconsole-base=5.5.0=pyha770c72_0
- gcsfs=2023.10.0=pyhd8ed1ab_0
- jupyter-lsp=2.2.0=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.1=pyhd8ed1ab_0
- - libarrow-substrait=14.0.1=h61ff412_2_cpu
+ - libarrow-substrait=14.0.1=h61ff412_3_cpu
- nbconvert=7.11.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- jupyterlab=4.0.8=pyhd8ed1ab_0
- - pyarrow=14.0.1=py311h39c9aba_2_cpu
+ - pyarrow=14.0.1=py311h39c9aba_3_cpu
- notebook=7.0.6=pyhd8ed1ab_0
- jupyter=1.0.0=pyhd8ed1ab_10
- sphinx-autoapi=3.0.0=pyhd8ed1ab_0
diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml
index 8fd899317f..c6bc40202a 100644
--- a/environments/conda-lock.yml
+++ b/environments/conda-lock.yml
@@ -2099,15 +2099,15 @@ package:
category: main
optional: false
- name: dagster-pipes
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 903c93eb6d9344cc4af75d6186a3ccb3
- sha256: 9ec1487b36e97049c0c824a345b92465217cab998c7d297eb7a1dab753c05330
+ md5: 638a21e0bc715fe08f5515a2f0d2bd9b
+ sha256: db15f8c5718e985366a174fc86c3c6fb86b8984fa73c94702bae06d0f0b7cd4f
category: main
optional: false
- name: dataclasses
@@ -3227,15 +3227,15 @@ package:
category: main
optional: false
- name: python-fastjsonschema
- version: 2.18.1
+ version: 2.19.0
manager: conda
platform: linux-64
dependencies:
python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 305141cff54af2f90e089d868fffce28
- sha256: 3fb1af1ac7525072c46e111bc4e96ddf971f792ab049ca3aa25dbebbaffb6f7d
+ md5: e4dbdb3585c0266b4710467fe7b75cf4
+ sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
category: main
optional: false
- name: python-json-logger
@@ -3656,15 +3656,15 @@ package:
category: main
optional: false
- name: tomlkit
- version: 0.12.2
+ version: 0.12.3
manager: conda
platform: linux-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
hash:
- md5: 495ddad84b81dde4ee1138dd59ef5805
- sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f
+ md5: 074d0ce7a6261ab8b497c3518796ef3e
+ sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
category: main
optional: false
- name: toolz
@@ -5005,17 +5005,17 @@ package:
category: main
optional: false
- name: referencing
- version: 0.30.2
+ version: 0.31.0
manager: conda
platform: linux-64
dependencies:
attrs: ">=22.2.0"
python: ">=3.8"
rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.0-pyhd8ed1ab_0.conda
hash:
- md5: a33161b983172ba6ef69d5fc850650cd
- sha256: a6768fabc12f1eed87fec68c5c65439e908655cded1e458d70a164abbce13287
+ md5: 38c2b9b24e9a58725a233f1fa32c23e9
+ sha256: 108f27bf249a581acd0f1de0e1e6a4d814ab18943178c2d9a4df02f5c16d2102
category: main
optional: false
- name: restructuredtext_lint
@@ -5297,7 +5297,7 @@ package:
category: main
optional: false
- name: aws-c-s3
- version: 0.3.23
+ version: 0.3.24
manager: conda
platform: linux-64
dependencies:
@@ -5309,14 +5309,14 @@ package:
aws-checksums: ">=0.1.17,<0.1.18.0a0"
libgcc-ng: ">=12"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.23-h7630044_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.24-h7630044_0.conda
hash:
- md5: 76eebe9871477c883d04042758493b98
- sha256: a145f456f0a47f8f7482ce6c23f4bfc3b71cb013598d4e1294930dcc8db56c65
+ md5: 527d813e1a1cfe40902d2254937b404b
+ sha256: 1f276b336ac57166541b1327264639547c7073b30e309502c77ab6eb113ff37c
category: main
optional: false
- name: botocore
- version: 1.31.85
+ version: 1.32.0
manager: conda
platform: linux-64
dependencies:
@@ -5324,10 +5324,10 @@ package:
python: ">=3.7"
python-dateutil: ">=2.1,<3.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.85-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.32.0-pyhd8ed1ab_0.conda
hash:
- md5: fc2ff5b232fa1cec482f5ad6fc83ca9d
- sha256: 89cf1f5349fa27f39ea1290d6f63166183ebd4b8803127d8246f7262afd9b9e1
+ md5: 5dc66c692881e2014e7096681c71211b
+ sha256: fa35195f88fdfd75addce1e291596cd7b4042c91ce4b3fa76464235ca0fcba23
category: main
optional: false
- name: branca
@@ -5538,17 +5538,17 @@ package:
category: main
optional: false
- name: jsonschema-specifications
- version: 2023.7.1
+ version: 2023.11.1
manager: conda
platform: linux-64
dependencies:
importlib_resources: ">=1.4.0"
python: ">=3.8"
- referencing: ">=0.25.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda
+ referencing: ">=0.31.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 7c27ea1bdbe520bb830dcadd59f55cbf
- sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc
+ md5: 094ff9cf36957f95bb74cee42ab140b2
+ sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
category: main
optional: false
- name: jupyter_server_terminals
@@ -5700,7 +5700,7 @@ package:
category: main
optional: false
- name: poppler
- version: 23.10.0
+ version: 23.11.0
manager: conda
platform: linux-64
dependencies:
@@ -5722,10 +5722,10 @@ package:
nss: ">=3.94,<4.0a0"
openjpeg: ">=2.5.0,<3.0a0"
poppler-data: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.10.0-h590f24d_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.11.0-h590f24d_0.conda
hash:
- md5: 06b4a80e2cc3974e55f83e2115e2e90a
- sha256: e1d9245454e0b63077f12b6c331f1d2dc7bd3409369e7fd1f38a29e47b76b64a
+ md5: 671439d8eca2084bb5a75561fff23a85
+ sha256: 8050002e01be124efcb82e32e740676f5ed7dfe852f335408554e6dc3b060ad9
category: main
optional: false
- name: psycopg2-binary
@@ -6074,7 +6074,7 @@ package:
category: main
optional: false
- name: aws-crt-cpp
- version: 0.24.6
+ version: 0.24.7
manager: conda
platform: linux-64
dependencies:
@@ -6085,14 +6085,14 @@ package:
aws-c-http: ">=0.7.14,<0.7.15.0a0"
aws-c-io: ">=0.13.35,<0.13.36.0a0"
aws-c-mqtt: ">=0.9.9,<0.9.10.0a0"
- aws-c-s3: ">=0.3.23,<0.3.24.0a0"
+ aws-c-s3: ">=0.3.24,<0.3.25.0a0"
aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.24.6-h270613d_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.24.7-h4712614_1.conda
hash:
- md5: 6c72523113e6bdb0b70e521f8e21f122
- sha256: 850b00b1b7de5cce9e6e2af9fa8f69ae804e8778a3bc7b3b3eed0a194b1e206e
+ md5: 25b0124936225427980b8b7ab65f1ce2
+ sha256: 63ca05c2c38d1a7f691c7988c213669ecba16d17419f861e37011e668ba765ae
category: main
optional: false
- name: black
@@ -6362,7 +6362,7 @@ package:
category: main
optional: false
- name: libgdal
- version: 3.7.3
+ version: 3.8.0
manager: conda
platform: linux-64
dependencies:
@@ -6378,6 +6378,7 @@ package:
json-c: ">=0.17,<0.18.0a0"
kealib: ">=1.5.2,<1.6.0a0"
lerc: ">=4.0.0,<5.0a0"
+ libaec: ">=1.1.2,<2.0a0"
libarchive: ">=3.7.2,<3.8.0a0"
libcurl: ">=8.4.0,<9.0a0"
libdeflate: ">=1.19,<1.20.0a0"
@@ -6401,17 +6402,17 @@ package:
openjpeg: ">=2.5.0,<3.0a0"
openssl: ">=3.1.4,<4.0a0"
pcre2: ">=10.40,<10.41.0a0"
- poppler: ">=23.10.0,<23.11.0a0"
+ poppler: ">=23.11.0,<23.12.0a0"
postgresql: ""
proj: ">=9.3.0,<9.3.1.0a0"
tiledb: ">=2.16,<2.17.0a0"
xerces-c: ">=3.2.4,<3.3.0a0"
xz: ">=5.2.6,<6.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.7.3-h6f3d308_3.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.0-h0a992f2_1.conda
hash:
- md5: 4e54b97f9e8a71f8a9945cbd2d905252
- sha256: f17f7e3926894867b9eb048f7a3032b67d59600fb1d0f0555bf0a32b1d4deefa
+ md5: edc8775e918b2dfd06165ecffa1afd89
+ sha256: 87b87e2ecc3c8e1359245e5e76f98bc7f28e8bb3cec48a66025db32b7a023b10
category: main
optional: false
- name: numba
@@ -6742,31 +6743,31 @@ package:
aws-c-common: ">=0.9.8,<0.9.9.0a0"
aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
aws-checksums: ">=0.1.17,<0.1.18.0a0"
- aws-crt-cpp: ">=0.24.6,<0.24.7.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
libcurl: ">=8.4.0,<9.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
libzlib: ">=1.2.13,<1.3.0a0"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.182-h771f7cb_6.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.182-h8beafcf_7.conda
hash:
- md5: d7bdd7c6458cbfdbca8246d6687c9e87
- sha256: 5a44a81fd9a1091edcee9dac57f2df34d213a0318ad71bfb838b17480baa627e
+ md5: fe27868256b2d2a57d8136e08cdff2bb
+ sha256: c71ca50ad5e4c806d76b3584a53b295db317ffa92bd8f28eacc2bf88a3877eee
category: main
optional: false
- name: boto3
- version: 1.28.85
+ version: 1.29.0
manager: conda
platform: linux-64
dependencies:
- botocore: ">=1.31.85,<1.32.0"
+ botocore: ">=1.32.0,<1.33.0"
jmespath: ">=0.7.1,<2.0.0"
python: ">=3.7"
s3transfer: ">=0.7.0,<0.8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.85-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.29.0-pyhd8ed1ab_0.conda
hash:
- md5: 445613b54b76c24a86b4fa038e9fe0c5
- sha256: 8833f6eb12463e25b7ffea775ce7563fda89b4189bce1617f862d6591e95a283
+ md5: d9255fe2d07b6201b953ddb3fc93bf23
+ sha256: 27836e2f71e6ea00b82a8e1a57c7ff9609d9fba9d06bc6acffb86aecb2179a5a
category: main
optional: false
- name: cachecontrol-with-filecache
@@ -6784,7 +6785,7 @@ package:
category: main
optional: false
- name: dagster
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: linux-64
dependencies:
@@ -6792,13 +6793,13 @@ package:
click: ">=5.0"
coloredlogs: ">=6.1,<=14.0"
croniter: ">=0.3.34"
- dagster-pipes: ">=1.5.7,<1.5.8.0a0"
+ dagster-pipes: ">=1.5.8,<1.5.9.0a0"
docstring_parser: ""
grpcio: ">=1.44.0"
grpcio-health-checking: ">=1.44.0"
jinja2: ""
packaging: ">=20.9"
- pendulum: ""
+ pendulum: <3
protobuf: ">=3.20.0"
psutil: ">=1.0"
pydantic: ">1.10.0,!=1.10.7"
@@ -6818,10 +6819,10 @@ package:
typing_extensions: ">=4.4.0"
universal_pathlib: ""
watchdog: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 62ed693f52b4b2127c080337bde8dfc2
- sha256: d7b68426181b0d08f370e1c6e912e05cb152590b84a95c761efdc672e53279cb
+ md5: 253eaf1bdc578621a17ef26059eddf04
+ sha256: 448468dee245955ca5f15fb5ae75e7bce6d361568e6da15cebf8cbb24feb7b1b
category: main
optional: false
- name: datasette
@@ -6913,23 +6914,23 @@ package:
category: main
optional: false
- name: gdal
- version: 3.7.3
+ version: 3.8.0
manager: conda
platform: linux-64
dependencies:
hdf5: ">=1.14.2,<1.14.3.0a0"
libgcc-ng: ">=12"
- libgdal: 3.7.3
+ libgdal: 3.8.0
libstdcxx-ng: ">=12"
libxml2: ">=2.11.5,<2.12.0a0"
numpy: ">=1.23.5,<2.0a0"
openssl: ">=3.1.4,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.7.3-py311h815a124_3.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.0-py311h815a124_1.conda
hash:
- md5: 8f02d7b23db57c25743258ebf26d832e
- sha256: c483634be9f28342c0f566db6cf861b9cd0cd99c2fef7dc001ed7b6c23eb9fd0
+ md5: 300c7d9823df699e3f52dac28bfadd25
+ sha256: c77e0aa84ddc475739090b68a83f4ac5700e73650938975f5a87386e9813407e
category: main
optional: false
- name: geopandas-base
@@ -7278,34 +7279,34 @@ package:
category: main
optional: false
- name: dagster-graphql
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: linux-64
dependencies:
- dagster: ">=1.5.7,<1.5.8.0a0"
+ dagster: ">=1.5.8,<1.5.9.0a0"
gql-with-requests: ">=3.0.0"
graphene: ">=3"
python: ">=3.8"
requests: ""
starlette: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: ccf7c623d25c6d57594e14b4a054f627
- sha256: 5fa8b0bd59d5d42ca6c0d803091e17309d886a4a1c13e46208e3d154b90d7511
+ md5: 182ad20a50ddd9a04e53d6c438984c4b
+ sha256: 5d6310860a69383b6bc9d01c16fde63c1f95814d953162205c1ba96cfed24caa
category: dev
optional: true
- name: dagster-postgres
- version: 0.21.7
+ version: 0.21.8
manager: conda
platform: linux-64
dependencies:
- dagster: 1.5.7.*
+ dagster: 1.5.8.*
psycopg2-binary: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.8-pyhd8ed1ab_0.conda
hash:
- md5: 95d4c91fc4f345cc25e69d354a7cd7b2
- sha256: fa4aa38d94c06b20b0c773a3b2a0402936a4f62bb91e6c795ed2acebc965ad48
+ md5: 2dec0560d4004d49d5fc111607ef0efd
+ sha256: 6a90ccee7183054d1e9bf30b51c65afc02d1cb2310b83ce3a8a228c6e13850c0
category: main
optional: false
- name: fiona
@@ -7320,7 +7321,7 @@ package:
gdal: ""
importlib-metadata: ""
libgcc-ng: ">=12"
- libgdal: ">=3.7.2,<3.8.0a0"
+ libgdal: ">=3.8.0,<3.9.0a0"
libstdcxx-ng: ">=12"
munch: ""
numpy: ">=1.23.5,<2.0a0"
@@ -7329,10 +7330,10 @@ package:
setuptools: ""
shapely: ""
six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hbac4ec9_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hf8e0aa6_1.conda
hash:
- md5: 786d3808394b1bdfd3f41f2e2c67279e
- sha256: 529600df1964a94c7745b87e31f432ddc03c7b5fd652c193c594c995e1964c6b
+ md5: 961758d24e419de785e99b038033f9ae
+ sha256: 5579deb516af98c167e11b0f9250ce53e1780eade803b03ad9507fb41b295a5c
category: main
optional: false
- name: google-api-core
@@ -7444,7 +7445,7 @@ package:
manager: conda
platform: linux-64
dependencies:
- aws-crt-cpp: ">=0.24.6,<0.24.7.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
bzip2: ">=1.0.8,<2.0a0"
glog: ">=0.6.0,<0.7.0a0"
@@ -7462,10 +7463,10 @@ package:
re2: ""
snappy: ">=1.1.10,<2.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-14.0.1-he5826ec_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-14.0.1-h4df1b6a_3_cpu.conda
hash:
- md5: de46063f85dda71f4d63f7eabf817d38
- sha256: 05678a4cd3417ff0c3cfeaf298fbb572cf62a8df8183ae9d8016cf26f8bb5ad9
+ md5: 8f95beca2cdede6329401193609f497a
+ sha256: c6595ba12a12e8e8c518daeb1bd6cdc584c41d331be2738c136347af5a606519
category: main
optional: false
- name: mapclassify
@@ -7545,20 +7546,20 @@ package:
category: main
optional: false
- name: dagster-webserver
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: linux-64
dependencies:
click: ">=7.0,<9.0"
- dagster: ">=1.5.7,<1.5.8.0a0"
- dagster-graphql: ">=1.5.7,<1.5.8.0a0"
+ dagster: ">=1.5.8,<1.5.9.0a0"
+ dagster-graphql: ">=1.5.8,<1.5.9.0a0"
python: ">=3.8"
starlette: ""
uvicorn-standard: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: c53c5335216e11f20637dde972a8cdcd
- sha256: 032d255c04bb59ed2ebf2e6742d52293284dc0ae31ec6cd117665bb133d5f8f6
+ md5: 0afe785d6ae1523e6802395259c0d81f
+ sha256: ae458539ee3eba822facace3285c62169b5daf376c0a571dbf22198d6f3587f0
category: dev
optional: true
- name: geopandas
@@ -7645,10 +7646,10 @@ package:
libarrow: 14.0.1
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-14.0.1-h59595ed_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-14.0.1-h59595ed_3_cpu.conda
hash:
- md5: e59c90dcc94a1662d951bdd9ed489e91
- sha256: 789c909cadb76d2936c946acf116d508a8132babe6aaeb6326f73ec9dac8e023
+ md5: c76ae01767e94ee20c974a10e4f071a7
+ sha256: 9b471ca984de6028add562c68135c050b66844c1597472c6162b53004793b843
category: main
optional: false
- name: libarrow-flight
@@ -7663,10 +7664,10 @@ package:
libprotobuf: ">=4.24.4,<4.24.5.0a0"
libstdcxx-ng: ">=12"
ucx: ">=1.15.0,<1.16.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-14.0.1-h120cb0d_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-14.0.1-h120cb0d_3_cpu.conda
hash:
- md5: 4b0ac222c6c8f25f2f4d0f9921c4eddb
- sha256: 30f36492a0c1bcbfbe9b33ac418ca261e45d80d182147e665a91ebb6f5b82c88
+ md5: 3aaef593671fe31fb2e3cc3b7def5e6a
+ sha256: 96d4f0ce2072e90c21a4d6a020c50fce74e1b0afdc578a5d32430fcf179ba1a9
category: main
optional: false
- name: libarrow-gandiva
@@ -7682,10 +7683,10 @@ package:
libutf8proc: ">=2.8.0,<3.0a0"
openssl: ">=3.1.4,<4.0a0"
re2: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-gandiva-14.0.1-hacb8726_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-gandiva-14.0.1-hacb8726_3_cpu.conda
hash:
- md5: a7501248d25b3afded9602b86669be62
- sha256: da3f84d7b67571b39e5f98c2ad4708b7fbc0831502210ebb05613f5e3dffcf3a
+ md5: 0bd1c4aeb8a8386da85df4bc0b21efc1
+ sha256: 9b5d9b9a4fed1171a92795b329bc26b106471877ff5f80942ff1ad84bff7f3e2
category: main
optional: false
- name: libparquet
@@ -7698,10 +7699,10 @@ package:
libstdcxx-ng: ">=12"
libthrift: ">=0.19.0,<0.19.1.0a0"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-14.0.1-h352af49_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-14.0.1-h352af49_3_cpu.conda
hash:
- md5: c8e0b6b4e56aa4767727db2f6a0b0282
- sha256: 3b2a23163a8c9dae3d536e96035129708adf205dd1b00437ebeb4ec4ba61cd8c
+ md5: 5e2f5615862bba1318a11e97d6a59d56
+ sha256: 96e192584e790a8bc010084c829de0aaae357979aa3b80b50d36f72179d8029f
category: main
optional: false
- name: nbconvert-core
@@ -7830,7 +7831,7 @@ package:
category: main
optional: false
- name: jupyter_server
- version: 2.10.0
+ version: 2.10.1
manager: conda
platform: linux-64
dependencies:
@@ -7839,7 +7840,7 @@ package:
jinja2: ""
jupyter_client: ">=7.4.4"
jupyter_core: ">=4.12,!=5.0.*"
- jupyter_events: ">=0.6.0"
+ jupyter_events: ">=0.9.0"
jupyter_server_terminals: ""
nbconvert-core: ">=6.4.4"
nbformat: ">=5.3.0"
@@ -7853,10 +7854,10 @@ package:
tornado: ">=6.2.0"
traitlets: ">=5.6.0"
websocket-client: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.1-pyhd8ed1ab_0.conda
hash:
- md5: 016d56f5d81b9364d1da5f4895a2a9f8
- sha256: 0b9a72f28ff8a12e6ea0ae43d3ea93e288074d29348c5fc6fbb3a5e5e18b2ecd
+ md5: 7d15498584d83de3b357425e37086397
+ sha256: b8b55ee57785b39a9096884bfd1da3858da8f27764572321d51a3dd0a990de86
category: main
optional: false
- name: libarrow-dataset
@@ -7869,10 +7870,10 @@ package:
libgcc-ng: ">=12"
libparquet: 14.0.1
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-14.0.1-h59595ed_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-14.0.1-h59595ed_3_cpu.conda
hash:
- md5: c2b9d36bb74f3c241c1437a1b7f8a97b
- sha256: 0cfaf0553474379df317fbb117dd8176d560c4fe8b27d4bc5c5b95395f6e535d
+ md5: 39b1db7f15fb88394e57caf9ffc653f5
+ sha256: 86aefe875eb8110a774a6ad6da94e868ed837ae054e630adec391eab7c559af4
category: main
optional: false
- name: libarrow-flight-sql
@@ -7885,10 +7886,10 @@ package:
libgcc-ng: ">=12"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-sql-14.0.1-h61ff412_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-sql-14.0.1-h61ff412_3_cpu.conda
hash:
- md5: 7315191986ea5c5f452f367848654937
- sha256: 6f15d91ef2c408f272aab9188c27ae9843f40ef8c44bcfdafc7deaaa70710bc1
+ md5: bee925cf81e536f064c5fb58e770c102
+ sha256: da8646f41e41d0808e28059e660fcac9048c8f0e1055bdcef6ccbd2c24036eb1
category: main
optional: false
- name: nbconvert-pandoc
@@ -8003,10 +8004,10 @@ package:
libgcc-ng: ">=12"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-14.0.1-h61ff412_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-14.0.1-h61ff412_3_cpu.conda
hash:
- md5: 4a660acddf1dde96a4e1afd721d6c676
- sha256: daf940a8eabd896137d7f049afd3b84bdd8874b19d7aaf7f16fdb71a71c31413
+ md5: d7f6d75fd346c05c0c836326b72a8500
+ sha256: 6ac78ba3f3fcb5128dc3c0cc907d418f9edd74456b4712c2af843b35fe11585c
category: main
optional: false
- name: nbconvert
@@ -8080,10 +8081,10 @@ package:
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-14.0.1-py311h39c9aba_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-14.0.1-py311h39c9aba_3_cpu.conda
hash:
- md5: 8c4808b31d3763d200b01e47fecb075d
- sha256: 542829ed3d3e4af27d4bcf7efcade12a7e84ef9652dd65202c620c0ab1ccab8a
+ md5: b5aa577bb166417b14e9beba61816680
+ sha256: 2e9686e59b87f519409ab726dbfaa08a641e8a6186f97b4a0b1a6d0175c2761d
category: main
optional: false
- name: notebook
@@ -10202,15 +10203,15 @@ package:
category: main
optional: false
- name: dagster-pipes
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 903c93eb6d9344cc4af75d6186a3ccb3
- sha256: 9ec1487b36e97049c0c824a345b92465217cab998c7d297eb7a1dab753c05330
+ md5: 638a21e0bc715fe08f5515a2f0d2bd9b
+ sha256: db15f8c5718e985366a174fc86c3c6fb86b8984fa73c94702bae06d0f0b7cd4f
category: main
optional: false
- name: dataclasses
@@ -11215,15 +11216,15 @@ package:
category: main
optional: false
- name: python-fastjsonschema
- version: 2.18.1
+ version: 2.19.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 305141cff54af2f90e089d868fffce28
- sha256: 3fb1af1ac7525072c46e111bc4e96ddf971f792ab049ca3aa25dbebbaffb6f7d
+ md5: e4dbdb3585c0266b4710467fe7b75cf4
+ sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
category: main
optional: false
- name: python-json-logger
@@ -11625,15 +11626,15 @@ package:
category: main
optional: false
- name: tomlkit
- version: 0.12.2
+ version: 0.12.3
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
hash:
- md5: 495ddad84b81dde4ee1138dd59ef5805
- sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f
+ md5: 074d0ce7a6261ab8b497c3518796ef3e
+ sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
category: main
optional: false
- name: toolz
@@ -11999,7 +12000,7 @@ package:
category: main
optional: false
- name: aws-c-s3
- version: 0.3.23
+ version: 0.3.24
manager: conda
platform: osx-64
dependencies:
@@ -12009,10 +12010,10 @@ package:
aws-c-http: ">=0.7.14,<0.7.15.0a0"
aws-c-io: ">=0.13.35,<0.13.36.0a0"
aws-checksums: ">=0.1.17,<0.1.18.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.3.23-hb1cbb54_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.3.24-hb1cbb54_0.conda
hash:
- md5: dfea24cf0289adc80d7aa3bb562a58af
- sha256: 2fba093610426d453350e335a69c33edb48ab30efcdb5a6191d583b5e36b5014
+ md5: 1ecf15003d2a41c0c3a834c0c8df2201
+ sha256: e6f91423b15e0501e8f635d740cb2db39c057e97036e870aaf11b3a63a576335
category: main
optional: false
- name: babel
@@ -12695,7 +12696,7 @@ package:
category: main
optional: false
- name: poppler
- version: 23.10.0
+ version: 23.11.0
manager: conda
platform: osx-64
dependencies:
@@ -12718,10 +12719,10 @@ package:
nss: ">=3.94,<4.0a0"
openjpeg: ">=2.5.0,<3.0a0"
poppler-data: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/poppler-23.10.0-hdd5a5e8_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/poppler-23.11.0-hdd5a5e8_0.conda
hash:
- md5: 3ba0ca934cf0ce30de692abdc7807419
- sha256: 604803db4148415d2096f9a2cbc29efae2755b9a65715875aeb620d6f2bb03b5
+ md5: 60ffe2d3a09ff99eb2601487d6ddaeea
+ sha256: fb6a53ddac3fa8c097b4a0b7d2f40219b13bfa3324147aaf6c5a14ee5fb27521
category: main
optional: false
- name: postgresql
@@ -12904,17 +12905,17 @@ package:
category: main
optional: false
- name: referencing
- version: 0.30.2
+ version: 0.31.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
attrs: ">=22.2.0"
rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.0-pyhd8ed1ab_0.conda
hash:
- md5: a33161b983172ba6ef69d5fc850650cd
- sha256: a6768fabc12f1eed87fec68c5c65439e908655cded1e458d70a164abbce13287
+ md5: 38c2b9b24e9a58725a233f1fa32c23e9
+ sha256: 108f27bf249a581acd0f1de0e1e6a4d814ab18943178c2d9a4df02f5c16d2102
category: main
optional: false
- name: restructuredtext_lint
@@ -13190,7 +13191,7 @@ package:
category: main
optional: false
- name: aws-crt-cpp
- version: 0.24.6
+ version: 0.24.7
manager: conda
platform: osx-64
dependencies:
@@ -13202,17 +13203,17 @@ package:
aws-c-http: ">=0.7.14,<0.7.15.0a0"
aws-c-io: ">=0.13.35,<0.13.36.0a0"
aws-c-mqtt: ">=0.9.9,<0.9.10.0a0"
- aws-c-s3: ">=0.3.23,<0.3.24.0a0"
+ aws-c-s3: ">=0.3.24,<0.3.25.0a0"
aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.24.6-h7eda119_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.24.7-ha2eb20f_1.conda
hash:
- md5: f1e9885e6e8c37329493456d3f3741e3
- sha256: 8c6a4987c2db07fff1b519ea7b98224a511894ef8abee464e6428b8405e23bf2
+ md5: 1646058bbdbc33430fd3959a4460b3a0
+ sha256: 59df54ce67ba92330c2a449bd77d0f9db6ae8ce6a2aee86d73e84f239bcb1a45
category: main
optional: false
- name: botocore
- version: 1.31.85
+ version: 1.32.0
manager: conda
platform: osx-64
dependencies:
@@ -13220,10 +13221,10 @@ package:
python-dateutil: ">=2.1,<3.0.0"
jmespath: ">=0.7.1,<2.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.85-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.32.0-pyhd8ed1ab_0.conda
hash:
- md5: fc2ff5b232fa1cec482f5ad6fc83ca9d
- sha256: 89cf1f5349fa27f39ea1290d6f63166183ebd4b8803127d8246f7262afd9b9e1
+ md5: 5dc66c692881e2014e7096681c71211b
+ sha256: fa35195f88fdfd75addce1e291596cd7b4042c91ce4b3fa76464235ca0fcba23
category: main
optional: false
- name: branca
@@ -13413,17 +13414,17 @@ package:
category: main
optional: false
- name: jsonschema-specifications
- version: 2023.7.1
+ version: 2023.11.1
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
importlib_resources: ">=1.4.0"
- referencing: ">=0.25.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda
+ referencing: ">=0.31.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 7c27ea1bdbe520bb830dcadd59f55cbf
- sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc
+ md5: 094ff9cf36957f95bb74cee42ab140b2
+ sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
category: main
optional: false
- name: jupyter_server_terminals
@@ -13954,15 +13955,15 @@ package:
aws-c-common: ">=0.9.8,<0.9.9.0a0"
aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
aws-checksums: ">=0.1.17,<0.1.18.0a0"
- aws-crt-cpp: ">=0.24.6,<0.24.7.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
libcurl: ">=8.4.0,<9.0a0"
libcxx: ">=16.0.6"
libzlib: ">=1.2.13,<1.3.0a0"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.182-h06c5342_6.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.182-h28d282b_7.conda
hash:
- md5: 57a340066ffd1526abc6a946d7faf8ef
- sha256: 308e26554c9deeb0b11e54f013d6e05c5ebd0aca283f86f94fd0771871bf6af7
+ md5: 131091ac3ecfe9c409088e1b3861f064
+ sha256: 57029820f9e2af9f735ea2afcd8eeeeb3bac74e52e1ba6ec5666276b8e6e67f8
category: main
optional: false
- name: black
@@ -14262,7 +14263,7 @@ package:
category: main
optional: false
- name: libgdal
- version: 3.7.3
+ version: 3.8.0
manager: conda
platform: osx-64
dependencies:
@@ -14278,6 +14279,7 @@ package:
json-c: ">=0.17,<0.18.0a0"
kealib: ">=1.5.2,<1.6.0a0"
lerc: ">=4.0.0,<5.0a0"
+ libaec: ">=1.1.2,<2.0a0"
libarchive: ">=3.7.2,<3.8.0a0"
libcurl: ">=8.4.0,<9.0a0"
libcxx: ">=16.0.6"
@@ -14299,17 +14301,17 @@ package:
openjpeg: ">=2.5.0,<3.0a0"
openssl: ">=3.1.4,<4.0a0"
pcre2: ">=10.40,<10.41.0a0"
- poppler: ">=23.10.0,<23.11.0a0"
+ poppler: ">=23.11.0,<23.12.0a0"
postgresql: ""
proj: ">=9.3.0,<9.3.1.0a0"
tiledb: ">=2.16,<2.17.0a0"
xerces-c: ">=3.2.4,<3.3.0a0"
xz: ">=5.2.6,<6.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.7.3-h926149b_3.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.0-h0ef8398_1.conda
hash:
- md5: 3f4e1c554592171712c377cc74f302fc
- sha256: 67667053ddb83c0ad45d0927b3c597dbeea89105ee6c73938f7fee570fd9b50f
+ md5: c5bc0d7e152cd5da44c78457ffded064
+ sha256: 99b281846fd1a01727619a2281ff8f1ea74eaebbac14bc8860bed354e7542c7d
category: main
optional: false
- name: librsvg
@@ -14625,18 +14627,18 @@ package:
category: main
optional: false
- name: boto3
- version: 1.28.85
+ version: 1.29.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
jmespath: ">=0.7.1,<2.0.0"
s3transfer: ">=0.7.0,<0.8.0"
- botocore: ">=1.31.85,<1.32.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.85-pyhd8ed1ab_0.conda
+ botocore: ">=1.32.0,<1.33.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.29.0-pyhd8ed1ab_0.conda
hash:
- md5: 445613b54b76c24a86b4fa038e9fe0c5
- sha256: 8833f6eb12463e25b7ffea775ce7563fda89b4189bce1617f862d6591e95a283
+ md5: d9255fe2d07b6201b953ddb3fc93bf23
+ sha256: 27836e2f71e6ea00b82a8e1a57c7ff9609d9fba9d06bc6acffb86aecb2179a5a
category: main
optional: false
- name: cachecontrol-with-filecache
@@ -14654,7 +14656,7 @@ package:
category: main
optional: false
- name: dagster
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-64
dependencies:
@@ -14668,7 +14670,6 @@ package:
tomli: ""
python-dotenv: ""
pywin32-on-windows: ""
- pendulum: ""
docstring_parser: ""
universal_pathlib: ""
python: ">=3.8"
@@ -14687,11 +14688,12 @@ package:
grpcio: ">=1.44.0"
alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
pydantic: ">1.10.0,!=1.10.7"
- dagster-pipes: ">=1.5.7,<1.5.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.7-pyhd8ed1ab_0.conda
+ pendulum: <3
+ dagster-pipes: ">=1.5.8,<1.5.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 62ed693f52b4b2127c080337bde8dfc2
- sha256: d7b68426181b0d08f370e1c6e912e05cb152590b84a95c761efdc672e53279cb
+ md5: 253eaf1bdc578621a17ef26059eddf04
+ sha256: 448468dee245955ca5f15fb5ae75e7bce6d361568e6da15cebf8cbb24feb7b1b
category: main
optional: false
- name: datasette
@@ -14783,23 +14785,23 @@ package:
category: main
optional: false
- name: gdal
- version: 3.7.3
+ version: 3.8.0
manager: conda
platform: osx-64
dependencies:
__osx: ">=10.9"
hdf5: ">=1.14.2,<1.14.3.0a0"
libcxx: ">=16.0.6"
- libgdal: 3.7.3
+ libgdal: 3.8.0
libxml2: ">=2.11.5,<2.12.0a0"
numpy: ">=1.23.5,<2.0a0"
openssl: ">=3.1.4,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.7.3-py311h5646c56_3.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.0-py311h5646c56_1.conda
hash:
- md5: 994012e3e8ce2c22bb3f2be2773d765a
- sha256: 8cff429825291df6adafc6f68275c5b2114f310cd452ffb885f5ea87cc4e3260
+ md5: c46175f8aeffce8b8064b920b628111b
+ sha256: 7ae6740af7c596eba0eab9b600324c1261b9e07be9a9aaad08fe624509abe929
category: main
optional: false
- name: geopandas-base
@@ -14928,7 +14930,7 @@ package:
platform: osx-64
dependencies:
__osx: ">=10.9"
- aws-crt-cpp: ">=0.24.6,<0.24.7.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
bzip2: ">=1.0.8,<2.0a0"
glog: ">=0.6.0,<0.7.0a0"
@@ -14945,10 +14947,10 @@ package:
re2: ""
snappy: ">=1.1.10,<2.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.1-h3b78187_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.1-hd201b0c_3_cpu.conda
hash:
- md5: 4019faa1f37173f65a63ab72f6de7b9b
- sha256: 7f3d3522779cfe412ad06609a98a9aa49e7f08826486abc5f48427e92c4dd5c2
+ md5: ca9ae7988629996eeab28791c9a97b12
+ sha256: 6866b9fbece513b932ae9862a1281f96a3fb05572f02ba3af3d3021363a24553
category: main
optional: false
- name: matplotlib-base
@@ -15151,7 +15153,7 @@ package:
category: main
optional: false
- name: dagster-graphql
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-64
dependencies:
@@ -15160,25 +15162,25 @@ package:
python: ">=3.8"
graphene: ">=3"
gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.7,<1.5.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.7-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.8,<1.5.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: ccf7c623d25c6d57594e14b4a054f627
- sha256: 5fa8b0bd59d5d42ca6c0d803091e17309d886a4a1c13e46208e3d154b90d7511
+ md5: 182ad20a50ddd9a04e53d6c438984c4b
+ sha256: 5d6310860a69383b6bc9d01c16fde63c1f95814d953162205c1ba96cfed24caa
category: dev
optional: true
- name: dagster-postgres
- version: 0.21.7
+ version: 0.21.8
manager: conda
platform: osx-64
dependencies:
psycopg2-binary: ""
python: ">=3.8"
- dagster: 1.5.7.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.7-pyhd8ed1ab_0.conda
+ dagster: 1.5.8.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.8-pyhd8ed1ab_0.conda
hash:
- md5: 95d4c91fc4f345cc25e69d354a7cd7b2
- sha256: fa4aa38d94c06b20b0c773a3b2a0402936a4f62bb91e6c795ed2acebc965ad48
+ md5: 2dec0560d4004d49d5fc111607ef0efd
+ sha256: 6a90ccee7183054d1e9bf30b51c65afc02d1cb2310b83ce3a8a228c6e13850c0
category: main
optional: false
- name: fiona
@@ -15194,7 +15196,7 @@ package:
gdal: ""
importlib-metadata: ""
libcxx: ">=16.0.6"
- libgdal: ">=3.7.2,<3.8.0a0"
+ libgdal: ">=3.8.0,<3.9.0a0"
munch: ""
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
@@ -15202,10 +15204,10 @@ package:
setuptools: ""
shapely: ""
six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.5-py311hf14a637_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.5-py311h809632c_1.conda
hash:
- md5: b0a818c3ad6768567ea7e72ca7a777f7
- sha256: ce1888df0112ab2405e6f30f04a208fab379a9598e7b7c89289fb3bbc5b4950c
+ md5: fa38d43ecb08f4db5107fc6390949414
+ sha256: 80cfa5135122c959a7ec656c7c1c1fcc60398669029d86fac1cb9a3d3c5cacc1
category: main
optional: false
- name: google-api-core
@@ -15291,10 +15293,10 @@ package:
__osx: ">=10.9"
libarrow: 14.0.1
libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.1-hc222712_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.1-hc222712_3_cpu.conda
hash:
- md5: 7842ca98457c1ffa601dc7e9fd2e92ef
- sha256: 27cbb0b3a1d6757c20d7d7f9e33dcfb6f119981a1d3fbfef5f55b52da22c2955
+ md5: 920ead842f00024ab7c3b37646288aa1
+ sha256: 3c71cbabc89643b8b771ea226fe0e564baa102c06dc169cda5db033df1b2b5f2
category: main
optional: false
- name: libarrow-flight
@@ -15308,10 +15310,10 @@ package:
libcxx: ">=15.0.7"
libgrpc: ">=1.59.2,<1.60.0a0"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.1-h440f1c2_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.1-h440f1c2_3_cpu.conda
hash:
- md5: 8094cb0672ae6dff49fe1fb8e418e24d
- sha256: fd2929c68da7c8dbad7416cb1352b3b486a586c4d0ebd498ae02d1894fc2513e
+ md5: 729e2fc0e72d1b7b139422ed8ecf41df
+ sha256: 91e001bb4208afc6fc24e3cc6bd07a2e423ab83220f659b790b1c64c1bb61af7
category: main
optional: false
- name: libarrow-gandiva
@@ -15327,10 +15329,10 @@ package:
libutf8proc: ">=2.8.0,<3.0a0"
openssl: ">=3.1.4,<4.0a0"
re2: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.1-heeebe7c_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.1-heeebe7c_3_cpu.conda
hash:
- md5: 6755738a16ce967f8c9567890a273200
- sha256: ca1b565c6c15137a7f6d149a50652616f7bd3938816f7f39f3546a15d55c2a2b
+ md5: 31559f43790c54a2494b888051b441a7
+ sha256: 0658e77bf9099baf808b2fecd6b0d87f8e236ec7ccf17d0418f1cd9ac674d0ff
category: main
optional: false
- name: libparquet
@@ -15343,10 +15345,10 @@ package:
libcxx: ">=15.0.7"
libthrift: ">=0.19.0,<0.19.1.0a0"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.1-h27bd29f_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.1-h27bd29f_3_cpu.conda
hash:
- md5: b00156dd2ef6c9c5c4f61493a46ea5e2
- sha256: 9a2b234522ff85e23b1d74d048136f016e9c04040ed248a17e29fabeab9f218b
+ md5: e6dc5d4796ce80233fe1233e651ec983
+ sha256: 92d7137e89cff12faf7f16e556bee21b71d0e1b78e3305e2e2e5da15ba8745fe
category: main
optional: false
- name: mapclassify
@@ -15440,7 +15442,7 @@ package:
category: main
optional: false
- name: dagster-webserver
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-64
dependencies:
@@ -15448,12 +15450,12 @@ package:
uvicorn-standard: ""
python: ">=3.8"
click: ">=7.0,<9.0"
- dagster: ">=1.5.7,<1.5.8.0a0"
- dagster-graphql: ">=1.5.7,<1.5.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.7-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.8,<1.5.9.0a0"
+ dagster-graphql: ">=1.5.8,<1.5.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: c53c5335216e11f20637dde972a8cdcd
- sha256: 032d255c04bb59ed2ebf2e6742d52293284dc0ae31ec6cd117665bb133d5f8f6
+ md5: 0afe785d6ae1523e6802395259c0d81f
+ sha256: ae458539ee3eba822facace3285c62169b5daf376c0a571dbf22198d6f3587f0
category: dev
optional: true
- name: geopandas
@@ -15543,10 +15545,10 @@ package:
libarrow-acero: 14.0.1
libcxx: ">=15.0.7"
libparquet: 14.0.1
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.1-hc222712_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.1-hc222712_3_cpu.conda
hash:
- md5: da79e5862e4264f7df2fe5d3643b0c89
- sha256: 7ce93a7d13401379a0c8ef22fcff128005f2ccfce5196db665c373eae5adeca1
+ md5: b4e8a2dfbd7e2f2cae34158012e4d5c1
+ sha256: beaf2af22a35fd4ffcf29f1b44df1ca8a77b0d9a87abff1de938aaf72b26dc4d
category: main
optional: false
- name: libarrow-flight-sql
@@ -15559,10 +15561,10 @@ package:
libarrow-flight: 14.0.1
libcxx: ">=15.0.7"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.1-h2cc6c1c_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.1-h2cc6c1c_3_cpu.conda
hash:
- md5: 0d0ef77169ffb6d0bdb505dcaaa2e29e
- sha256: 7a2860ee6e3327a12f85c3a2837e2546767c086fd43c869ec8987cd1d96149ce
+ md5: 018c16ea4875bd012b4e525246835f30
+ sha256: 8f73fa15493cf0e651ae7accf9a54547967276a2ed67a7c8623eb0dabd5eb300
category: main
optional: false
- name: nbconvert-core
@@ -15676,7 +15678,7 @@ package:
category: main
optional: false
- name: jupyter_server
- version: 2.10.0
+ version: 2.10.1
manager: conda
platform: osx-64
dependencies:
@@ -15696,13 +15698,13 @@ package:
nbformat: ">=5.3.0"
pyzmq: ">=24"
traitlets: ">=5.6.0"
- jupyter_events: ">=0.6.0"
anyio: ">=3.1.0"
send2trash: ">=1.8.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda
+ jupyter_events: ">=0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.1-pyhd8ed1ab_0.conda
hash:
- md5: 016d56f5d81b9364d1da5f4895a2a9f8
- sha256: 0b9a72f28ff8a12e6ea0ae43d3ea93e288074d29348c5fc6fbb3a5e5e18b2ecd
+ md5: 7d15498584d83de3b357425e37086397
+ sha256: b8b55ee57785b39a9096884bfd1da3858da8f27764572321d51a3dd0a990de86
category: main
optional: false
- name: libarrow-substrait
@@ -15716,10 +15718,10 @@ package:
libarrow-dataset: 14.0.1
libcxx: ">=15.0.7"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.1-h2cc6c1c_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.1-h2cc6c1c_3_cpu.conda
hash:
- md5: a1ef4ed049070f00fff873e191cfc963
- sha256: 0b2b7ca6d1bfed324bf38d3e884ec27a35bdc72f91962835db804d4fefc8bdfd
+ md5: eb66f8083a629917f4ecb94351ca1903
+ sha256: fc51009762be7f0f5abc1ffed1b413122422a21bc2a309abbdb537a76b939b54
category: main
optional: false
- name: nbconvert-pandoc
@@ -15868,10 +15870,10 @@ package:
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.1-py311h98a0319_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.1-py311h98a0319_3_cpu.conda
hash:
- md5: fecd27d4185af7621ba73b86367dac77
- sha256: 3c5f905f0b1573dd4db9ae17de523940651c1af3bef2c280d6c672fa45d01269
+ md5: f574fa744f76f78af4287040a79072bb
+ sha256: 6f54b81c50c5f383614b98bf05f2aff01a1831c42576557a606325753d2f7581
category: main
optional: false
- name: jupyterlab
@@ -18014,15 +18016,15 @@ package:
category: main
optional: false
- name: dagster-pipes
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 903c93eb6d9344cc4af75d6186a3ccb3
- sha256: 9ec1487b36e97049c0c824a345b92465217cab998c7d297eb7a1dab753c05330
+ md5: 638a21e0bc715fe08f5515a2f0d2bd9b
+ sha256: db15f8c5718e985366a174fc86c3c6fb86b8984fa73c94702bae06d0f0b7cd4f
category: main
optional: false
- name: dataclasses
@@ -19027,15 +19029,15 @@ package:
category: main
optional: false
- name: python-fastjsonschema
- version: 2.18.1
+ version: 2.19.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.18.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 305141cff54af2f90e089d868fffce28
- sha256: 3fb1af1ac7525072c46e111bc4e96ddf971f792ab049ca3aa25dbebbaffb6f7d
+ md5: e4dbdb3585c0266b4710467fe7b75cf4
+ sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
category: main
optional: false
- name: python-json-logger
@@ -19437,15 +19439,15 @@ package:
category: main
optional: false
- name: tomlkit
- version: 0.12.2
+ version: 0.12.3
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
hash:
- md5: 495ddad84b81dde4ee1138dd59ef5805
- sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f
+ md5: 074d0ce7a6261ab8b497c3518796ef3e
+ sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
category: main
optional: false
- name: toolz
@@ -19811,7 +19813,7 @@ package:
category: main
optional: false
- name: aws-c-s3
- version: 0.3.23
+ version: 0.3.24
manager: conda
platform: osx-arm64
dependencies:
@@ -19821,10 +19823,10 @@ package:
aws-c-http: ">=0.7.14,<0.7.15.0a0"
aws-c-io: ">=0.13.35,<0.13.36.0a0"
aws-checksums: ">=0.1.17,<0.1.18.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.3.23-h3940a1a_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.3.24-h3940a1a_0.conda
hash:
- md5: aebb27ad20745412030f68c42f9eb20d
- sha256: 9faee6856651595fbd1408e73534109c723a154a03c6d21a34f2e1b59c7d11a1
+ md5: 180d51c04b2aa410b4dc9bd52f50f85c
+ sha256: fcbd618d77dc87ce337e7217edc2c59474ae8e30b784e82c121c2e6f8a9bdb5a
category: main
optional: false
- name: babel
@@ -20507,7 +20509,7 @@ package:
category: main
optional: false
- name: poppler
- version: 23.10.0
+ version: 23.11.0
manager: conda
platform: osx-arm64
dependencies:
@@ -20530,10 +20532,10 @@ package:
nss: ">=3.94,<4.0a0"
openjpeg: ">=2.5.0,<3.0a0"
poppler-data: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.10.0-hcdd998b_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.11.0-hcdd998b_0.conda
hash:
- md5: f09dca383af70b61ff5ead622d2994a1
- sha256: 53ffe710fc3c2e6af9c7b42f093b39b2626a6029bc7373509a7e054031b6cf95
+ md5: 19386a03a7c57a378953bafb4f598156
+ sha256: a6677b507cbdb6202c872aa461b4bf8cfcbe5791721fe1f42615b89205d4a4a6
category: main
optional: false
- name: postgresql
@@ -20716,17 +20718,17 @@ package:
category: main
optional: false
- name: referencing
- version: 0.30.2
+ version: 0.31.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
attrs: ">=22.2.0"
rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.0-pyhd8ed1ab_0.conda
hash:
- md5: a33161b983172ba6ef69d5fc850650cd
- sha256: a6768fabc12f1eed87fec68c5c65439e908655cded1e458d70a164abbce13287
+ md5: 38c2b9b24e9a58725a233f1fa32c23e9
+ sha256: 108f27bf249a581acd0f1de0e1e6a4d814ab18943178c2d9a4df02f5c16d2102
category: main
optional: false
- name: restructuredtext_lint
@@ -21002,7 +21004,7 @@ package:
category: main
optional: false
- name: aws-crt-cpp
- version: 0.24.6
+ version: 0.24.7
manager: conda
platform: osx-arm64
dependencies:
@@ -21014,17 +21016,17 @@ package:
aws-c-http: ">=0.7.14,<0.7.15.0a0"
aws-c-io: ">=0.13.35,<0.13.36.0a0"
aws-c-mqtt: ">=0.9.9,<0.9.10.0a0"
- aws-c-s3: ">=0.3.23,<0.3.24.0a0"
+ aws-c-s3: ">=0.3.24,<0.3.25.0a0"
aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.24.6-h8bfa36e_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.24.7-h2da6921_1.conda
hash:
- md5: 1308c70773a563087be5e8a70990692e
- sha256: 7dc05da7d817dcfe25e0cf5053e99b6cecf449bd4941e0a78611c172595aafb2
+ md5: b5bbdbe1fbbf0884ec5c95491e0f9b12
+ sha256: 15d1692fcd638d6a94695e2f655333dc3007bcb43d475706078ed767cdf106a1
category: main
optional: false
- name: botocore
- version: 1.31.85
+ version: 1.32.0
manager: conda
platform: osx-arm64
dependencies:
@@ -21032,10 +21034,10 @@ package:
python-dateutil: ">=2.1,<3.0.0"
jmespath: ">=0.7.1,<2.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.85-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.32.0-pyhd8ed1ab_0.conda
hash:
- md5: fc2ff5b232fa1cec482f5ad6fc83ca9d
- sha256: 89cf1f5349fa27f39ea1290d6f63166183ebd4b8803127d8246f7262afd9b9e1
+ md5: 5dc66c692881e2014e7096681c71211b
+ sha256: fa35195f88fdfd75addce1e291596cd7b4042c91ce4b3fa76464235ca0fcba23
category: main
optional: false
- name: branca
@@ -21225,17 +21227,17 @@ package:
category: main
optional: false
- name: jsonschema-specifications
- version: 2023.7.1
+ version: 2023.11.1
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
importlib_resources: ">=1.4.0"
- referencing: ">=0.25.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda
+ referencing: ">=0.31.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 7c27ea1bdbe520bb830dcadd59f55cbf
- sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc
+ md5: 094ff9cf36957f95bb74cee42ab140b2
+ sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
category: main
optional: false
- name: jupyter_server_terminals
@@ -21765,15 +21767,15 @@ package:
aws-c-common: ">=0.9.8,<0.9.9.0a0"
aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
aws-checksums: ">=0.1.17,<0.1.18.0a0"
- aws-crt-cpp: ">=0.24.6,<0.24.7.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
libcurl: ">=8.4.0,<9.0a0"
libcxx: ">=16.0.6"
libzlib: ">=1.2.13,<1.3.0a0"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.182-hb9aa301_6.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.182-h31542fa_7.conda
hash:
- md5: d59256fce1d063750aa34b535ca08bd2
- sha256: 2d447acabb91224811de2967797ed5eb3239f6034a977fbd1823da3cf05aa8bb
+ md5: 6c837825a2350f590d307494e7a582ce
+ sha256: 8dd2f9b127c464a87de5e820b2edcb9fe8230a2ca5b8a051d86073f5359ec29e
category: main
optional: false
- name: black
@@ -22073,7 +22075,7 @@ package:
category: main
optional: false
- name: libgdal
- version: 3.7.3
+ version: 3.8.0
manager: conda
platform: osx-arm64
dependencies:
@@ -22089,6 +22091,7 @@ package:
json-c: ">=0.17,<0.18.0a0"
kealib: ">=1.5.2,<1.6.0a0"
lerc: ">=4.0.0,<5.0a0"
+ libaec: ">=1.1.2,<2.0a0"
libarchive: ">=3.7.2,<3.8.0a0"
libcurl: ">=8.4.0,<9.0a0"
libcxx: ">=16.0.6"
@@ -22110,17 +22113,17 @@ package:
openjpeg: ">=2.5.0,<3.0a0"
openssl: ">=3.1.4,<4.0a0"
pcre2: ">=10.40,<10.41.0a0"
- poppler: ">=23.10.0,<23.11.0a0"
+ poppler: ">=23.11.0,<23.12.0a0"
postgresql: ""
proj: ">=9.3.0,<9.3.1.0a0"
tiledb: ">=2.16,<2.17.0a0"
xerces-c: ">=3.2.4,<3.3.0a0"
xz: ">=5.2.6,<6.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.7.3-h116f65a_3.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.0-h4a48ae4_1.conda
hash:
- md5: 5f76d0484e404f7e20c0b7eac61b44ab
- sha256: 770126ba22c71572ee817f24171e01038bc43857d52842ab4b24a354b6c5f658
+ md5: 3ff4b732b6c8266789facda6095b3e48
+ sha256: a92de8365813c1784f0c21a34ac74c9be2b4afb133400f6da04abd222d753d9a
category: main
optional: false
- name: librsvg
@@ -22436,18 +22439,18 @@ package:
category: main
optional: false
- name: boto3
- version: 1.28.85
+ version: 1.29.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
jmespath: ">=0.7.1,<2.0.0"
s3transfer: ">=0.7.0,<0.8.0"
- botocore: ">=1.31.85,<1.32.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.85-pyhd8ed1ab_0.conda
+ botocore: ">=1.32.0,<1.33.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.29.0-pyhd8ed1ab_0.conda
hash:
- md5: 445613b54b76c24a86b4fa038e9fe0c5
- sha256: 8833f6eb12463e25b7ffea775ce7563fda89b4189bce1617f862d6591e95a283
+ md5: d9255fe2d07b6201b953ddb3fc93bf23
+ sha256: 27836e2f71e6ea00b82a8e1a57c7ff9609d9fba9d06bc6acffb86aecb2179a5a
category: main
optional: false
- name: cachecontrol-with-filecache
@@ -22465,7 +22468,7 @@ package:
category: main
optional: false
- name: dagster
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-arm64
dependencies:
@@ -22479,7 +22482,6 @@ package:
tomli: ""
python-dotenv: ""
pywin32-on-windows: ""
- pendulum: ""
docstring_parser: ""
universal_pathlib: ""
python: ">=3.8"
@@ -22498,11 +22500,12 @@ package:
grpcio: ">=1.44.0"
alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
pydantic: ">1.10.0,!=1.10.7"
- dagster-pipes: ">=1.5.7,<1.5.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.7-pyhd8ed1ab_0.conda
+ pendulum: <3
+ dagster-pipes: ">=1.5.8,<1.5.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 62ed693f52b4b2127c080337bde8dfc2
- sha256: d7b68426181b0d08f370e1c6e912e05cb152590b84a95c761efdc672e53279cb
+ md5: 253eaf1bdc578621a17ef26059eddf04
+ sha256: 448468dee245955ca5f15fb5ae75e7bce6d361568e6da15cebf8cbb24feb7b1b
category: main
optional: false
- name: datasette
@@ -22594,23 +22597,23 @@ package:
category: main
optional: false
- name: gdal
- version: 3.7.3
+ version: 3.8.0
manager: conda
platform: osx-arm64
dependencies:
__osx: ">=10.9"
hdf5: ">=1.14.2,<1.14.3.0a0"
libcxx: ">=16.0.6"
- libgdal: 3.7.3
+ libgdal: 3.8.0
libxml2: ">=2.11.5,<2.12.0a0"
numpy: ">=1.23.5,<2.0a0"
openssl: ">=3.1.4,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.7.3-py311h32a4f3d_3.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.0-py311h32a4f3d_1.conda
hash:
- md5: fd94ceee167a04585fca83a911b2e7e0
- sha256: 66432a8ca5634250f302fa58e1f19e3e3b594f28c4e7284c872607e027eed141
+ md5: bfb0ad3bea851df908e80dd83430249e
+ sha256: 288adcfccf62a5958208c003e6f71c85059962563359cc466025de4cbf07ee2e
category: main
optional: false
- name: geopandas-base
@@ -22739,7 +22742,7 @@ package:
platform: osx-arm64
dependencies:
__osx: ">=10.9"
- aws-crt-cpp: ">=0.24.6,<0.24.7.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
bzip2: ">=1.0.8,<2.0a0"
glog: ">=0.6.0,<0.7.0a0"
@@ -22756,10 +22759,10 @@ package:
re2: ""
snappy: ">=1.1.10,<2.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-14.0.1-ha4caa07_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-14.0.1-h8dffd16_3_cpu.conda
hash:
- md5: 61cad580ddef421f34e9bace97333c76
- sha256: e1821f374860561f52d096bed640edc813182f406a6c69b41fdd1927587c4410
+ md5: c9e9f1a73232f3a6eae1b174f39e2d3f
+ sha256: c482e8d50d2a20b4460801610da58e49fe7c9db8836ffd0653b657af55664634
category: main
optional: false
- name: matplotlib-base
@@ -22962,7 +22965,7 @@ package:
category: main
optional: false
- name: dagster-graphql
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-arm64
dependencies:
@@ -22971,25 +22974,25 @@ package:
python: ">=3.8"
graphene: ">=3"
gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.7,<1.5.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.7-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.8,<1.5.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: ccf7c623d25c6d57594e14b4a054f627
- sha256: 5fa8b0bd59d5d42ca6c0d803091e17309d886a4a1c13e46208e3d154b90d7511
+ md5: 182ad20a50ddd9a04e53d6c438984c4b
+ sha256: 5d6310860a69383b6bc9d01c16fde63c1f95814d953162205c1ba96cfed24caa
category: dev
optional: true
- name: dagster-postgres
- version: 0.21.7
+ version: 0.21.8
manager: conda
platform: osx-arm64
dependencies:
psycopg2-binary: ""
python: ">=3.8"
- dagster: 1.5.7.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.7-pyhd8ed1ab_0.conda
+ dagster: 1.5.8.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.8-pyhd8ed1ab_0.conda
hash:
- md5: 95d4c91fc4f345cc25e69d354a7cd7b2
- sha256: fa4aa38d94c06b20b0c773a3b2a0402936a4f62bb91e6c795ed2acebc965ad48
+ md5: 2dec0560d4004d49d5fc111607ef0efd
+ sha256: 6a90ccee7183054d1e9bf30b51c65afc02d1cb2310b83ce3a8a228c6e13850c0
category: main
optional: false
- name: fiona
@@ -23005,7 +23008,7 @@ package:
gdal: ""
importlib-metadata: ""
libcxx: ">=16.0.6"
- libgdal: ">=3.7.2,<3.8.0a0"
+ libgdal: ">=3.8.0,<3.9.0a0"
munch: ""
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
@@ -23013,10 +23016,10 @@ package:
setuptools: ""
shapely: ""
six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py311h45231e3_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py311h4760b73_1.conda
hash:
- md5: 50d570663d8aca587902d0f3642f17ac
- sha256: 008993778253638c048f61ed90fded9f3090dd2fbeb5b9c48f5a6a8ac382e4cf
+ md5: 0232bf494596b3d10e1cf21fbcbc8615
+ sha256: 9d0ad417f817677f113608aacdbac93fad06bf2a149233d299a6ada5c56c6600
category: main
optional: false
- name: google-api-core
@@ -23102,10 +23105,10 @@ package:
__osx: ">=10.9"
libarrow: 14.0.1
libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-14.0.1-had9dd58_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-14.0.1-had9dd58_3_cpu.conda
hash:
- md5: be4b7c7babb11221103af17991d384ee
- sha256: e732caa5149d472a145fb91fae880d26fd4ad896a1bfb5ae74cafef408cb8152
+ md5: 45385a4bd04cae4e3df499e585b14a0b
+ sha256: f82e7f13d0b6159bfd6fefc136a85bc41e0a612a9e73f097bd70fc5b9e5e0dce
category: main
optional: false
- name: libarrow-flight
@@ -23119,10 +23122,10 @@ package:
libcxx: ">=15.0.7"
libgrpc: ">=1.59.2,<1.60.0a0"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-14.0.1-h1011bfc_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-14.0.1-h1011bfc_3_cpu.conda
hash:
- md5: 06a7b8b47c0f8e7d456ee00b43dc0859
- sha256: d0b274b8f845ec8f98a51ea560f702342b7a04a1e06281aeec8bc0b5fcc93465
+ md5: 58b858ca5385418e166c7cc30654d3f2
+ sha256: b895ea4bfed516ac8b974fca7c437b70ec0b753abd7546f85353e85b536c7551
category: main
optional: false
- name: libarrow-gandiva
@@ -23138,10 +23141,10 @@ package:
libutf8proc: ">=2.8.0,<3.0a0"
openssl: ">=3.1.4,<4.0a0"
re2: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-14.0.1-h2b96968_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-14.0.1-h2b96968_3_cpu.conda
hash:
- md5: 3531c5fa3be17c18d8d2d4f692d43bba
- sha256: 67a6d8971980a939ba39b28c1d138d019e4db82417b4abfce7922be271049c7d
+ md5: 2356cd3eaa70c7ec2f73b8e061bb4c5f
+ sha256: 031f324a5845fb7db4b15df6e70b3fa8ab7d83508072838c2801ffea81692d67
category: main
optional: false
- name: libparquet
@@ -23154,10 +23157,10 @@ package:
libcxx: ">=15.0.7"
libthrift: ">=0.19.0,<0.19.1.0a0"
openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-14.0.1-heaab74a_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-14.0.1-heaab74a_3_cpu.conda
hash:
- md5: ceb10b8adde9de6f3bf01a945b248f4d
- sha256: 308ae959e9223dc3862a5d9aefe24a6918b84f511d08cfe1b8236366ddf5facf
+ md5: 84a11f6c99bbd2fce61890751fc94777
+ sha256: 0514387e5082b50d716bb3e91de9898e928616843105c413d1ddf5f78a80210a
category: main
optional: false
- name: mapclassify
@@ -23251,7 +23254,7 @@ package:
category: main
optional: false
- name: dagster-webserver
- version: 1.5.7
+ version: 1.5.8
manager: conda
platform: osx-arm64
dependencies:
@@ -23259,12 +23262,12 @@ package:
uvicorn-standard: ""
python: ">=3.8"
click: ">=7.0,<9.0"
- dagster: ">=1.5.7,<1.5.8.0a0"
- dagster-graphql: ">=1.5.7,<1.5.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.7-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.8,<1.5.9.0a0"
+ dagster-graphql: ">=1.5.8,<1.5.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: c53c5335216e11f20637dde972a8cdcd
- sha256: 032d255c04bb59ed2ebf2e6742d52293284dc0ae31ec6cd117665bb133d5f8f6
+ md5: 0afe785d6ae1523e6802395259c0d81f
+ sha256: ae458539ee3eba822facace3285c62169b5daf376c0a571dbf22198d6f3587f0
category: dev
optional: true
- name: geopandas
@@ -23354,10 +23357,10 @@ package:
libarrow-acero: 14.0.1
libcxx: ">=15.0.7"
libparquet: 14.0.1
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-14.0.1-had9dd58_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-14.0.1-had9dd58_3_cpu.conda
hash:
- md5: e8f58acc13e388e71be3e6b298703361
- sha256: a1fa2fa37fadff49d56df93d2654933d3edca0b2f1e59c9a93009fa9aaf40fcb
+ md5: 01f2b9ff760ec946a47736a95bf070ce
+ sha256: bf47c92c431e3eb1b79498a7826beee404b7186c160e5646d06fe8bd3c52fb42
category: main
optional: false
- name: libarrow-flight-sql
@@ -23370,10 +23373,10 @@ package:
libarrow-flight: 14.0.1
libcxx: ">=15.0.7"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-14.0.1-h660fe36_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-14.0.1-h660fe36_3_cpu.conda
hash:
- md5: 636178a9d5ba0954ef8883720be924a9
- sha256: 96897ff47ab865433c377835a7939af2ceb0c2777999c0f1805d60d34d67f6a6
+ md5: e68ba1cba4bc839af1fb2240e2f7a93a
+ sha256: 831e8f230d0b489ee2c541a091351857ac369813f555ae3789980132a2a3a365
category: main
optional: false
- name: nbconvert-core
@@ -23487,7 +23490,7 @@ package:
category: main
optional: false
- name: jupyter_server
- version: 2.10.0
+ version: 2.10.1
manager: conda
platform: osx-arm64
dependencies:
@@ -23507,13 +23510,13 @@ package:
nbformat: ">=5.3.0"
pyzmq: ">=24"
traitlets: ">=5.6.0"
- jupyter_events: ">=0.6.0"
anyio: ">=3.1.0"
send2trash: ">=1.8.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda
+ jupyter_events: ">=0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.1-pyhd8ed1ab_0.conda
hash:
- md5: 016d56f5d81b9364d1da5f4895a2a9f8
- sha256: 0b9a72f28ff8a12e6ea0ae43d3ea93e288074d29348c5fc6fbb3a5e5e18b2ecd
+ md5: 7d15498584d83de3b357425e37086397
+ sha256: b8b55ee57785b39a9096884bfd1da3858da8f27764572321d51a3dd0a990de86
category: main
optional: false
- name: libarrow-substrait
@@ -23527,10 +23530,10 @@ package:
libarrow-dataset: 14.0.1
libcxx: ">=15.0.7"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-14.0.1-h594d712_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-14.0.1-h594d712_3_cpu.conda
hash:
- md5: ed5296f02f1d32d5c7a3b67d5da3135d
- sha256: 717c656d250ee2f4d3cce91617b7c2afc1ba0a1cbf437f634f1cd33a3d1d870d
+ md5: 59202c5ba6c585009550a0c84d0aa7c7
+ sha256: b080df09fd9444534d10baf9fdafeb1602e230fcd8edb2fc030be2a0e04e0cc9
category: main
optional: false
- name: nbconvert-pandoc
@@ -23679,10 +23682,10 @@ package:
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-14.0.1-py311h637fcfe_2_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-14.0.1-py311h637fcfe_3_cpu.conda
hash:
- md5: 483b877b7847071d755285df97ff5bf4
- sha256: cde0c488246a588c86d9b81d7f143682f8d6b63505f4344ecdd21118ec00355b
+ md5: 77ebcf968cbdac3f5a676239faf6103b
+ sha256: 9ec472ee46cf2944ff328eb8d027fac5bb0d56c14653723cd63b46fc9c786042
category: main
optional: false
- name: jupyterlab
diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml
index e2a42c506d..a18a8d6e7c 100644
--- a/environments/conda-osx-64.lock.yml
+++ b/environments/conda-osx-64.lock.yml
@@ -154,7 +154,7 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.7=pyhd8ed1ab_0
+ - dagster-pipes=1.5.8=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- debugpy=1.8.0=py311hdf8f085_1
- decorator=5.1.1=pyhd8ed1ab_0
@@ -233,7 +233,7 @@ dependencies:
- pyparsing=3.1.1=pyhd8ed1ab_0
- pysocks=1.7.1=pyha2e5f31_6
- python-dotenv=1.0.0=pyhd8ed1ab_1
- - python-fastjsonschema=2.18.1=pyhd8ed1ab_0
+ - python-fastjsonschema=2.19.0=pyhd8ed1ab_0
- python-json-logger=2.0.7=pyhd8ed1ab_0
- python-multipart=0.0.6=pyhd8ed1ab_0
- python-tzdata=2023.3=pyhd8ed1ab_0
@@ -266,7 +266,7 @@ dependencies:
- threadpoolctl=3.2.0=pyha21a80b_0
- toml=0.10.2=pyhd8ed1ab_0
- tomli=2.0.1=pyhd8ed1ab_0
- - tomlkit=0.12.2=pyha770c72_0
+ - tomlkit=0.12.3=pyha770c72_0
- toolz=0.12.0=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311h2725bcf_1
@@ -296,7 +296,7 @@ dependencies:
- asgiref=3.7.2=pyhd8ed1ab_0
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- - aws-c-s3=0.3.23=hb1cbb54_1
+ - aws-c-s3=0.3.24=hb1cbb54_0
- babel=2.13.1=pyhd8ed1ab_0
- backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
@@ -346,7 +346,7 @@ dependencies:
- pexpect=4.8.0=pyh1a96a4e_2
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
- - poppler=23.10.0=hdd5a5e8_0
+ - poppler=23.11.0=hdd5a5e8_0
- postgresql=16.1=h413614c_0
- proj=9.3.0=h23b96cc_2
- protobuf=4.24.4=py311h021eaf5_0
@@ -359,7 +359,7 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.30.2=pyhd8ed1ab_0
+ - referencing=0.31.0=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
@@ -380,8 +380,8 @@ dependencies:
- argon2-cffi-bindings=21.2.0=py311h2725bcf_4
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- - aws-crt-cpp=0.24.6=h7eda119_0
- - botocore=1.31.85=pyhd8ed1ab_0
+ - aws-crt-cpp=0.24.7=ha2eb20f_1
+ - botocore=1.32.0=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311hd51016d_0
@@ -395,7 +395,7 @@ dependencies:
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- - jsonschema-specifications=2023.7.1=pyhd8ed1ab_0
+ - jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h052fcf7_1
- libnetcdf=4.9.2=nompi_h6a32802_112
@@ -429,7 +429,7 @@ dependencies:
- alembic=1.12.1=pyhd8ed1ab_0
- arelle-release=2.17.3=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- - aws-sdk-cpp=1.11.182=h06c5342_6
+ - aws-sdk-cpp=1.11.182=h28d282b_7
- black=23.10.1=py311h6eed73b_0
- bottleneck=1.3.7=py311h4a70a88_1
- cachecontrol=0.13.1=pyhd8ed1ab_0
@@ -449,7 +449,7 @@ dependencies:
- jsonschema=4.19.2=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h6eed73b_0
- keyring=24.3.0=py311h6eed73b_0
- - libgdal=3.7.3=h926149b_3
+ - libgdal=3.8.0=h0ef8398_1
- librsvg=2.56.3=hec3db73_0
- numba=0.58.1=py311h32f2313_0
- numexpr=2.8.7=py311h1eadf79_4
@@ -470,21 +470,21 @@ dependencies:
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0=h6eed73b_0
- virtualenv=20.24.6=pyhd8ed1ab_0
- - boto3=1.28.85=pyhd8ed1ab_0
+ - boto3=1.29.0=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.7=pyhd8ed1ab_0
+ - dagster=1.5.8=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.7.3=py311h5646c56_3
+ - gdal=3.8.0=py311h5646c56_1
- geopandas-base=0.14.1=pyha770c72_0
- google-auth=2.23.4=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- graphviz=8.1.0=hc7f41f9_0
- jsonschema-with-format-nongpl=4.19.2=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
- - libarrow=14.0.1=h3b78187_2_cpu
+ - libarrow=14.0.1=hd201b0c_3_cpu
- matplotlib-base=3.8.1=py311hd316c10_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
@@ -495,36 +495,36 @@ dependencies:
- timezonefinder=6.2.0=py311he705e18_2
- catalystcoop.ferc_xbrl_extractor=1.2.1=pyhd8ed1ab_0
- conda-lock=2.4.2=pyhd8ed1ab_0
- - dagster-graphql=1.5.7=pyhd8ed1ab_0
- - dagster-postgres=0.21.7=pyhd8ed1ab_0
- - fiona=1.9.5=py311hf14a637_0
+ - dagster-graphql=1.5.8=pyhd8ed1ab_0
+ - dagster-postgres=0.21.8=pyhd8ed1ab_0
+ - fiona=1.9.5=py311h809632c_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
- ipython=8.17.2=pyh31c8845_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- - libarrow-acero=14.0.1=hc222712_2_cpu
- - libarrow-flight=14.0.1=h440f1c2_2_cpu
- - libarrow-gandiva=14.0.1=heeebe7c_2_cpu
- - libparquet=14.0.1=h27bd29f_2_cpu
+ - libarrow-acero=14.0.1=hc222712_3_cpu
+ - libarrow-flight=14.0.1=h440f1c2_3_cpu
+ - libarrow-gandiva=14.0.1=heeebe7c_3_cpu
+ - libparquet=14.0.1=h27bd29f_3_cpu
- mapclassify=2.6.1=pyhd8ed1ab_0
- nbclient=0.8.0=pyhd8ed1ab_0
- pygraphviz=1.11=py311hc6eba27_1
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.7=pyhd8ed1ab_0
+ - dagster-webserver=1.5.8=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- ipykernel=6.26.0=pyh3cd1d5f_0
- ipywidgets=8.1.1=pyhd8ed1ab_0
- - libarrow-dataset=14.0.1=hc222712_2_cpu
- - libarrow-flight-sql=14.0.1=h2cc6c1c_2_cpu
+ - libarrow-dataset=14.0.1=hc222712_3_cpu
+ - libarrow-flight-sql=14.0.1=h2cc6c1c_3_cpu
- nbconvert-core=7.11.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- jupyter_console=6.6.3=pyhd8ed1ab_0
- - jupyter_server=2.10.0=pyhd8ed1ab_0
- - libarrow-substrait=14.0.1=h2cc6c1c_2_cpu
+ - jupyter_server=2.10.1=pyhd8ed1ab_0
+ - libarrow-substrait=14.0.1=h2cc6c1c_3_cpu
- nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
- qtconsole-base=5.5.0=pyha770c72_0
- gcsfs=2023.10.0=pyhd8ed1ab_0
@@ -533,7 +533,7 @@ dependencies:
- jupyterlab_server=2.25.1=pyhd8ed1ab_0
- nbconvert=7.11.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- - pyarrow=14.0.1=py311h98a0319_2_cpu
+ - pyarrow=14.0.1=py311h98a0319_3_cpu
- jupyterlab=4.0.8=pyhd8ed1ab_0
- notebook=7.0.6=pyhd8ed1ab_0
- jupyter=1.0.0=pyhd8ed1ab_10
diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml
index 38e34d11b2..1326796ff6 100644
--- a/environments/conda-osx-arm64.lock.yml
+++ b/environments/conda-osx-arm64.lock.yml
@@ -154,7 +154,7 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.7=pyhd8ed1ab_0
+ - dagster-pipes=1.5.8=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- debugpy=1.8.0=py311ha891d26_1
- decorator=5.1.1=pyhd8ed1ab_0
@@ -233,7 +233,7 @@ dependencies:
- pyparsing=3.1.1=pyhd8ed1ab_0
- pysocks=1.7.1=pyha2e5f31_6
- python-dotenv=1.0.0=pyhd8ed1ab_1
- - python-fastjsonschema=2.18.1=pyhd8ed1ab_0
+ - python-fastjsonschema=2.19.0=pyhd8ed1ab_0
- python-json-logger=2.0.7=pyhd8ed1ab_0
- python-multipart=0.0.6=pyhd8ed1ab_0
- python-tzdata=2023.3=pyhd8ed1ab_0
@@ -266,7 +266,7 @@ dependencies:
- threadpoolctl=3.2.0=pyha21a80b_0
- toml=0.10.2=pyhd8ed1ab_0
- tomli=2.0.1=pyhd8ed1ab_0
- - tomlkit=0.12.2=pyha770c72_0
+ - tomlkit=0.12.3=pyha770c72_0
- toolz=0.12.0=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311heffc1b2_1
@@ -296,7 +296,7 @@ dependencies:
- asgiref=3.7.2=pyhd8ed1ab_0
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- - aws-c-s3=0.3.23=h3940a1a_1
+ - aws-c-s3=0.3.24=h3940a1a_0
- babel=2.13.1=pyhd8ed1ab_0
- backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
@@ -346,7 +346,7 @@ dependencies:
- pexpect=4.8.0=pyh1a96a4e_2
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
- - poppler=23.10.0=hcdd998b_0
+ - poppler=23.11.0=hcdd998b_0
- postgresql=16.1=hc6ab77f_0
- proj=9.3.0=h52fb9d0_2
- protobuf=4.24.4=py311h4d1eceb_0
@@ -359,7 +359,7 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.30.2=pyhd8ed1ab_0
+ - referencing=0.31.0=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
@@ -380,8 +380,8 @@ dependencies:
- argon2-cffi-bindings=21.2.0=py311heffc1b2_4
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- - aws-crt-cpp=0.24.6=h8bfa36e_0
- - botocore=1.31.85=pyhd8ed1ab_0
+ - aws-crt-cpp=0.24.7=h2da6921_1
+ - botocore=1.32.0=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311h71175c2_0
@@ -395,7 +395,7 @@ dependencies:
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- - jsonschema-specifications=2023.7.1=pyhd8ed1ab_0
+ - jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h47b5e36_1
- libnetcdf=4.9.2=nompi_hb2fb864_112
@@ -429,7 +429,7 @@ dependencies:
- alembic=1.12.1=pyhd8ed1ab_0
- arelle-release=2.17.3=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- - aws-sdk-cpp=1.11.182=hb9aa301_6
+ - aws-sdk-cpp=1.11.182=h31542fa_7
- black=23.10.1=py311h267d04e_0
- bottleneck=1.3.7=py311hb49d859_1
- cachecontrol=0.13.1=pyhd8ed1ab_0
@@ -449,7 +449,7 @@ dependencies:
- jsonschema=4.19.2=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h267d04e_0
- keyring=24.3.0=py311h267d04e_0
- - libgdal=3.7.3=h116f65a_3
+ - libgdal=3.8.0=h4a48ae4_1
- librsvg=2.56.3=h0db3404_0
- numba=0.58.1=py311h9ec4793_0
- numexpr=2.8.7=py311h6e08293_4
@@ -470,21 +470,21 @@ dependencies:
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0=ha1ab1f8_0
- virtualenv=20.24.6=pyhd8ed1ab_0
- - boto3=1.28.85=pyhd8ed1ab_0
+ - boto3=1.29.0=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.7=pyhd8ed1ab_0
+ - dagster=1.5.8=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.7.3=py311h32a4f3d_3
+ - gdal=3.8.0=py311h32a4f3d_1
- geopandas-base=0.14.1=pyha770c72_0
- google-auth=2.23.4=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- graphviz=8.1.0=h10878c0_0
- jsonschema-with-format-nongpl=4.19.2=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
- - libarrow=14.0.1=ha4caa07_2_cpu
+ - libarrow=14.0.1=h8dffd16_3_cpu
- matplotlib-base=3.8.1=py311hfdba5f6_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
@@ -495,36 +495,36 @@ dependencies:
- timezonefinder=6.2.0=py311h05b510d_2
- catalystcoop.ferc_xbrl_extractor=1.2.1=pyhd8ed1ab_0
- conda-lock=2.4.2=pyhd8ed1ab_0
- - dagster-graphql=1.5.7=pyhd8ed1ab_0
- - dagster-postgres=0.21.7=pyhd8ed1ab_0
- - fiona=1.9.5=py311h45231e3_0
+ - dagster-graphql=1.5.8=pyhd8ed1ab_0
+ - dagster-postgres=0.21.8=pyhd8ed1ab_0
+ - fiona=1.9.5=py311h4760b73_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
- ipython=8.17.2=pyh31c8845_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- - libarrow-acero=14.0.1=had9dd58_2_cpu
- - libarrow-flight=14.0.1=h1011bfc_2_cpu
- - libarrow-gandiva=14.0.1=h2b96968_2_cpu
- - libparquet=14.0.1=heaab74a_2_cpu
+ - libarrow-acero=14.0.1=had9dd58_3_cpu
+ - libarrow-flight=14.0.1=h1011bfc_3_cpu
+ - libarrow-gandiva=14.0.1=h2b96968_3_cpu
+ - libparquet=14.0.1=heaab74a_3_cpu
- mapclassify=2.6.1=pyhd8ed1ab_0
- nbclient=0.8.0=pyhd8ed1ab_0
- pygraphviz=1.11=py311h5178850_1
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.7=pyhd8ed1ab_0
+ - dagster-webserver=1.5.8=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- ipykernel=6.26.0=pyh3cd1d5f_0
- ipywidgets=8.1.1=pyhd8ed1ab_0
- - libarrow-dataset=14.0.1=had9dd58_2_cpu
- - libarrow-flight-sql=14.0.1=h660fe36_2_cpu
+ - libarrow-dataset=14.0.1=had9dd58_3_cpu
+ - libarrow-flight-sql=14.0.1=h660fe36_3_cpu
- nbconvert-core=7.11.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- jupyter_console=6.6.3=pyhd8ed1ab_0
- - jupyter_server=2.10.0=pyhd8ed1ab_0
- - libarrow-substrait=14.0.1=h594d712_2_cpu
+ - jupyter_server=2.10.1=pyhd8ed1ab_0
+ - libarrow-substrait=14.0.1=h594d712_3_cpu
- nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
- qtconsole-base=5.5.0=pyha770c72_0
- gcsfs=2023.10.0=pyhd8ed1ab_0
@@ -533,7 +533,7 @@ dependencies:
- jupyterlab_server=2.25.1=pyhd8ed1ab_0
- nbconvert=7.11.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- - pyarrow=14.0.1=py311h637fcfe_2_cpu
+ - pyarrow=14.0.1=py311h637fcfe_3_cpu
- jupyterlab=4.0.8=pyhd8ed1ab_0
- notebook=7.0.6=pyhd8ed1ab_0
- jupyter=1.0.0=pyhd8ed1ab_10
From 7ef9c70274b9ad7f7e1f8553fe7f0d480df3f577 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 15 Nov 2023 14:11:53 -0900
Subject: [PATCH 59/70] Recreate heat rate migration revision
---
...23_add_unit__to_heat_rate_mmbtu_per_mwh.py | 247 --------------
...bd_add_unit__to_heat_rate_mmbtu_per_mwh.py | 305 ++++++++++++++++++
2 files changed, 305 insertions(+), 247 deletions(-)
delete mode 100644 migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py
create mode 100644 migrations/versions/ccdf68a30cbd_add_unit__to_heat_rate_mmbtu_per_mwh.py
diff --git a/migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py b/migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py
deleted file mode 100644
index 710a4eb2e0..0000000000
--- a/migrations/versions/9ccfb2eb8d23_add_unit__to_heat_rate_mmbtu_per_mwh.py
+++ /dev/null
@@ -1,247 +0,0 @@
-"""Add unit_ to heat_rate_mmbtu_per_mwh
-
-Revision ID: 9ccfb2eb8d23
-Revises: 1fef7b82e48b
-Create Date: 2023-11-15 10:27:27.709921
-
-"""
-import sqlalchemy as sa
-from alembic import op
-
-# revision identifiers, used by Alembic.
-revision = '9ccfb2eb8d23'
-down_revision = '1fef7b82e48b'
-branch_labels = None
-depends_on = None
-
-
-def upgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__plants_utilities', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk__out_eia__plants_utilities_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('core_eia923__monthly_boiler_fuel', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_core_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('core_ferc714__hourly_demand_pa', schema=None) as batch_op:
- batch_op.alter_column('report_date',
- existing_type=sa.DATE(),
- nullable=False)
-
- with op.batch_alter_table('mega_generators_eia', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia923__boiler_fuel', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__monthly_boiler_fuel', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__monthly_fuel_receipts_costs', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__monthly_generation', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__monthly_generation_fuel_combined', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__monthly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__yearly_boiler_fuel', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__yearly_fuel_receipts_costs', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__yearly_generation', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_generation_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia923__yearly_generation_fuel_combined', schema=None) as batch_op:
- batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.'))
- batch_op.create_foreign_key(batch_op.f('fk_out_eia923__yearly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), 'core_pudl__codes_data_maturities', ['data_maturity'], ['code'])
-
- with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_eia__yearly_plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_eia', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh_ferc1', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh_eia')
- batch_op.drop_column('heat_rate_mmbtu_mwh_ferc1')
-
- with op.batch_alter_table('plant_parts_eia', schema=None) as batch_op:
- batch_op.add_column(sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'))
- batch_op.drop_column('heat_rate_mmbtu_mwh')
-
- # ### end Alembic commands ###
-
-
-def downgrade() -> None:
- # ### commands auto generated by Alembic - please adjust! ###
- with op.batch_alter_table('plant_parts_eia', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_pudl__yearly_assn_eia_ferc1_plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_ferc1', sa.FLOAT(), nullable=True))
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh_eia', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_ferc1')
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh_eia')
-
- with op.batch_alter_table('out_eia__yearly_plant_parts', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators_by_ownership', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia__yearly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia__monthly_generators', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('out_eia923__yearly_generation_fuel_combined', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__yearly_generation', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_generation_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__yearly_fuel_receipts_costs', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__yearly_boiler_fuel', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__yearly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__monthly_generation_fuel_combined', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_fuel_combined_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__monthly_generation', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_generation_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__monthly_fuel_receipts_costs', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_fuel_receipts_costs_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__monthly_boiler_fuel', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('out_eia923__boiler_fuel', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_out_eia923__boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('mega_generators_eia', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('core_ferc714__hourly_demand_pa', schema=None) as batch_op:
- batch_op.alter_column('report_date',
- existing_type=sa.DATE(),
- nullable=True)
-
- with op.batch_alter_table('core_eia923__monthly_boiler_fuel', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk_core_eia923__monthly_boiler_fuel_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__yearly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__plants_utilities', schema=None) as batch_op:
- batch_op.drop_constraint(batch_op.f('fk__out_eia__plants_utilities_data_maturity_core_pudl__codes_data_maturities'), type_='foreignkey')
- batch_op.drop_column('data_maturity')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_unit', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_heat_rate_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_fuel_cost_by_generator', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- with op.batch_alter_table('_out_eia__monthly_derived_generator_attributes', schema=None) as batch_op:
- batch_op.add_column(sa.Column('heat_rate_mmbtu_mwh', sa.FLOAT(), nullable=True))
- batch_op.drop_column('unit_heat_rate_mmbtu_per_mwh')
-
- # ### end Alembic commands ###
diff --git a/migrations/versions/ccdf68a30cbd_add_unit__to_heat_rate_mmbtu_per_mwh.py b/migrations/versions/ccdf68a30cbd_add_unit__to_heat_rate_mmbtu_per_mwh.py
new file mode 100644
index 0000000000..ffd41d29eb
--- /dev/null
+++ b/migrations/versions/ccdf68a30cbd_add_unit__to_heat_rate_mmbtu_per_mwh.py
@@ -0,0 +1,305 @@
+"""Add unit_ to heat_rate_mmbtu_per_mwh
+
+Revision ID: ccdf68a30cbd
+Revises: 9edc4a11c809
+Create Date: 2023-11-15 14:09:59.541894
+
+"""
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision = "ccdf68a30cbd"
+down_revision = "9edc4a11c809"
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table(
+ "_out_eia__monthly_derived_generator_attributes", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_fuel_cost_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_heat_rate_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_heat_rate_by_unit", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_derived_generator_attributes", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_fuel_cost_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_heat_rate_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_heat_rate_by_unit", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table("mega_generators_eia", schema=None) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table("out_eia__monthly_generators", schema=None) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table("out_eia__yearly_generators", schema=None) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "out_eia__yearly_generators_by_ownership", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table("out_eia__yearly_plant_parts", schema=None) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ with op.batch_alter_table(
+ "out_pudl__yearly_assn_eia_ferc1_plant_parts", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh_eia",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh_ferc1",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh_eia")
+ batch_op.drop_column("heat_rate_mmbtu_mwh_ferc1")
+
+ with op.batch_alter_table("plant_parts_eia", schema=None) as batch_op:
+ batch_op.add_column(
+ sa.Column(
+ "unit_heat_rate_mmbtu_per_mwh",
+ sa.Float(),
+ nullable=True,
+ comment="Fuel content per unit of electricity generated. Coming from MCOE calculation.",
+ )
+ )
+ batch_op.drop_column("heat_rate_mmbtu_mwh")
+
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ # ### commands auto generated by Alembic - please adjust! ###
+ with op.batch_alter_table("plant_parts_eia", schema=None) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "out_pudl__yearly_assn_eia_ferc1_plant_parts", schema=None
+ ) as batch_op:
+ batch_op.add_column(
+ sa.Column("heat_rate_mmbtu_mwh_ferc1", sa.FLOAT(), nullable=True)
+ )
+ batch_op.add_column(
+ sa.Column("heat_rate_mmbtu_mwh_eia", sa.FLOAT(), nullable=True)
+ )
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh_ferc1")
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh_eia")
+
+ with op.batch_alter_table("out_eia__yearly_plant_parts", schema=None) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "out_eia__yearly_generators_by_ownership", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table("out_eia__yearly_generators", schema=None) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table("out_eia__monthly_generators", schema=None) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table("mega_generators_eia", schema=None) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_heat_rate_by_unit", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_heat_rate_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_fuel_cost_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__yearly_derived_generator_attributes", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_heat_rate_by_unit", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_heat_rate_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_fuel_cost_by_generator", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ with op.batch_alter_table(
+ "_out_eia__monthly_derived_generator_attributes", schema=None
+ ) as batch_op:
+ batch_op.add_column(sa.Column("heat_rate_mmbtu_mwh", sa.FLOAT(), nullable=True))
+ batch_op.drop_column("unit_heat_rate_mmbtu_per_mwh")
+
+ # ### end Alembic commands ###
From 0fb7b9f07e4718af62936ead6c962881c2540731 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 17 Nov 2023 10:55:47 -0900
Subject: [PATCH 60/70] Use pudl_sqlite_io_manager for fuel_cost_by_generator
assets
---
src/pudl/analysis/mcoe.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/pudl/analysis/mcoe.py b/src/pudl/analysis/mcoe.py
index 245b9b6b77..e5b3f957b1 100644
--- a/src/pudl/analysis/mcoe.py
+++ b/src/pudl/analysis/mcoe.py
@@ -86,6 +86,7 @@ def hr_by_gen_asset(
"frc": AssetIn(key=f"out_eia923__{agg_freqs[freq]}_fuel_receipts_costs"),
},
compute_kind="Python",
+ io_manager_key="pudl_sqlite_io_manager",
)
def fc_asset(
hr_by_gen: pd.DataFrame, gens: pd.DataFrame, frc: pd.DataFrame
From 271ffc37d3e7a7253beb9bb74ec2ea6585b92e0a Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 17 Nov 2023 20:08:20 +0000
Subject: [PATCH 61/70] Update conda-lock.yml and rendered conda environment
files.
---
environments/conda-linux-64.lock.yml | 2 +-
environments/conda-lock.yml | 24 ++++++++++++------------
environments/conda-osx-64.lock.yml | 2 +-
environments/conda-osx-arm64.lock.yml | 2 +-
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml
index b771c192ef..44df12613a 100644
--- a/environments/conda-linux-64.lock.yml
+++ b/environments/conda-linux-64.lock.yml
@@ -101,7 +101,7 @@ dependencies:
- libsqlite=3.44.0=h2797004_0
- libssh2=1.11.0=h0841786_0
- libxcb=1.15=h0b41bf4_0
- - libxml2=2.11.5=h232c23b_1
+ - libxml2=2.11.6=h232c23b_0
- libzip=1.10.1=h2629f0a_3
- pcre2=10.42=hcad00b1_0
- readline=8.2=h8228510_1
diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml
index 28082c732e..b3a92e3cd4 100644
--- a/environments/conda-lock.yml
+++ b/environments/conda-lock.yml
@@ -1223,7 +1223,7 @@ package:
category: main
optional: false
- name: libxml2
- version: 2.11.5
+ version: 2.11.6
manager: conda
platform: linux-64
dependencies:
@@ -1232,10 +1232,10 @@ package:
libiconv: ">=1.17,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
xz: ">=5.2.6,<6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.5-h232c23b_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.6-h232c23b_0.conda
hash:
- md5: f3858448893839820d4bcfb14ad3ecdf
- sha256: 1b3cb6864de1a558ea5fb144c780121d52507837d15df0600491d8ed92cff90c
+ md5: 427a3e59d66cb5d145020bd9c6493334
+ sha256: e6183d5e57ee48cc1fc4340477c31a6bd8be4d3ba5dded82cbca0d5280591086
category: main
optional: false
- name: libzip
@@ -9009,7 +9009,7 @@ package:
category: main
optional: false
- name: libxml2
- version: 2.11.5
+ version: 2.11.6
manager: conda
platform: osx-64
dependencies:
@@ -9017,10 +9017,10 @@ package:
libiconv: ">=1.17,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
xz: ">=5.2.6,<6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.11.5-h3346baf_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.11.6-hc0ae0f7_0.conda
hash:
- md5: 7584dee6af7de378aed0ae49aebedb8a
- sha256: d901fab32e57a43c44e630fb1c4d0a163d23b109eecd6c68b9ee371800760bca
+ md5: 2b6ec8c6366ea74db4b910469addad1d
+ sha256: b5b1c3df3e6d0d294764938e79d7f413191cc5b1af2ede49f42b1df04d068a18
category: main
optional: false
- name: lz4-c
@@ -16835,7 +16835,7 @@ package:
category: main
optional: false
- name: libxml2
- version: 2.11.5
+ version: 2.11.6
manager: conda
platform: osx-arm64
dependencies:
@@ -16843,10 +16843,10 @@ package:
libiconv: ">=1.17,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
xz: ">=5.2.6,<6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.11.5-h25269f3_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.11.6-h0d0cfa8_0.conda
hash:
- md5: 627b5d1377536b5b632ba53cd1455555
- sha256: 8291549b87aca48e9cd4aec124af01b5037acd16f8ad14083d7af23c8bb6bebe
+ md5: 37e112ce9494adfcee6c0c7bf3b5d98d
+ sha256: 07d2da8f3fb00fb6f84cd36b5329174b878105889f0fe21e79981f27573b47af
category: main
optional: false
- name: lz4-c
diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml
index e7b68ceec1..7df0551194 100644
--- a/environments/conda-osx-64.lock.yml
+++ b/environments/conda-osx-64.lock.yml
@@ -67,7 +67,7 @@ dependencies:
- libspatialindex=1.9.3=he49afe7_4
- libsqlite=3.44.0=h92b6c6a_0
- libxcb=1.15=hb7f2c08_0
- - libxml2=2.11.5=h3346baf_1
+ - libxml2=2.11.6=hc0ae0f7_0
- lz4-c=1.9.4=hf0c8a7f_0
- ncurses=6.4=h93d8f39_2
- nspr=4.35=hea0b92c_0
diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml
index ce2dfcb44a..a58e3ec5f3 100644
--- a/environments/conda-osx-arm64.lock.yml
+++ b/environments/conda-osx-arm64.lock.yml
@@ -68,7 +68,7 @@ dependencies:
- libspatialindex=1.9.3=hbdafb3b_4
- libsqlite=3.44.0=h091b4b1_0
- libxcb=1.15=hf346824_0
- - libxml2=2.11.5=h25269f3_1
+ - libxml2=2.11.6=h0d0cfa8_0
- lz4-c=1.9.4=hb7217d7_0
- ncurses=6.4=h463b476_2
- nspr=4.35=hb7217d7_0
From 9db6ec2e047b697ec92dec6a65fc642e7384f94b Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 30 Nov 2023 10:40:01 -0900
Subject: [PATCH 62/70] Checkout lock files from dev
---
environments/conda-linux-64.lock.yml | 169 +-
environments/conda-lock.yml | 30845 ++++++++++++------------
environments/conda-osx-64.lock.yml | 171 +-
environments/conda-osx-arm64.lock.yml | 171 +-
4 files changed, 15663 insertions(+), 15693 deletions(-)
diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml
index 44df12613a..5f8eb23336 100644
--- a/environments/conda-linux-64.lock.yml
+++ b/environments/conda-linux-64.lock.yml
@@ -1,19 +1,19 @@
# Generated by conda-lock.
# platform: linux-64
-# input_hash: 62bcd0fc7d50df96982d048631ad45bff7910db618111621e212e7f3c28a44bc
+# input_hash: 74460703322c458f7185502b360325ceaa57699985898e73cfba0fe85b343112
channels:
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1=conda_forge
- - ca-certificates=2023.7.22=hbcca054_0
+ - ca-certificates=2023.11.17=hbcca054_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- - font-ttf-ubuntu=0.83=hab24e00_0
+ - font-ttf-ubuntu=0.83=h77eed37_1
- ld_impl_linux-64=2.40=h41732ed_0
- - libboost-headers=1.82.0=ha770c72_6
+ - libboost-headers=1.83.0=ha770c72_0
- libstdcxx-ng=13.2.0=h7e041cc_3
- nomkl=1.0=h5ca1d4c_0
- poppler-data=0.4.12=hd8ed1ab_0
@@ -26,9 +26,9 @@ dependencies:
- libgcc-ng=13.2.0=h807b86a_3
- aws-c-common=0.9.8=hd590300_0
- bzip2=1.0.8=hd590300_5
- - c-ares=1.21.0=hd590300_0
+ - c-ares=1.22.1=hd590300_0
- fribidi=1.0.10=h36c2ea0_0
- - geos=3.12.0=h59595ed_0
+ - geos=3.12.1=h59595ed_0
- gettext=0.21.1=h27087fc_0
- gflags=2.2.2=he1b5a44_1004
- giflib=5.2.1=h0b41bf4_3
@@ -53,7 +53,6 @@ dependencies:
- libnuma=2.0.16=h0b41bf4_1
- libsodium=1.0.18=h36c2ea0_1
- libspatialindex=1.9.3=h9c3ff4c_4
- - libtool=2.4.7=h27087fc_0
- libutf8proc=2.8.0=h166bdaf_0
- libuuid=2.38.1=h0b41bf4_0
- libuv=1.46.0=hd590300_0
@@ -97,8 +96,8 @@ dependencies:
- libpng=1.6.39=h753d276_0
- libprotobuf=4.24.4=hf27288f_0
- libre2-11=2023.06.02=h7a70373_0
- - librttopo=1.1.0=hb58d41b_14
- - libsqlite=3.44.0=h2797004_0
+ - librttopo=1.1.0=h8917695_15
+ - libsqlite=3.44.2=h2797004_0
- libssh2=1.11.0=h0841786_0
- libxcb=1.15=h0b41bf4_0
- libxml2=2.11.6=h232c23b_0
@@ -112,7 +111,7 @@ dependencies:
- zeromq=4.3.5=h59595ed_0
- zlib=1.2.13=hd590300_5
- zstd=1.5.5=hfc55251_0
- - aws-c-io=0.13.35=hc23c90e_8
+ - aws-c-io=0.13.36=hc23c90e_0
- blosc=1.21.5=h0f2a231_0
- brotli-bin=1.1.0=hd590300_1
- freetype=2.12.1=h267a509_2
@@ -120,18 +119,18 @@ dependencies:
- libarchive=3.7.2=h039dbb9_0
- libglib=2.78.1=h783c2da_1
- libllvm15=15.0.7=h5cf9203_3
- - libopenblas=0.3.24=pthreads_h413a1c8_0
+ - libopenblas=0.3.25=pthreads_h413a1c8_0
- libthrift=0.19.0=hb90f79a_1
- libtiff=4.6.0=ha9c0a0a_2
- libxslt=1.1.37=h0054252_1
- minizip=4.0.3=h0ab5242_0
- - nodejs=20.8.1=h1990674_0
- - nss=3.94=h1d7d5a4_0
+ - nodejs=20.9.0=hb753e55_0
+ - nss=3.95=h1d7d5a4_0
- orc=1.9.0=h4b38347_4
- pandoc=3.1.3=h32600fe_0
- python=3.11.6=hab00c5b_0_cpython
- re2=2023.06.02=h2873b5e_0
- - sqlite=3.44.0=h2c6b66d_0
+ - sqlite=3.44.2=h2c6b66d_0
- xorg-libx11=1.8.7=h8ee46fc_0
- aiofiles=23.2.1=pyhd8ed1ab_0
- alabaster=0.7.13=pyhd8ed1ab_0
@@ -140,10 +139,9 @@ dependencies:
- astroid=3.0.1=py311h38be061_0
- atk-1.0=2.38.0=hd4edc92_1
- attrs=23.1.0=pyh71513ae_1
- - aws-c-event-stream=0.3.2=hae413d4_6
- - aws-c-http=0.7.14=h162056d_1
+ - aws-c-event-stream=0.3.2=h1fff966_7
+ - aws-c-http=0.7.14=hc86c171_2
- backoff=2.2.1=pyhd8ed1ab_0
- - backports=1.0=pyhd8ed1ab_3
- backports.zoneinfo=0.2.1=py311h38be061_8
- blinker=1.7.0=pyhd8ed1ab_0
- brotli=1.1.0=hd590300_1
@@ -153,7 +151,7 @@ dependencies:
- cachy=0.3.0=pyhd8ed1ab_1
- catalystcoop.dbfread=3.0.0=py_0
- cchardet=2.1.7=py311hb755f60_5
- - certifi=2023.7.22=pyhd8ed1ab_0
+ - certifi=2023.11.17=pyhd8ed1ab_0
- cfgv=3.3.1=pyhd8ed1ab_0
- chardet=5.2.0=py311h38be061_1
- charset-normalizer=3.3.2=pyhd8ed1ab_0
@@ -173,7 +171,7 @@ dependencies:
- docutils=0.20.1=py311h38be061_2
- entrypoints=0.4=pyhd8ed1ab_0
- et_xmlfile=1.1.0=pyhd8ed1ab_0
- - exceptiongroup=1.1.3=pyhd8ed1ab_0
+ - exceptiongroup=1.2.0=pyhd8ed1ab_0
- execnet=2.0.2=pyhd8ed1ab_0
- executing=2.0.1=pyhd8ed1ab_0
- filelock=3.13.1=pyhd8ed1ab_0
@@ -190,20 +188,20 @@ dependencies:
- humanfriendly=10.0=pyhd8ed1ab_6
- hupper=1.12=pyhd8ed1ab_0
- hyperframe=6.0.1=pyhd8ed1ab_0
- - idna=3.4=pyhd8ed1ab_0
+ - idna=3.6=pyhd8ed1ab_0
- ijson=3.2.3=pyhd8ed1ab_0
- imagesize=1.4.1=pyhd8ed1ab_0
- iniconfig=2.0.0=pyhd8ed1ab_0
- itsdangerous=2.1.2=pyhd8ed1ab_0
- jeepney=0.8.0=pyhd8ed1ab_0
- - jellyfish=1.0.1=py311h46250e7_1
+ - jellyfish=1.0.3=py311h46250e7_0
- jmespath=1.0.1=pyhd8ed1ab_0
- json5=0.9.14=pyhd8ed1ab_0
- jsonpointer=2.4=py311h38be061_3
- jupyterlab_widgets=3.0.9=pyhd8ed1ab_0
- kiwisolver=1.4.5=py311h9547e67_1
- lcms2=2.15=hb7c19ff_3
- - libblas=3.9.0=19_linux64_openblas
+ - libblas=3.9.0=20_linux64_openblas
- libcurl=8.4.0=hca28451_0
- libgrpc=1.59.2=hd6c4280_0
- libpq=16.1=hfc447b1_0
@@ -211,13 +209,13 @@ dependencies:
- llvmlite=0.41.1=py311ha6695c7_0
- locket=1.0.0=pyhd8ed1ab_0
- lxml=4.9.3=py311h1a07684_1
- - marko=1.3.1=pyhd8ed1ab_0
+ - marko=2.0.2=pyhd8ed1ab_0
- markupsafe=2.1.3=py311h459d7ec_1
- mdurl=0.1.0=pyhd8ed1ab_0
- mergedeep=1.3.4=pyhd8ed1ab_0
- mistune=3.0.2=pyhd8ed1ab_0
- more-itertools=10.1.0=pyhd8ed1ab_0
- - msgpack-python=1.0.6=py311h9547e67_0
+ - msgpack-python=1.0.7=py311h9547e67_0
- multidict=6.0.4=py311h459d7ec_1
- multimethod=1.9.1=pyhd8ed1ab_0
- munch=4.0.0=pyhd8ed1ab_0
@@ -230,20 +228,19 @@ dependencies:
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parso=0.8.3=pyhd8ed1ab_0
- pastel=0.2.1=pyhd8ed1ab_0
- - pathspec=0.11.2=pyhd8ed1ab_0
- petl=1.7.14=pyhd8ed1ab_0
- pickleshare=0.7.5=py_1003
- pkginfo=1.9.6=pyhd8ed1ab_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
- pluggy=1.3.0=pyhd8ed1ab_0
- prettier=3.1.0=h31abb78_0
- - prometheus_client=0.18.0=pyhd8ed1ab_1
+ - prometheus_client=0.19.0=pyhd8ed1ab_0
- psutil=5.9.5=py311h459d7ec_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pure_eval=0.2.2=pyhd8ed1ab_0
- - pyasn1=0.5.0=pyhd8ed1ab_0
+ - pyasn1=0.5.1=pyhd8ed1ab_0
- pycparser=2.21=pyhd8ed1ab_0
- - pygments=2.16.1=pyhd8ed1ab_0
+ - pygments=2.17.2=pyhd8ed1ab_0
- pyjwt=2.8.0=pyhd8ed1ab_0
- pylev=1.4.0=pyhd8ed1ab_0
- pyparsing=3.1.1=pyhd8ed1ab_0
@@ -262,10 +259,10 @@ dependencies:
- regex=2023.10.3=py311h459d7ec_0
- rfc3986=2.0.0=pyhd8ed1ab_0
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- - rpds-py=0.13.0=py311h46250e7_0
+ - rpds-py=0.13.2=py311h46250e7_0
- rtree=1.1.0=py311h3bb2b0f_0
- ruamel.yaml.clib=0.2.7=py311h459d7ec_2
- - ruff=0.1.5=py311h7145743_0
+ - ruff=0.1.6=py311h7145743_0
- send2trash=1.8.2=pyh41d4057_0
- setuptools=68.2.2=pyhd8ed1ab_0
- shellingham=1.5.4=pyhd8ed1ab_0
@@ -287,20 +284,21 @@ dependencies:
- toolz=0.12.0=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311h459d7ec_1
- - traitlets=5.13.0=pyhd8ed1ab_0
+ - traitlets=5.14.0=pyhd8ed1ab_0
- types-python-dateutil=2.8.19.14=pyhd8ed1ab_0
- types-pyyaml=6.0.12.12=pyhd8ed1ab_0
- typing_extensions=4.8.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_0
- - unicodecsv=0.14.1=py_1
+ - unicodecsv=0.14.1=pyhd8ed1ab_2
- uri-template=1.3.0=pyhd8ed1ab_0
- uvloop=0.19.0=py311h460e60f_0
- validators=0.22.0=pyhd8ed1ab_0
+ - wcwidth=0.2.12=pyhd8ed1ab_0
- webcolors=1.13=pyhd8ed1ab_0
- webencodings=0.5.1=pyhd8ed1ab_2
- websocket-client=1.6.4=pyhd8ed1ab_0
- websockets=10.4=py311hd4cff14_1
- - wheel=0.41.3=pyhd8ed1ab_0
+ - wheel=0.42.0=pyhd8ed1ab_0
- widgetsnbextension=4.0.9=pyhd8ed1ab_0
- wrapt=1.16.0=py311h459d7ec_0
- xlrd=2.0.1=pyhd8ed1ab_3
@@ -310,15 +308,14 @@ dependencies:
- xyzservices=2023.10.1=pyhd8ed1ab_0
- zipp=3.17.0=pyhd8ed1ab_0
- aiosignal=1.3.1=pyhd8ed1ab_0
- - anyio=4.0.0=pyhd8ed1ab_0
+ - anyio=4.1.0=pyhd8ed1ab_0
- asgi-csrf=0.9=pyhd8ed1ab_0
- asgiref=3.7.2=pyhd8ed1ab_0
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- - aws-c-auth=0.7.6=h37ad1db_0
- - aws-c-mqtt=0.9.9=h1387108_0
+ - aws-c-auth=0.7.7=h4faf3ed_1
+ - aws-c-mqtt=0.9.10=hba57965_1
- babel=2.13.1=pyhd8ed1ab_0
- - backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
- bleach=6.1.0=pyhd8ed1ab_0
- cached-property=1.5.2=hd8ed1ab_1
@@ -333,7 +330,8 @@ dependencies:
- coloredlogs=14.0=pyhd8ed1ab_3
- comm=0.1.4=pyhd8ed1ab_0
- coverage=7.3.2=py311h459d7ec_0
- - fonttools=4.44.3=py311h459d7ec_0
+ - curl=8.4.0=hca28451_0
+ - fonttools=4.45.1=py311h459d7ec_0
- gitdb=4.0.11=pyhd8ed1ab_0
- graphql-core=3.2.3=pyhd8ed1ab_0
- grpcio=1.59.2=py311ha6695c7_0
@@ -341,7 +339,7 @@ dependencies:
- h2=4.1.0=pyhd8ed1ab_0
- hdf5=1.14.2=nompi_h4f84152_100
- html5lib=1.1=pyh9f0ad1d_0
- - hypothesis=6.89.0=pyha770c72_0
+ - hypothesis=6.91.0=pyha770c72_0
- importlib-metadata=6.8.0=pyha770c72_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- isodate=0.6.1=pyhd8ed1ab_0
@@ -351,12 +349,12 @@ dependencies:
- jinja2=3.1.2=pyhd8ed1ab_1
- joblib=1.3.2=pyhd8ed1ab_0
- jsonlines=4.0.0=pyhd8ed1ab_0
- - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
+ - jupyterlab_pygments=0.3.0=pyhd8ed1ab_0
- latexcodec=2.0.1=pyh9f0ad1d_0
- - libcblas=3.9.0=19_linux64_openblas
+ - libcblas=3.9.0=20_linux64_openblas
- libgd=2.3.3=h119a65a_9
- libgoogle-cloud=2.12.0=h5206363_4
- - liblapack=3.9.0=19_linux64_openblas
+ - liblapack=3.9.0=20_linux64_openblas
- linear-tsv=1.1.0=py_1
- markdown-it-py=3.0.0=pyhd8ed1ab_0
- matplotlib-inline=0.1.6=pyhd8ed1ab_0
@@ -368,8 +366,10 @@ dependencies:
- pillow=10.1.0=py311ha6c5da5_0
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
+ - platformdirs=4.0.0=pyhd8ed1ab_0
- postgresql=16.1=h8972f4a_0
- proj=9.3.0=h1d62c97_2
+ - prompt-toolkit=3.0.41=pyha770c72_0
- protobuf=4.24.4=py311h46cbc50_0
- psycopg2=2.9.7=py311h03dec38_1
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
@@ -379,12 +379,11 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.31.0=pyhd8ed1ab_0
+ - referencing=0.31.1=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
- ruamel.yaml=0.18.5=py311h459d7ec_0
- - sqlalchemy=1.4.49=py311h459d7ec_1
- terminado=0.18.0=pyh0d859eb_0
- tinycss2=1.2.1=pyhd8ed1ab_0
- tqdm=4.66.1=pyhd8ed1ab_0
@@ -394,14 +393,15 @@ dependencies:
- urllib3=1.26.18=pyhd8ed1ab_0
- watchdog=3.0.0=py311h38be061_1
- xerces-c=3.2.4=hac6953d_3
- - yarl=1.9.2=py311h459d7ec_1
+ - yarl=1.9.3=py311h459d7ec_0
- addfips=0.4.0=pyhd8ed1ab_1
- aniso8601=9.0.1=pyhd8ed1ab_0
+ - annotated-types=0.6.0=pyhd8ed1ab_0
- argon2-cffi-bindings=21.2.0=py311h459d7ec_4
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- - aws-c-s3=0.3.24=h7630044_0
- - botocore=1.32.2=pyhd8ed1ab_0
+ - aws-c-s3=0.4.1=hfadff92_0
+ - botocore=1.33.3=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311h63ff55d_0
@@ -417,40 +417,41 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
+ - jupyter_core=5.5.0=py311h38be061_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=hcd42e92_1
- libnetcdf=4.9.2=nompi_h80fb2b6_112
- - libspatialite=5.1.0=h090f1da_1
+ - libspatialite=5.1.0=h7385560_2
- mako=1.3.0=pyhd8ed1ab_0
- - numpy=1.26.0=py311h64a7726_0
+ - numpy=1.26.2=py311h64a7726_0
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311h459d7ec_6
- - platformdirs=3.11.0=pyhd8ed1ab_0
- poppler=23.11.0=h590f24d_0
+ - prompt_toolkit=3.0.41=hd8ed1ab_0
- psycopg2-binary=2.9.7=pyhd8ed1ab_1
- pybtex=0.24.0=pyhd8ed1ab_2
- - pydantic=1.10.13=py311h459d7ec_1
+ - pydantic-core=2.14.5=py311h46250e7_0
- pyproj=3.6.1=py311h1facc83_4
- pytest-console-scripts=1.4.1=pyhd8ed1ab_0
- pytest-cov=4.1.0=pyhd8ed1ab_0
- pytest-mock=3.12.0=pyhd8ed1ab_0
- - pytest-xdist=3.4.0=pyhd8ed1ab_0
+ - pytest-xdist=3.5.0=pyhd8ed1ab_0
- python-build=1.0.3=pyhd8ed1ab_0
- requests=2.31.0=pyhd8ed1ab_0
- rich=13.7.0=pyhd8ed1ab_0
+ - sqlalchemy=2.0.23=py311h459d7ec_0
- stack_data=0.6.2=pyhd8ed1ab_0
- starlette=0.32.0.post1=pyhd8ed1ab_0
- tiledb=2.16.3=h8c794c1_3
- ukkonen=1.0.1=py311h9547e67_4
- uvicorn=0.24.0=py311h38be061_0
- - watchfiles=0.20.0=py311h46250e7_2
- - wcwidth=0.2.10=pyhd8ed1ab_0
+ - virtualenv=20.24.7=pyhd8ed1ab_0
+ - watchfiles=0.21.0=py311h46250e7_0
- aiohttp=3.8.6=py311h459d7ec_1
- alembic=1.12.1=pyhd8ed1ab_0
- - arelle-release=2.17.4=pyhd8ed1ab_0
+ - arelle-release=2.17.7=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- - aws-crt-cpp=0.24.7=h4712614_1
- - black=23.10.1=py311h38be061_0
+ - aws-crt-cpp=0.24.7=h97e63c7_6
- bottleneck=1.3.7=py311h1f0f07a_1
- cachecontrol=0.13.1=pyhd8ed1ab_0
- contourpy=1.2.0=py311h9547e67_0
@@ -462,100 +463,98 @@ dependencies:
- graphene=3.3=pyhd8ed1ab_0
- grpcio-status=1.59.2=pyhd8ed1ab_0
- h3-py=3.7.6=py311hb755f60_1
- - httpx=0.25.1=pyhd8ed1ab_0
- - identify=2.5.31=pyhd8ed1ab_0
+ - httpx=0.25.2=pyhd8ed1ab_0
+ - identify=2.5.32=pyhd8ed1ab_0
+ - ipython=8.18.1=pyh31011fe_1
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- - jupyter_core=5.5.0=py311h38be061_0
- - libgdal=3.8.0=h12dd931_4
+ - jupyter_client=8.6.0=pyhd8ed1ab_0
+ - libgdal=3.8.0=he7dcfe9_6
- numba=0.58.1=py311h96b013e_0
- numexpr=2.8.7=py311h039bad6_104
- oauthlib=3.2.2=pyhd8ed1ab_0
- pandas=2.1.3=py311h320fe9a_0
- pango=1.50.14=ha41ecd1_2
- - prompt-toolkit=3.0.41=pyha770c72_0
- pybtex-docutils=1.0.3=py311h38be061_1
+ - pydantic=2.5.2=pyhd8ed1ab_0
- pyopenssl=23.3.0=pyhd8ed1ab_0
- readthedocs-sphinx-ext=2.2.3=pyhd8ed1ab_0
- requests-toolbelt=0.10.1=pyhd8ed1ab_0
- responses=0.24.1=pyhd8ed1ab_0
- - s3transfer=0.7.0=pyhd8ed1ab_0
- - scipy=1.11.3=py311h64a7726_1
+ - s3transfer=0.8.2=pyhd8ed1ab_0
+ - scipy=1.11.4=py311h64a7726_0
- secretstorage=3.3.3=py311h38be061_2
- - shapely=2.0.2=py311he06c224_0
+ - shapely=2.0.2=py311h2032efe_1
- stevedore=5.1.0=pyhd8ed1ab_0
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0=h38be061_0
- - virtualenv=20.24.6=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h8beafcf_7
- - boto3=1.29.2=pyhd8ed1ab_0
+ - boto3=1.33.3=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- dagster=1.5.9=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.8.0=py311h815a124_4
+ - gdal=3.8.0=py311h815a124_6
- geopandas-base=0.14.1=pyha770c72_0
- google-auth=2.23.4=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- gtk2=2.24.33=h90689f9_2
+ - ipykernel=6.26.0=pyhf8b6a83_0
+ - ipywidgets=8.1.1=pyhd8ed1ab_0
- jsonschema-with-format-nongpl=4.20.0=pyhd8ed1ab_0
- - jupyter_client=8.6.0=pyhd8ed1ab_0
- keyring=24.3.0=py311h38be061_0
- librsvg=2.56.3=h98fae49_0
- - matplotlib-base=3.8.1=py311h54ef318_0
+ - matplotlib-base=3.8.2=py311h54ef318_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
- pre-commit=3.5.0=pyha770c72_0
- - prompt_toolkit=3.0.41=hd8ed1ab_0
+ - pydantic-settings=2.1.0=pyhd8ed1ab_1
- requests-oauthlib=1.3.1=pyhd8ed1ab_0
- scikit-learn=1.3.2=py311hc009520_1
- timezonefinder=6.2.0=py311h459d7ec_2
- - catalystcoop.ferc_xbrl_extractor=1.2.1=pyhd8ed1ab_0
- - conda-lock=2.4.2=pyhd8ed1ab_0
+ - catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
+ - conda-lock=2.5.1=pyhd8ed1ab_0
- dagster-graphql=1.5.9=pyhd8ed1ab_0
- - dagster-postgres=0.21.9=pyhd8ed1ab_0
+ - dagster-postgres=0.21.9=pyhd8ed1ab_1
- fiona=1.9.5=py311hf8e0aa6_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
- - graphviz=8.1.0=h28d9a01_0
- - ipython=8.17.2=pyh41d4057_0
+ - graphviz=9.0.0=h78e8752_1
+ - jupyter_console=6.6.3=pyhd8ed1ab_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- libarrow=14.0.1=h4df1b6a_3_cpu
- mapclassify=2.6.1=pyhd8ed1ab_0
- nbclient=0.8.0=pyhd8ed1ab_0
+ - qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- dagster-webserver=1.5.9=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- - ipykernel=6.26.0=pyhf8b6a83_0
- - ipywidgets=8.1.1=pyhd8ed1ab_0
- libarrow-acero=14.0.1=h59595ed_3_cpu
- libarrow-flight=14.0.1=h120cb0d_3_cpu
- libarrow-gandiva=14.0.1=hacb8726_3_cpu
- libparquet=14.0.1=h352af49_3_cpu
- nbconvert-core=7.11.0=pyhd8ed1ab_0
- - pygraphviz=1.11=py311h72a77b7_1
+ - pygraphviz=1.11=py311hbf5cbc9_2
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_console=6.6.3=pyhd8ed1ab_0
- - jupyter_server=2.10.1=pyhd8ed1ab_0
+ - jupyter_server=2.11.1=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=h59595ed_3_cpu
- libarrow-flight-sql=14.0.1=h61ff412_3_cpu
- nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
- - qtconsole-base=5.5.1=pyha770c72_0
- gcsfs=2023.10.0=pyhd8ed1ab_0
- - jupyter-lsp=2.2.0=pyhd8ed1ab_0
+ - jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- - jupyterlab_server=2.25.1=pyhd8ed1ab_0
+ - jupyterlab_server=2.25.2=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h61ff412_3_cpu
- nbconvert=7.11.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- - jupyterlab=4.0.8=pyhd8ed1ab_0
+ - jupyterlab=4.0.9=pyhd8ed1ab_0
- pyarrow=14.0.1=py311h39c9aba_3_cpu
- notebook=7.0.6=pyhd8ed1ab_0
- jupyter=1.0.0=pyhd8ed1ab_10
diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml
index b3a92e3cd4..89512fd344 100644
--- a/environments/conda-lock.yml
+++ b/environments/conda-lock.yml
@@ -15,9 +15,9 @@
version: 1
metadata:
content_hash:
- linux-64: 62bcd0fc7d50df96982d048631ad45bff7910db618111621e212e7f3c28a44bc
- osx-64: bcf38db86781af22df7f496ce0dafe43a905c359e9c7d6d038429569b874c305
- osx-arm64: 8d8eb4c72944efa02bab31f0274acad445146594b4cad129cc341a304e08ebb2
+ linux-64: 74460703322c458f7185502b360325ceaa57699985898e73cfba0fe85b343112
+ osx-64: 84d829289bcc9447b519b5ef1003de9a87b33c825aefe64c768630f2b560d152
+ osx-arm64: 4af60a188a5341a583519edb866207f4e68583e87831447441cb1088e6d9349a
channels:
- url: conda-forge
used_env_vars: []
@@ -41,2565 +41,2678 @@ package:
sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
category: main
optional: false
- - name: ca-certificates
- version: 2023.7.22
+ - name: _openmp_mutex
+ version: "4.5"
manager: conda
platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda
+ dependencies:
+ _libgcc_mutex: "0.1"
+ libgomp: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
hash:
- md5: a73ecd2988327ad4c8f2c331482917f2
- sha256: 525b7b6b5135b952ec1808de84e5eca57c7c7ff144e29ef3e96ae4040ff432c1
+ md5: 73aaf86a425cc6e73fcf236a5a46396d
+ sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
category: main
optional: false
- - name: font-ttf-dejavu-sans-mono
- version: "2.37"
+ - name: addfips
+ version: 0.4.0
manager: conda
platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ dependencies:
+ importlib_resources: ">=5.0"
+ python: ">=3.7.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/addfips-0.4.0-pyhd8ed1ab_1.conda
hash:
- md5: 0c96522c6bdaed4b1566d11387caaf45
- sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
+ md5: cb434d01bfd3ba57c54a423f3773ffda
+ sha256: c6f7bf91f19ad4fdd183efde6346a0dfd3df7929f413c9535e19c51610b4f671
category: main
optional: false
- - name: font-ttf-inconsolata
- version: "3.000"
+ - name: addfips
+ version: 0.4.0
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ platform: osx-64
+ dependencies:
+ importlib_resources: ">=5.0"
+ python: ">=3.7.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/addfips-0.4.0-pyhd8ed1ab_1.conda
hash:
- md5: 34893075a5c9e55cdafac56607368fc6
- sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
+ md5: cb434d01bfd3ba57c54a423f3773ffda
+ sha256: c6f7bf91f19ad4fdd183efde6346a0dfd3df7929f413c9535e19c51610b4f671
category: main
optional: false
- - name: font-ttf-source-code-pro
- version: "2.038"
+ - name: addfips
+ version: 0.4.0
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ platform: osx-arm64
+ dependencies:
+ importlib_resources: ">=5.0"
+ python: ">=3.7.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/addfips-0.4.0-pyhd8ed1ab_1.conda
hash:
- md5: 4d59c254e01d9cde7957100457e2d5fb
- sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
+ md5: cb434d01bfd3ba57c54a423f3773ffda
+ sha256: c6f7bf91f19ad4fdd183efde6346a0dfd3df7929f413c9535e19c51610b4f671
category: main
optional: false
- - name: font-ttf-ubuntu
- version: "0.83"
+ - name: aiofiles
+ version: 23.2.1
manager: conda
platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 19410c3df09dfb12d1206132a1d357c5
- sha256: 470d5db54102bd51dbb0c5990324a2f4a0bc976faa493b22193338adb9882e2e
+ md5: a2ee5b45771a700cf442a2edb151594e
+ sha256: 98c9b4480dba1ae72c9a187cee7164ed1704f03c82576940311b5c3b55118ee5
category: main
optional: false
- - name: ld_impl_linux-64
- version: "2.40"
+ - name: aiofiles
+ version: 23.2.1
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 7aca3059a1729aa76c597603f10b0dd3
- sha256: f6cc89d887555912d6c61b295d398cff9ec982a3417d38025c45d5dd9b9e79cd
+ md5: a2ee5b45771a700cf442a2edb151594e
+ sha256: 98c9b4480dba1ae72c9a187cee7164ed1704f03c82576940311b5c3b55118ee5
category: main
optional: false
- - name: libboost-headers
- version: 1.82.0
+ - name: aiofiles
+ version: 23.2.1
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.82.0-ha770c72_6.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda
hash:
- md5: a943dcb8fd22cf23ce901ac84f6538c2
- sha256: c996950b85808115ea833e577a0af2969dbb0378c299560c2b945401a7770823
+ md5: a2ee5b45771a700cf442a2edb151594e
+ sha256: 98c9b4480dba1ae72c9a187cee7164ed1704f03c82576940311b5c3b55118ee5
category: main
optional: false
- - name: libstdcxx-ng
- version: 13.2.0
+ - name: aiohttp
+ version: 3.8.6
manager: conda
platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda
+ dependencies:
+ aiosignal: ">=1.1.2"
+ async-timeout: <5.0,>=4.0.0a3
+ attrs: ">=17.3.0"
+ charset-normalizer: ">=2.0,<4.0"
+ frozenlist: ">=1.1.1"
+ libgcc-ng: ">=12"
+ multidict: ">=4.5,<7.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ yarl: ">=1.0,<2.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.6-py311h459d7ec_1.conda
hash:
- md5: 937eaed008f6bf2191c5fe76f87755e9
- sha256: 6c6c49efedcc5709a66f19fb6b26b69c6a5245310fd1d9a901fd5e38aaf7f882
+ md5: 7d4b63a745f293029b5689b0b5d8aa15
+ sha256: 690f7ca719e99d47728c392ab0f5f362013852800db41702c29d219c8e380976
category: main
optional: false
- - name: nomkl
- version: "1.0"
+ - name: aiohttp
+ version: 3.8.6
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
+ platform: osx-64
+ dependencies:
+ aiosignal: ">=1.1.2"
+ async-timeout: <5.0,>=4.0.0a3
+ attrs: ">=17.3.0"
+ charset-normalizer: ">=2.0,<4.0"
+ frozenlist: ">=1.1.1"
+ multidict: ">=4.5,<7.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ yarl: ">=1.0,<2.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.8.6-py311he705e18_1.conda
hash:
- md5: 9a66894dfd07c4510beb6b3f9672ccc0
- sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b
+ md5: 5319ce185be1f2c4d1b19b95488c02a8
+ sha256: e2f3b1c8fe44daf016396f6a49e80c84aeb9621d2812bec15e4d1873e5972b58
category: main
optional: false
- - name: poppler-data
- version: 0.4.12
+ - name: aiohttp
+ version: 3.8.6
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies:
+ aiosignal: ">=1.1.2"
+ async-timeout: <5.0,>=4.0.0a3
+ attrs: ">=17.3.0"
+ charset-normalizer: ">=2.0,<4.0"
+ frozenlist: ">=1.1.1"
+ multidict: ">=4.5,<7.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ yarl: ">=1.0,<2.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.8.6-py311h05b510d_1.conda
hash:
- md5: d8d7293c5b37f39b2ac32940621c6592
- sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf
+ md5: c783a2696f1acfb0fcd748aa87118518
+ sha256: b41fca4f9bd2f09cf0daeb762c5f74cedfea366f409dcbdcff8d565c616c2309
category: main
optional: false
- - name: python_abi
- version: "3.11"
+ - name: aiosignal
+ version: 1.3.1
manager: conda
platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda
+ dependencies:
+ frozenlist: ">=1.1.0"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: d786502c97404c94d7d58d258a445a65
- sha256: 0be3ac1bf852d64f553220c7e6457e9c047dfb7412da9d22fbaa67e60858b3cf
+ md5: d1e1eb7e21a9e2c74279d87dafb68156
+ sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783
category: main
optional: false
- - name: tzdata
- version: 2023c
+ - name: aiosignal
+ version: 1.3.1
manager: conda
- platform: linux-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.7"
+ frozenlist: ">=1.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 939e3e74d8be4dac89ce83b20de2492a
- sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55
+ md5: d1e1eb7e21a9e2c74279d87dafb68156
+ sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783
category: main
optional: false
- - name: fonts-conda-forge
- version: "1"
+ - name: aiosignal
+ version: 1.3.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- font-ttf-dejavu-sans-mono: ""
- font-ttf-inconsolata: ""
- font-ttf-source-code-pro: ""
- font-ttf-ubuntu: ""
- url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ python: ">=3.7"
+ frozenlist: ">=1.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f766549260d6815b0c52253f1fb1bb29
- sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
+ md5: d1e1eb7e21a9e2c74279d87dafb68156
+ sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783
category: main
optional: false
- - name: libgomp
- version: 13.2.0
+ - name: alabaster
+ version: 0.7.13
manager: conda
platform: linux-64
dependencies:
- _libgcc_mutex: "0.1"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda
hash:
- md5: 7124cbb46b13d395bdde68f2d215c989
- sha256: 6ebedee39b6bbbc969715d0d7fa4b381cce67e1139862604ffa393f821c08e81
+ md5: 06006184e203b61d3525f90de394471e
+ sha256: b2d160a050996950434c6e87a174fc01c4a937cbeffbdd20d1b46126b4478a95
category: main
optional: false
- - name: _openmp_mutex
- version: "4.5"
+ - name: alabaster
+ version: 0.7.13
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- _libgcc_mutex: "0.1"
- libgomp: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda
hash:
- md5: 73aaf86a425cc6e73fcf236a5a46396d
- sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
+ md5: 06006184e203b61d3525f90de394471e
+ sha256: b2d160a050996950434c6e87a174fc01c4a937cbeffbdd20d1b46126b4478a95
category: main
optional: false
- - name: fonts-conda-ecosystem
- version: "1"
+ - name: alabaster
+ version: 0.7.13
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- fonts-conda-forge: ""
- url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda
hash:
- md5: fee5683a3f04bd15cbd8318b096a27ab
- sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
+ md5: 06006184e203b61d3525f90de394471e
+ sha256: b2d160a050996950434c6e87a174fc01c4a937cbeffbdd20d1b46126b4478a95
category: main
optional: false
- - name: libgcc-ng
- version: 13.2.0
+ - name: alembic
+ version: 1.12.1
manager: conda
platform: linux-64
dependencies:
- _libgcc_mutex: "0.1"
- _openmp_mutex: ">=4.5"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda
+ importlib-metadata: ""
+ importlib_resources: ""
+ mako: ""
+ python: ">=3.7"
+ sqlalchemy: ">=1.3.0"
+ typing-extensions: ">=4"
+ url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.1-pyhd8ed1ab_0.conda
hash:
- md5: 23fdf1fef05baeb7eadc2aed5fb0011f
- sha256: 5e88f658e07a30ab41b154b42c59f079b168acfa9551a75bdc972099453f4105
+ md5: 15de9992b4096a2a6656ca202fde6e4c
+ sha256: 24019b1af4777e32843b230dd7a9bf7082943eb21bba03379ceed0bda50facf9
category: main
optional: false
- - name: aws-c-common
- version: 0.9.8
+ - name: alembic
+ version: 1.12.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.8-hd590300_0.conda
+ importlib-metadata: ""
+ importlib_resources: ""
+ mako: ""
+ python: ">=3.7"
+ sqlalchemy: ">=1.3.0"
+ typing-extensions: ">=4"
+ url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.1-pyhd8ed1ab_0.conda
hash:
- md5: 1fd5f2ae093f2dbf28dc4f18fca57309
- sha256: 09075cb426a0b903b7ca86e4f399eb0be02b6d24e403792a5f378064fcb7a08b
+ md5: 15de9992b4096a2a6656ca202fde6e4c
+ sha256: 24019b1af4777e32843b230dd7a9bf7082943eb21bba03379ceed0bda50facf9
category: main
optional: false
- - name: bzip2
- version: 1.0.8
+ - name: alembic
+ version: 1.12.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda
+ importlib-metadata: ""
+ importlib_resources: ""
+ mako: ""
+ python: ">=3.7"
+ sqlalchemy: ">=1.3.0"
+ typing-extensions: ">=4"
+ url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.1-pyhd8ed1ab_0.conda
hash:
- md5: 69b8b6202a07720f448be700e300ccf4
- sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8
+ md5: 15de9992b4096a2a6656ca202fde6e4c
+ sha256: 24019b1af4777e32843b230dd7a9bf7082943eb21bba03379ceed0bda50facf9
category: main
optional: false
- - name: c-ares
- version: 1.21.0
+ - name: aniso8601
+ version: 9.0.1
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.21.0-hd590300_0.conda
+ python: ">=2.7"
+ python-dateutil: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/aniso8601-9.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: c06fa0440048270817b9e3142cc661bf
- sha256: dfe0e81d5462fced79fd0f99edeec94c9b27268cb04238638180981af2f889f1
- category: main
- optional: false
- - name: fribidi
- version: 1.0.10
+ md5: 36fba1a639f2d24723c5480345b78553
+ sha256: 201c040b6ee0045805a777f75f37a8648eb8dfd4725d62a4fcddc24d7d6c2a9f
+ category: dev
+ optional: true
+ - name: aniso8601
+ version: 9.0.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2
+ python-dateutil: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/aniso8601-9.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ac7bc6a654f8f41b352b38f4051135f8
- sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627
+ md5: 36fba1a639f2d24723c5480345b78553
+ sha256: 201c040b6ee0045805a777f75f37a8648eb8dfd4725d62a4fcddc24d7d6c2a9f
category: dev
optional: true
- - name: geos
- version: 3.12.0
+ - name: aniso8601
+ version: 9.0.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.0-h59595ed_0.conda
+ python-dateutil: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/aniso8601-9.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3fdf79ef322c8379ae83be491d805369
- sha256: c80ff0ed71db0d56567ee87df28bc442b596330ac241ab86f488e3139f0e2cae
- category: main
- optional: false
- - name: gettext
- version: 0.21.1
+ md5: 36fba1a639f2d24723c5480345b78553
+ sha256: 201c040b6ee0045805a777f75f37a8648eb8dfd4725d62a4fcddc24d7d6c2a9f
+ category: dev
+ optional: true
+ - name: annotated-types
+ version: 0.6.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2
+ python: ">=3.7"
+ typing-extensions: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.6.0-pyhd8ed1ab_0.conda
hash:
- md5: 14947d8770185e5153fdd04d4673ed37
- sha256: 4fcfedc44e4c9a053f0416f9fc6ab6ed50644fca3a761126dbd00d09db1f546a
+ md5: 997c29372bdbe2afee073dff71f35923
+ sha256: 3a2c98154d95cfd54daba6b7d507d31f5ba07ac2ad955c44eb041b66563193cd
category: main
optional: false
- - name: gflags
- version: 2.2.2
+ - name: annotated-types
+ version: 0.6.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=7.5.0"
- libstdcxx-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2
+ python: ">=3.7"
+ typing-extensions: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.6.0-pyhd8ed1ab_0.conda
hash:
- md5: cddaf2c63ea4a5901cf09524c490ecdc
- sha256: a853c0cacf53cfc59e1bca8d6e5cdfe9f38fce836f08c2a69e35429c2a492e77
+ md5: 997c29372bdbe2afee073dff71f35923
+ sha256: 3a2c98154d95cfd54daba6b7d507d31f5ba07ac2ad955c44eb041b66563193cd
category: main
optional: false
- - name: giflib
- version: 5.2.1
+ - name: annotated-types
+ version: 0.6.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda
+ python: ">=3.7"
+ typing-extensions: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.6.0-pyhd8ed1ab_0.conda
hash:
- md5: 96f3b11872ef6fad973eac856cd2624f
- sha256: 41ec165704ccce2faa0437f4f53c03c06261a2cc9ff7614828e51427d9261f4b
+ md5: 997c29372bdbe2afee073dff71f35923
+ sha256: 3a2c98154d95cfd54daba6b7d507d31f5ba07ac2ad955c44eb041b66563193cd
category: main
optional: false
- - name: gmp
- version: 6.3.0
+ - name: anyascii
+ version: 0.3.2
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/anyascii-0.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 0e33ef437202db431aa5a928248cf2e8
- sha256: 2a50495b6bbbacb03107ea0b752d8358d4a40b572d124a8cade068c147f344f5
+ md5: 70b6fc71d80ea6176f5302ebbeb13d8a
+ sha256: 8ad0591c262e63f3a66fe093886a4b5d00d3ad6223560fc2a88da441c672fddc
category: main
optional: false
- - name: graphite2
- version: 1.3.13
+ - name: anyascii
+ version: 0.3.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=7.5.0"
- libstdcxx-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/anyascii-0.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 8c54672728e8ec6aa6db90cf2806d220
- sha256: 65da967f3101b737b08222de6a6a14e20e480e7d523a5d1e19ace7b960b5d6b1
- category: dev
- optional: true
- - name: icu
- version: "73.2"
+ md5: 70b6fc71d80ea6176f5302ebbeb13d8a
+ sha256: 8ad0591c262e63f3a66fe093886a4b5d00d3ad6223560fc2a88da441c672fddc
+ category: main
+ optional: false
+ - name: anyascii
+ version: 0.3.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/anyascii-0.3.2-pyhd8ed1ab_0.conda
hash:
- md5: cc47e1facc155f91abd89b11e48e72ff
- sha256: e12fd90ef6601da2875ebc432452590bc82a893041473bc1c13ef29001a73ea8
+ md5: 70b6fc71d80ea6176f5302ebbeb13d8a
+ sha256: 8ad0591c262e63f3a66fe093886a4b5d00d3ad6223560fc2a88da441c672fddc
category: main
optional: false
- - name: json-c
- version: "0.17"
+ - name: anyio
+ version: 4.1.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.17-h7ab15ed_0.conda
+ exceptiongroup: ">=1.0.2"
+ idna: ">=2.8"
+ python: ">=3.8"
+ sniffio: ">=1.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 9961b1f100c3b6852bd97c9233d06979
- sha256: 5646496ca07dfa1486d27ed07282967007811dfc63d6394652e87f94166ecae3
+ md5: 76a3b574717769c4c937c2afa2f1069f
+ sha256: d9d64b29d8a4f58a8d5f9cb0af80b70fd4e038a6e328b039899f7cd93863a82e
category: main
optional: false
- - name: keyutils
- version: 1.6.1
+ - name: anyio
+ version: 4.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=10.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
+ python: ">=3.8"
+ sniffio: ">=1.1"
+ idna: ">=2.8"
+ exceptiongroup: ">=1.0.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 30186d27e2c9fa62b45fb1476b7200e3
- sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb
+ md5: 76a3b574717769c4c937c2afa2f1069f
+ sha256: d9d64b29d8a4f58a8d5f9cb0af80b70fd4e038a6e328b039899f7cd93863a82e
category: main
optional: false
- - name: lerc
- version: 4.0.0
+ - name: anyio
+ version: 4.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
+ python: ">=3.8"
+ sniffio: ">=1.1"
+ idna: ">=2.8"
+ exceptiongroup: ">=1.0.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 76bbff344f0134279f225174e9064c8f
- sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12
+ md5: 76a3b574717769c4c937c2afa2f1069f
+ sha256: d9d64b29d8a4f58a8d5f9cb0af80b70fd4e038a6e328b039899f7cd93863a82e
category: main
optional: false
- - name: libabseil
- version: "20230802.1"
+ - name: appdirs
+ version: 1.4.4
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230802.1-cxx17_h59595ed_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 2785ddf4cb0e7e743477991d64353947
- sha256: 8729021a93e67bb93b4e73ef0a132499db516accfea11561b667635bcd0507e7
+ md5: 5f095bc6454094e96f146491fd03633b
+ sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111
category: main
optional: false
- - name: libaec
- version: 1.1.2
+ - name: appdirs
+ version: 1.4.4
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.2-h59595ed_1.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 127b0be54c1c90760d7fe02ea7a56426
- sha256: fdde15e74dc099ab1083823ec0f615958e53d9a8fae10405af977de251668bea
+ md5: 5f095bc6454094e96f146491fd03633b
+ sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111
category: main
optional: false
- - name: libbrotlicommon
- version: 1.1.0
+ - name: appdirs
+ version: 1.4.4
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
hash:
- md5: aec6c91c7371c26392a06708a73c70e5
- sha256: 40f29d1fab92c847b083739af86ad2f36d8154008cf99b64194e4705a1725d78
+ md5: 5f095bc6454094e96f146491fd03633b
+ sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111
category: main
optional: false
- - name: libcrc32c
- version: 1.1.2
+ - name: appnope
+ version: 0.1.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=9.4.0"
- libstdcxx-ng: ">=9.4.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: c965a5aa0d5c1c37ffc62dff36e28400
- sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5
+ md5: 54ac328d703bff191256ffa1183126d1
+ sha256: b209a68ac55eb9ecad7042f0d4eedef5da924699f6cdf54ac1826869cfdae742
category: main
optional: false
- - name: libdeflate
- version: "1.19"
+ - name: appnope
+ version: 0.1.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.19-hd590300_0.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 1635570038840ee3f9c71d22aa5b8b6d
- sha256: 985ad27aa0ba7aad82afa88a8ede6a1aacb0aaca950d710f15d85360451e72fd
+ md5: 54ac328d703bff191256ffa1183126d1
+ sha256: b209a68ac55eb9ecad7042f0d4eedef5da924699f6cdf54ac1826869cfdae742
category: main
optional: false
- - name: libev
- version: "4.33"
+ - name: arelle-release
+ version: 2.17.7
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2
+ certifi: ""
+ isodate: 0.*
+ lxml: 4.*
+ numpy: 1.*
+ openpyxl: 3.*
+ pyparsing: 3.*
+ python: ">=3.8"
+ python-dateutil: 2.*
+ regex: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.7-pyhd8ed1ab_0.conda
hash:
- md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3
- sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9
+ md5: b42bbf2e318b6bbbd9de2d81ecf8ed50
+ sha256: 3094446e601ad9160677c2bb5b75b9946c81b679bebf42bf52c126e71d76fb43
category: main
optional: false
- - name: libexpat
- version: 2.5.0
+ - name: arelle-release
+ version: 2.17.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda
+ certifi: ""
+ regex: ""
+ python: ">=3.8"
+ numpy: 1.*
+ python-dateutil: 2.*
+ isodate: 0.*
+ lxml: 4.*
+ openpyxl: 3.*
+ pyparsing: 3.*
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.7-pyhd8ed1ab_0.conda
hash:
- md5: 6305a3dd2752c76335295da4e581f2fd
- sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3
+ md5: b42bbf2e318b6bbbd9de2d81ecf8ed50
+ sha256: 3094446e601ad9160677c2bb5b75b9946c81b679bebf42bf52c126e71d76fb43
category: main
optional: false
- - name: libffi
- version: 3.4.2
+ - name: arelle-release
+ version: 2.17.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=9.4.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
+ certifi: ""
+ regex: ""
+ python: ">=3.8"
+ numpy: 1.*
+ python-dateutil: 2.*
+ isodate: 0.*
+ lxml: 4.*
+ openpyxl: 3.*
+ pyparsing: 3.*
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.7-pyhd8ed1ab_0.conda
hash:
- md5: d645c6d2ac96843a2bfaccd2d62b3ac3
- sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e
+ md5: b42bbf2e318b6bbbd9de2d81ecf8ed50
+ sha256: 3094446e601ad9160677c2bb5b75b9946c81b679bebf42bf52c126e71d76fb43
category: main
optional: false
- - name: libgfortran5
- version: 13.2.0
+ - name: argon2-cffi
+ version: 23.1.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=13.2.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda
+ argon2-cffi-bindings: ""
+ python: ">=3.7"
+ typing-extensions: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda
hash:
- md5: c714d905cdfa0e70200f68b80cc04764
- sha256: 0084a1d29a4f8ee3b8edad80eb6c42e5f0480f054f28cf713fb314bebb347a50
+ md5: 3afef1f55a1366b4d3b6a0d92e2235e4
+ sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677
category: main
optional: false
- - name: libiconv
- version: "1.17"
+ - name: argon2-cffi
+ version: 23.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=10.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2
+ typing-extensions: ""
+ argon2-cffi-bindings: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda
hash:
- md5: b62b52da46c39ee2bc3c162ac7f1804d
- sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7
+ md5: 3afef1f55a1366b4d3b6a0d92e2235e4
+ sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677
category: main
optional: false
- - name: libjpeg-turbo
- version: 3.0.0
+ - name: argon2-cffi
+ version: 23.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
+ typing-extensions: ""
+ argon2-cffi-bindings: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda
hash:
- md5: ea25936bb4080d843790b586850f82b8
- sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f
+ md5: 3afef1f55a1366b4d3b6a0d92e2235e4
+ sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677
category: main
optional: false
- - name: libnsl
- version: 2.0.1
+ - name: argon2-cffi-bindings
+ version: 21.2.0
manager: conda
platform: linux-64
dependencies:
+ cffi: ">=1.0.1"
libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h459d7ec_4.conda
hash:
- md5: 30fd6e37fe21f86f4bd26d6ee73eeec7
- sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6
+ md5: de5b16869a430949b02161b04b844a30
+ sha256: 104194af519b4e667aa5341068b94b521a791aaaa05ec0091f8f0bdba43a60ac
category: main
optional: false
- - name: libnuma
- version: 2.0.16
+ - name: argon2-cffi-bindings
+ version: 21.2.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda
+ cffi: ">=1.0.1"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h2725bcf_4.conda
hash:
- md5: 28bfe2cb11357ccc5be21101a6b7ce86
- sha256: 814a50cba215548ec3ebfb53033ffb9b3b070b2966570ff44910b8d9ba1c359d
+ md5: e2aba0ad0f533ee73f9d4330d2e32549
+ sha256: be27659496bcb660fc9c3f5f74128a7bb090336897e9c7cfbcc55ae66f13b8d8
category: main
optional: false
- - name: libsodium
- version: 1.0.18
+ - name: argon2-cffi-bindings
+ version: 21.2.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2
+ cffi: ">=1.0.1"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311heffc1b2_4.conda
hash:
- md5: c3788462a6fbddafdb413a9f9053e58d
- sha256: 53da0c8b79659df7b53eebdb80783503ce72fb4b10ed6e9e05cc0e9e4207a130
+ md5: e9a56c22ca1215ed3a7b6a9e8c4e6f07
+ sha256: b9ab23e4f0d615432949d4b93723bd04b3c4aef725aa03b1e993903265c1b975
category: main
optional: false
- - name: libspatialindex
- version: 1.9.3
+ - name: arrow
+ version: 1.3.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=9.3.0"
- libstdcxx-ng: ">=9.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libspatialindex-1.9.3-h9c3ff4c_4.tar.bz2
+ python: ">=3.8"
+ python-dateutil: ">=2.7.0"
+ types-python-dateutil: ">=2.8.10"
+ url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: d87fbe9c0ff589e802ff13872980bfd9
- sha256: 588fbd0c11bc44e354365d5f836183216a4ed17d680b565ff416a93b839f1a8b
+ md5: b77d8c2313158e6e461ca0efb1c2c508
+ sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db
category: main
optional: false
- - name: libtool
- version: 2.4.7
- manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda
- hash:
- md5: f204c8ba400ec475452737094fb81d52
- sha256: 345b3b580ef91557a82425ea3f432a70a8748c040deb14570b9f4dca4af3e3d1
- category: dev
- optional: true
- - name: libutf8proc
- version: 2.8.0
+ - name: arrow
+ version: 1.3.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2
+ python: ">=3.8"
+ python-dateutil: ">=2.7.0"
+ types-python-dateutil: ">=2.8.10"
+ url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: ede4266dc02e875fe1ea77b25dd43747
- sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c
+ md5: b77d8c2313158e6e461ca0efb1c2c508
+ sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db
category: main
optional: false
- - name: libuuid
- version: 2.38.1
+ - name: arrow
+ version: 1.3.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
+ python: ">=3.8"
+ python-dateutil: ">=2.7.0"
+ types-python-dateutil: ">=2.8.10"
+ url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 40b61aab5c7ba9ff276c41cfffe6b80b
- sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18
+ md5: b77d8c2313158e6e461ca0efb1c2c508
+ sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db
category: main
optional: false
- - name: libuv
- version: 1.46.0
+ - name: asgi-csrf
+ version: "0.9"
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda
+ itsdangerous: ""
+ python: ">=3.6"
+ python-multipart: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/asgi-csrf-0.9-pyhd8ed1ab_0.tar.bz2
hash:
- md5: d23c76f7e6dcd6243d1b6ef5e62d17d2
- sha256: 4bc4c946e9a532c066442714eeeeb1ffbd03cd89789c4047293f5e782b5fedd7
+ md5: eae21b40ce9beded0ce0e5c67180b1e7
+ sha256: 9e8d86083dac575490045e570147ff44879aa8412dafa04cff3e539f77eb263f
category: main
optional: false
- - name: libwebp-base
- version: 1.3.2
+ - name: asgi-csrf
+ version: "0.9"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.2-hd590300_0.conda
+ itsdangerous: ""
+ python-multipart: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/asgi-csrf-0.9-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 30de3fd9b3b602f7473f30e684eeea8c
- sha256: 68764a760fa81ef35dacb067fe8ace452bbb41476536a4a147a1051df29525f0
+ md5: eae21b40ce9beded0ce0e5c67180b1e7
+ sha256: 9e8d86083dac575490045e570147ff44879aa8412dafa04cff3e539f77eb263f
category: main
optional: false
- - name: libzlib
- version: 1.2.13
+ - name: asgi-csrf
+ version: "0.9"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda
- hash:
- md5: f36c115f1ee199da648e0597ec2047ad
- sha256: 370c7c5893b737596fd6ca0d9190c9715d89d888b8c88537ae1ef168c25e82e4
- category: main
- optional: false
- - name: lz4-c
- version: 1.9.4
- manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda
+ itsdangerous: ""
+ python-multipart: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/asgi-csrf-0.9-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 318b08df404f9c9be5712aaa5a6f0bb0
- sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f
+ md5: eae21b40ce9beded0ce0e5c67180b1e7
+ sha256: 9e8d86083dac575490045e570147ff44879aa8412dafa04cff3e539f77eb263f
category: main
optional: false
- - name: lzo
- version: "2.10"
+ - name: asgiref
+ version: 3.7.2
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2
+ python: ">=3.7"
+ typing_extensions: ">=4"
+ url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda
hash:
- md5: bb14fcb13341b81d5eb386423b9d2bac
- sha256: 25d16e6aaa3d0b450e61d0c4fadd7c9fd17f16e2fef09b34507209342d63c9f6
+ md5: 596932155bf88bb6837141550cb721b0
+ sha256: 63f85717fd38912a69be5a03d35a648c404cb86843cd4a1302c380c0e7744e30
category: main
optional: false
- - name: ncurses
- version: "6.4"
+ - name: asgiref
+ version: 3.7.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda
+ python: ">=3.7"
+ typing_extensions: ">=4"
+ url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda
hash:
- md5: 7dbaa197d7ba6032caf7ae7f32c1efa0
- sha256: 91cc03f14caf96243cead96c76fe91ab5925a695d892e83285461fb927dece5e
+ md5: 596932155bf88bb6837141550cb721b0
+ sha256: 63f85717fd38912a69be5a03d35a648c404cb86843cd4a1302c380c0e7744e30
category: main
optional: false
- - name: nspr
- version: "4.35"
+ - name: asgiref
+ version: 3.7.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
+ python: ">=3.7"
+ typing_extensions: ">=4"
+ url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda
hash:
- md5: da0ec11a6454ae19bff5b02ed881a2b1
- sha256: 8fadeebb2b7369a4f3b2c039a980d419f65c7b18267ba0c62588f9f894396d0c
+ md5: 596932155bf88bb6837141550cb721b0
+ sha256: 63f85717fd38912a69be5a03d35a648c404cb86843cd4a1302c380c0e7744e30
category: main
optional: false
- - name: openssl
- version: 3.1.4
+ - name: astroid
+ version: 3.0.1
manager: conda
platform: linux-64
dependencies:
- ca-certificates: ""
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.1-py311h38be061_0.conda
hash:
- md5: 412ba6938c3e2abaca8b1129ea82e238
- sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7
+ md5: 1cfd7512ea9cf20a14568c6991da262f
+ sha256: 5aa75c004f51dab842c28f1003e4bf5d6d725867e25474a722aa9fe331649301
category: main
optional: false
- - name: pixman
- version: 0.42.2
+ - name: astroid
+ version: 3.0.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.42.2-h59595ed_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/astroid-3.0.1-py311h6eed73b_0.conda
hash:
- md5: 700edd63ccd5fc66b70b1c028cea9a68
- sha256: ae917851474eb3b08812b02c9e945d040808523ec53f828aa74a90b0cdf15f57
+ md5: 39aff7722673b4083e5b0d9aa7e33681
+ sha256: 9b3233dda23466616bdab742c890062ec757e985f9314c93b5244d5c624b3c1f
category: main
optional: false
- - name: pthread-stubs
- version: "0.4"
+ - name: astroid
+ version: 3.0.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-3.0.1-py311h267d04e_0.conda
hash:
- md5: 22dad4df6e8630e8dff2428f6f6a7036
- sha256: 67c84822f87b641d89df09758da498b2d4558d47b920fd1d3fe6d3a871e000ff
+ md5: 1f1ed24d8d83b882f223403c119a1e44
+ sha256: 97c2611101771a148a8c0b4fff48e93e2e969a2f5998f21d6aa034ca339fc209
category: main
optional: false
- - name: rdma-core
- version: "28.9"
+ - name: asttokens
+ version: 2.4.1
manager: conda
platform: linux-64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda
+ python: ">=3.5"
+ six: ">=1.12.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: aeffb7c06b5f65e55e6c637408dc4100
- sha256: 832f9393ab3144ce6468c6f150db9d398fad4451e96a8879afb3059f0c9902f6
+ md5: 5f25798dcefd8252ce5f9dc494d5f571
+ sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111
category: main
optional: false
- - name: snappy
- version: 1.1.10
+ - name: asttokens
+ version: 2.4.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda
+ python: ">=3.5"
+ six: ">=1.12.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: e6d228cd0bb74a51dd18f5bfce0b4115
- sha256: 02219f2382b4fe39250627dade087a4412d811936a5a445636b7260477164eac
+ md5: 5f25798dcefd8252ce5f9dc494d5f571
+ sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111
category: main
optional: false
- - name: tzcode
- version: 2023c
+ - name: asttokens
+ version: 2.4.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/tzcode-2023c-h0b41bf4_0.conda
+ python: ">=3.5"
+ six: ">=1.12.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 0c0533894f21c3d35697cb8378d390e2
- sha256: 62b0d3eee4260d310f578015305834b8a588377f796e5e290ec267da8a51a027
+ md5: 5f25798dcefd8252ce5f9dc494d5f571
+ sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111
category: main
optional: false
- - name: uriparser
- version: 0.9.7
+ - name: async-lru
+ version: 2.0.4
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.7-hcb278e6_1.conda
+ python: ">=3.8"
+ typing_extensions: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
hash:
- md5: 2c46deb08ba9b10e90d0a6401ad65deb
- sha256: bc7670384fc3e519b376eab25b2c747afe392b243f17e881075231f4a0f2e5a0
+ md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
+ sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
category: main
optional: false
- - name: xorg-kbproto
- version: 1.0.7
+ - name: async-lru
+ version: 2.0.4
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=9.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2
+ python: ">=3.8"
+ typing_extensions: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
hash:
- md5: 4b230e8381279d76131116660f5a241a
- sha256: e90b0a6a5d41776f11add74aa030f789faf4efd3875c31964d6f9cfa63a10dd1
+ md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
+ sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
category: main
optional: false
- - name: xorg-libice
- version: 1.1.1
+ - name: async-lru
+ version: 2.0.4
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda
+ python: ">=3.8"
+ typing_extensions: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
hash:
- md5: b462a33c0be1421532f28bfe8f4a7514
- sha256: 5aa9b3682285bb2bf1a8adc064cb63aff76ef9178769740d855abb42b0d24236
+ md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
+ sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
category: main
optional: false
- - name: xorg-libxau
- version: 1.0.11
+ - name: async-timeout
+ version: 4.0.3
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda
+ python: ">=3.7"
+ typing-extensions: ">=3.6.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda
hash:
- md5: 2c80dc38fface310c9bd81b17037fee5
- sha256: 309751371d525ce50af7c87811b435c176915239fc9e132b99a25d5e1703f2d4
+ md5: 3ce482ec3066e6d809dbbb1d1679f215
+ sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979
category: main
optional: false
- - name: xorg-libxdmcp
- version: 1.1.3
+ - name: async-timeout
+ version: 4.0.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=9.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2
+ python: ">=3.7"
+ typing-extensions: ">=3.6.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda
hash:
- md5: be93aabceefa2fac576e971aef407908
- sha256: 4df7c5ee11b8686d3453e7f3f4aa20ceef441262b49860733066c52cfd0e4a77
+ md5: 3ce482ec3066e6d809dbbb1d1679f215
+ sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979
category: main
optional: false
- - name: xorg-renderproto
- version: 0.11.1
+ - name: async-timeout
+ version: 4.0.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=9.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2
+ python: ">=3.7"
+ typing-extensions: ">=3.6.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda
hash:
- md5: 06feff3d2634e3097ce2fe681474b534
- sha256: 38942930f233d1898594dd9edf4b0c0786f3dbc12065a0c308634c37fd936034
+ md5: 3ce482ec3066e6d809dbbb1d1679f215
+ sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979
category: main
optional: false
- - name: xorg-xextproto
- version: 7.3.0
+ - name: atk-1.0
+ version: 2.38.0
manager: conda
platform: linux-64
dependencies:
libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda
+ libglib: ">=2.74.1,<3.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2
hash:
- md5: bce9f945da8ad2ae9b1d7165a64d0f87
- sha256: b8dda3b560e8a7830fe23be1c58cc41f407b2e20ae2f3b6901eb5842ba62b743
- category: main
- optional: false
- - name: xorg-xproto
- version: 7.0.31
+ md5: 6c72ec3e660a51736913ef6ea68c454b
+ sha256: 2f9314de13c1f0b54510a2afa0cdc02c0e3f828fccfc4277734f9590b11a65f1
+ category: dev
+ optional: true
+ - name: atk-1.0
+ version: 2.38.0
+ manager: conda
+ platform: osx-64
+ dependencies:
+ libcxx: ">=14.0.4"
+ libglib: ">=2.74.1,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h1d18e73_1.tar.bz2
+ hash:
+ md5: 5a538295f97a484ee332aacc131718b5
+ sha256: 7af1f86cfc85b1e57547e2a81c069095545ff6a52f3f8e15184df954dce446dd
+ category: dev
+ optional: true
+ - name: atk-1.0
+ version: 2.38.0
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ libcxx: ">=14.0.4"
+ libglib: ">=2.74.1,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hcb7b3dd_1.tar.bz2
+ hash:
+ md5: 3c98bfeed7717a9cf5af18c295f49f3a
+ sha256: d40f103467fd2fa426072691919fd135a4fed4a2b03cd12256ff0fee37a98249
+ category: dev
+ optional: true
+ - name: attrs
+ version: 23.1.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=9.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda
hash:
- md5: b4a4381d54784606820704f7b5f05a15
- sha256: f197bb742a17c78234c24605ad1fe2d88b1d25f332b75d73e5ba8cf8fbc2a10d
+ md5: 3edfead7cedd1ab4400a6c588f3e75f8
+ sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821
category: main
optional: false
- - name: xz
- version: 5.2.6
+ - name: attrs
+ version: 23.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda
hash:
- md5: 2161070d867d1b1204ea749c8eec4ef0
- sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162
+ md5: 3edfead7cedd1ab4400a6c588f3e75f8
+ sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821
category: main
optional: false
- - name: yaml
- version: 0.2.5
+ - name: attrs
+ version: 23.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=9.4.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda
hash:
- md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae
- sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535
+ md5: 3edfead7cedd1ab4400a6c588f3e75f8
+ sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821
category: main
optional: false
- - name: aws-c-cal
- version: 0.6.9
+ - name: aws-c-auth
+ version: 0.7.7
manager: conda
platform: linux-64
dependencies:
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
libgcc-ng: ">=12"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h3b91eb8_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.7-h4faf3ed_1.conda
hash:
- md5: ab28ae62aa4738f7ca0622554aadc31b
- sha256: 8bca41960971a2f6eea0d61a30e6d8b1bf80f520b5959aba92b87d1385d3d0cd
+ md5: e2a9f779fafe385cd516c079e7c9a36b
+ sha256: 2647adb3ef4373e545308791020d6fbbeff4b57a3a1bb9f82dfc89ddf56e458e
category: main
optional: false
- - name: aws-c-compression
- version: 0.2.17
+ - name: aws-c-auth
+ version: 0.7.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
aws-c-common: ">=0.9.8,<0.9.9.0a0"
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-hfd9eb17_6.conda
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.7-h9ac2572_1.conda
hash:
- md5: aee687dcfcc2a75d77b6e6024273978a
- sha256: d67e50aff37474eee393346d71c9e4bbb6d190f86722ac932b2837acfea33f76
+ md5: 13bc5ae79dc4dfae77409ada1d0aefc2
+ sha256: db053837a53b8200777e0cb105a35b4bfe8751aa238f5774374e5aeb2abcbc15
category: main
optional: false
- - name: aws-c-sdkutils
- version: 0.1.12
+ - name: aws-c-auth
+ version: 0.7.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
aws-c-common: ">=0.9.8,<0.9.9.0a0"
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-hfd9eb17_5.conda
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.7-h886c30d_1.conda
hash:
- md5: af2bccdb4cf6e9254969426fd53c7c65
- sha256: d109677012abbf7e062d2a64c0df55523b056e74e5895650841b49f7f94a48a1
+ md5: a56e378f5985f3ffb8ba520dc5b22812
+ sha256: 774fe58283e5c5edad6009adea7b12c3f20b501f121a88b5b57b47bfe0b61eaa
category: main
optional: false
- - name: aws-checksums
- version: 0.1.17
+ - name: aws-c-cal
+ version: 0.6.9
manager: conda
platform: linux-64
dependencies:
aws-c-common: ">=0.9.8,<0.9.9.0a0"
libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-hfd9eb17_5.conda
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h3b91eb8_1.conda
hash:
- md5: 92077b8c5f72e9b81f069b1eb492ab80
- sha256: fa197cea5d34038066ac743ffa3ae688c057152fff55226ec740c5f68a136282
+ md5: ab28ae62aa4738f7ca0622554aadc31b
+ sha256: 8bca41960971a2f6eea0d61a30e6d8b1bf80f520b5959aba92b87d1385d3d0cd
category: main
optional: false
- - name: expat
- version: 2.5.0
+ - name: aws-c-cal
+ version: 0.6.9
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libexpat: 2.5.0
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.6.9-h49e9720_1.conda
hash:
- md5: 8b9b5aca60558d02ddaa09d599e55920
- sha256: 36dfeb4375059b3bba75ce9b38c29c69fd257342a79e6cf20e9f25c1523f785f
+ md5: a1fc363f4bcbc029a096df632e1b06ab
+ sha256: 4f7f92067ecf18696a40fedacdc189ffa045020ebd0948ad094624d7c5a8e5a2
category: main
optional: false
- - name: glog
- version: 0.6.0
+ - name: aws-c-cal
+ version: 0.6.9
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- gflags: ">=2.2.2,<2.3.0a0"
- libgcc-ng: ">=10.3.0"
- libstdcxx-ng: ">=10.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.6.9-hea61927_1.conda
hash:
- md5: b31f3565cb84435407594e548a2fb7b2
- sha256: 888cbcfb67f6e3d88a4c4ab9d26c9a406f620c4101a35dc6d2dbadb95f2221d4
+ md5: 844a59d5740f086963219373174de1d3
+ sha256: ebd4b794986b745fb9a9931162e7ca6a4a759625203d995749e5dfc0e23d0e6e
category: main
optional: false
- - name: hdf4
- version: 4.2.15
+ - name: aws-c-common
+ version: 0.9.8
manager: conda
platform: linux-64
dependencies:
libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.8-hd590300_0.conda
hash:
- md5: bd77f8da987968ec3927990495dc22e4
- sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684
+ md5: 1fd5f2ae093f2dbf28dc4f18fca57309
+ sha256: 09075cb426a0b903b7ca86e4f399eb0be02b6d24e403792a5f378064fcb7a08b
category: main
optional: false
- - name: libbrotlidec
- version: 1.1.0
+ - name: aws-c-common
+ version: 0.9.8
manager: conda
- platform: linux-64
- dependencies:
- libbrotlicommon: 1.1.0
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.8-h10d778d_0.conda
hash:
- md5: f07002e225d7a60a694d42a7bf5ff53f
- sha256: 86fc861246fbe5ad85c1b6b3882aaffc89590a48b42d794d3d5c8e6d99e5f926
+ md5: 1835ae87bcb96111220344774a930f02
+ sha256: 4aac7a22b208c13707297d8e08c62569186f4dcc2ed3cd01ffa79af4576e3dcc
category: main
optional: false
- - name: libbrotlienc
- version: 1.1.0
+ - name: aws-c-common
+ version: 0.9.8
manager: conda
- platform: linux-64
- dependencies:
- libbrotlicommon: 1.1.0
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.8-h93a5062_0.conda
hash:
- md5: 5fc11c6020d421960607d821310fcd4d
- sha256: f751b8b1c4754a2a8dfdc3b4040fa7818f35bbf6b10e905a47d3a194b746b071
+ md5: cde0cd0c85e62c192da64c49130a7ccd
+ sha256: 811730643b941f7b3419fdba4824aaac745944e4bcc462c5737ba4025213158e
category: main
optional: false
- - name: libedit
- version: 3.1.20191231
+ - name: aws-c-compression
+ version: 0.2.17
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=7.5.0"
- ncurses: ">=6.2,<7.0.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-hfd9eb17_6.conda
hash:
- md5: 4d331e44109e3f0e19b4cb8f9b82f3e1
- sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf
+ md5: aee687dcfcc2a75d77b6e6024273978a
+ sha256: d67e50aff37474eee393346d71c9e4bbb6d190f86722ac932b2837acfea33f76
category: main
optional: false
- - name: libevent
- version: 2.1.12
+ - name: aws-c-compression
+ version: 0.2.17
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- openssl: ">=3.1.1,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.17-hff1f2c8_6.conda
hash:
- md5: a1cfcc585f0c42bf8d5546bb1dfb668d
- sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131
+ md5: d44348239e6be8e1a418cfeda24bc1b5
+ sha256: b82eae800be7a26fb0a8d39c009c39f3b8f474d05dcb636b7b8e225ca7c7da2b
category: main
optional: false
- - name: libgfortran-ng
- version: 13.2.0
+ - name: aws-c-compression
+ version: 0.2.17
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgfortran5: 13.2.0
- url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.17-hea61927_6.conda
hash:
- md5: 73031c79546ad06f1fe62e57fdd021bc
- sha256: 5b918950b84605b6865de438757f507b1eff73c96fd562f7022c80028b088c14
+ md5: 61e64f2091370b64430faf5fe021bc54
+ sha256: 01f5d5397def8f38263cc8bf3a31d2063602238073847a2941fd7f28f01da617
category: main
optional: false
- - name: libkml
- version: 1.3.0
+ - name: aws-c-event-stream
+ version: 0.3.2
manager: conda
platform: linux-64
dependencies:
- libboost-headers: ""
- libexpat: ">=2.5.0,<3.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- uriparser: ">=0.9.7,<1.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-h1fff966_7.conda
hash:
- md5: 3eb5f16bcc8a02892199aa63555c731f
- sha256: f67fc0be886c7eac14dbce858bfcffbc90a55b598e897e513f0979dd2caad750
+ md5: 7badad50132f03325f1060dc0a006465
+ sha256: abade13c6c6b480bc68ba11d2616f81951207ce44115ac10d237c38251641380
category: main
optional: false
- - name: libllvm14
- version: 14.0.6
+ - name: aws-c-event-stream
+ version: 0.3.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda
+ __osx: ">=10.9"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.3.2-hdb93a3d_7.conda
hash:
- md5: 73301c133ded2bf71906aa2104edae8b
- sha256: 225cc7c3b20ac1db1bdb37fa18c95bf8aecef4388e984ab2f7540a9f4382106a
+ md5: 6de559e0ff99adddb1d3cf10db90a962
+ sha256: ec3853211eb105792c1fd11d3faf05524385e0f8a5406106a0b814004f6d0c9c
category: main
optional: false
- - name: libnghttp2
- version: 1.58.0
+ - name: aws-c-event-stream
+ version: 0.3.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- c-ares: ">=1.21.0,<2.0a0"
- libev: ">=4.33,<4.34.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda
+ __osx: ">=10.9"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.3.2-h0574dc0_7.conda
hash:
- md5: 9b13d5ee90fc9f09d54fd403247342b4
- sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca
+ md5: 71cce6a95826d5c236426aedc420e319
+ sha256: 608d1c17f5f25d599c0dbeac0cb0307313e7ca2185923a058020141a87e90830
category: main
optional: false
- - name: libpng
- version: 1.6.39
+ - name: aws-c-http
+ version: 0.7.14
manager: conda
platform: linux-64
dependencies:
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-compression: ">=0.2.17,<0.2.18.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-hc86c171_2.conda
hash:
- md5: e1c890aebdebbfbf87e2c917187b4416
- sha256: a32b36d34e4f2490b99bddbc77d01a674d304f667f0e62c89e02c961addef462
+ md5: e092fb5c53b2915be20b19e8e31b016e
+ sha256: e29a5b81731995634338ced49d241c77f820df37977ab932a637351efc94adba
category: main
optional: false
- - name: libprotobuf
- version: 4.24.4
+ - name: aws-c-http
+ version: 0.7.14
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libabseil: ">=20230802.1,<20230803.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.4-hf27288f_0.conda
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-compression: ">=0.2.17,<0.2.18.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.7.14-h99202ee_2.conda
hash:
- md5: 1a0287ab734591ad63603734f923016b
- sha256: 3e0f6454190abb27edd2aeb724688ee440de133edb02cbb17d5609ba36aa8be0
+ md5: 6a6022df19b186a1a7bd2ae1f492b970
+ sha256: 767acf28c16250cddbf1296235fbb2c734801edb1dcf8028f29ee61a0c16e0f2
category: main
optional: false
- - name: libre2-11
- version: 2023.06.02
+ - name: aws-c-http
+ version: 0.7.14
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libabseil: ">=20230802.1,<20230803.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.06.02-h7a70373_0.conda
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-compression: ">=0.2.17,<0.2.18.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.7.14-h90b1786_2.conda
hash:
- md5: c0e7eacd9694db3ef5ef2979a7deea70
- sha256: 22b0b2169c80b65665ba0d6418bd5d3d4c7d89915ee0f9613403efe871c27db8
+ md5: 8e22f41347204f15e31a11fb3fce58ab
+ sha256: 48110db20fabbacdb0538b3bb8f337c7d3b071926e38a03a1ddfeba910585546
category: main
optional: false
- - name: librttopo
- version: 1.1.0
+ - name: aws-c-io
+ version: 0.13.36
manager: conda
platform: linux-64
dependencies:
- geos: ">=3.12.0,<3.12.1.0a0"
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hb58d41b_14.conda
+ s2n: ">=1.3.56,<1.3.57.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-hc23c90e_0.conda
hash:
- md5: 264f9a3a4ea52c8f4d3e8ae1213a3335
- sha256: a87307e9c8fb446eb7a1698d9ab40e590ba7e55de669b59f5751c48c2b320827
+ md5: 57259ec9cdbba3e4897e950dd976c93d
+ sha256: b3fe3214b11f3cf3c631bef0be09f88610103c0262225a368914ce149533900d
category: main
optional: false
- - name: libsqlite
- version: 3.44.0
+ - name: aws-c-io
+ version: 0.13.36
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.13.36-hb98174f_0.conda
hash:
- md5: b58e6816d137f3aabf77d341dd5d732b
- sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259
+ md5: b779e70ed59ed23b690078bc48dd04cc
+ sha256: c8f877545536e42cea07d9391b784bf8371f98c0d14ce442eb8117545f8786dd
category: main
optional: false
- - name: libssh2
- version: 1.11.0
+ - name: aws-c-io
+ version: 0.13.36
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.1,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.13.36-he1b4ce3_0.conda
hash:
- md5: 1f5a58e686b13bcfde88b93f547d23fe
- sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d
+ md5: 6ff00256be6044e08949dc196eba8b9f
+ sha256: ef17666387fda6f0548e2eee3148448be61abb750c8373e4ea2ee538631ae56b
category: main
optional: false
- - name: libxcb
- version: "1.15"
+ - name: aws-c-mqtt
+ version: 0.9.10
manager: conda
platform: linux-64
dependencies:
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
libgcc-ng: ">=12"
- pthread-stubs: ""
- xorg-libxau: ""
- xorg-libxdmcp: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.10-hba57965_1.conda
hash:
- md5: 33277193f5b92bad9fdd230eb700929c
- sha256: a670902f0a3173a466c058d2ac22ca1dd0df0453d3a80e0212815c20a16b0485
+ md5: c458f86f2d52f04a588c0ce72c8b2bce
+ sha256: 803ddbb520a706f8b43283f37640e1b37b132b399ceef76abb8f4b309933400e
category: main
optional: false
- - name: libxml2
- version: 2.11.6
+ - name: aws-c-mqtt
+ version: 0.9.10
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- icu: ">=73.2,<74.0a0"
- libgcc-ng: ">=12"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.6-h232c23b_0.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.9.10-h10c2427_1.conda
hash:
- md5: 427a3e59d66cb5d145020bd9c6493334
- sha256: e6183d5e57ee48cc1fc4340477c31a6bd8be4d3ba5dded82cbca0d5280591086
+ md5: 0b22cae21bcc32328334df31449b32bd
+ sha256: 352429e7e04231d42e4f564ed44783e0f256dea66bcc87bce8f38758bdaf1396
category: main
optional: false
- - name: libzip
- version: 1.10.1
+ - name: aws-c-mqtt
+ version: 0.9.10
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.9.10-h8d54690_1.conda
hash:
- md5: ac79812548e7e8cf61f7b0abdef01d3b
- sha256: 84e93f189072dcfcbe77744f19c7e4171523fbecfaba7352e5a23bbe014574c7
+ md5: 2018a0af6c631609293f59116208cc83
+ sha256: 3ffb0ba52d6c6551e089ecfcdb88f6ed07c6ca7b6c1a4ac5e248c14513b3da18
category: main
optional: false
- - name: pcre2
- version: "10.42"
+ - name: aws-c-s3
+ version: 0.4.1
manager: conda
platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
+ aws-c-auth: ">=0.7.7,<0.7.8.0a0"
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.1-hfadff92_0.conda
hash:
- md5: 679c8961826aa4b50653bce17ee52abe
- sha256: 3ca54ff0abcda964af7d4724d389ae20d931159ae1881cfe57ad4b0ab9e6a380
+ md5: 51a03f7432cc620590f050911bd6878a
+ sha256: 71832dc68eccdb70b06fc195a4f71304893f844131d8d165b308ad34eb79dfe1
category: main
optional: false
- - name: readline
- version: "8.2"
+ - name: aws-c-s3
+ version: 0.4.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- ncurses: ">=6.3,<7.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda
+ aws-c-auth: ">=0.7.7,<0.7.8.0a0"
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.4.1-h70a162a_0.conda
hash:
- md5: 47d31b792659ce70f470b5c82fdfb7a4
- sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7
+ md5: f1822ce4505d1320aa5791f12918cfd7
+ sha256: e0e9c8fb02978db14c977d0b691933f07ac6c84d420815d3748ad56e23a7020b
category: main
optional: false
- - name: s2n
- version: 1.3.56
+ - name: aws-c-s3
+ version: 0.4.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.56-h06160fa_0.conda
+ aws-c-auth: ">=0.7.7,<0.7.8.0a0"
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.4.1-ha5b923c_0.conda
hash:
- md5: 04b4845b9e9b5a0ee6eba013ecdbbddb
- sha256: 4c00411d49fefc6a53167c3120e386b3f35510544a44d2e647615b510a622f29
+ md5: 9f680b51062ffdabbf35931798da378b
+ sha256: 8449735c9f2e406a041f5b7918aee6b41a16fb8d1d4f277f30312e6442f34ddd
category: main
optional: false
- - name: tk
- version: 8.6.13
+ - name: aws-c-sdkutils
+ version: 0.1.12
manager: conda
platform: linux-64
dependencies:
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-hfd9eb17_5.conda
hash:
- md5: d453b98d9c83e71da0741bb0ff4d76bc
- sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e
+ md5: af2bccdb4cf6e9254969426fd53c7c65
+ sha256: d109677012abbf7e062d2a64c0df55523b056e74e5895650841b49f7f94a48a1
category: main
optional: false
- - name: ucx
- version: 1.15.0
+ - name: aws-c-sdkutils
+ version: 0.1.12
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libnuma: ">=2.0.16,<3.0a0"
- libstdcxx-ng: ">=12"
- rdma-core: ">=28.9,<29.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h64cca9d_0.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.12-hff1f2c8_5.conda
hash:
- md5: b35b1f1a9fdbf93266c91f297dc9060e
- sha256: 8a4dce10304fee0df715addec3d078421aa7aa0824422a6630d621d15bd98e5f
+ md5: 12164ac8e33917c5d6aeb25ab82c2771
+ sha256: 6953db4c9d56a367f921efaac18cf310985bc57ebd7ed50757c916912a99eeed
category: main
optional: false
- - name: xorg-libsm
- version: 1.2.4
+ - name: aws-c-sdkutils
+ version: 0.1.12
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libuuid: ">=2.38.1,<3.0a0"
- xorg-libice: ">=1.1.1,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.12-hea61927_5.conda
hash:
- md5: 93ee23f12bc2e684548181256edd2cf6
- sha256: 089ad5f0453c604e18985480218a84b27009e9e6de9a0fa5f4a20b8778ede1f1
+ md5: 905d930730d618d5632011cb68d6744d
+ sha256: a1c60064bf93b4ddbc223bf494acb3e295b0846eb887017d435816e1bcfc51e5
category: main
optional: false
- - name: zeromq
- version: 4.3.5
+ - name: aws-checksums
+ version: 0.1.17
manager: conda
platform: linux-64
dependencies:
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
libgcc-ng: ">=12"
- libsodium: ">=1.0.18,<1.0.19.0a0"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-hfd9eb17_5.conda
hash:
- md5: 8851084c192dbc56215ac4e3c9aa30fa
- sha256: 53bf2a18224406e9806adb3b270a2c8a028aca0c89bd40114a85d6446f5c98d1
+ md5: 92077b8c5f72e9b81f069b1eb492ab80
+ sha256: fa197cea5d34038066ac743ffa3ae688c057152fff55226ec740c5f68a136282
category: main
optional: false
- - name: zlib
- version: 1.2.13
+ - name: aws-checksums
+ version: 0.1.17
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libzlib: 1.2.13
- url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.17-hff1f2c8_5.conda
hash:
- md5: 68c34ec6149623be41a1933ab996a209
- sha256: 9887a04d7e7cb14bd2b52fa01858f05a6d7f002c890f618d9fcd864adbfecb1b
+ md5: 8b47ddfddaf30b4de34ea9d660c919c7
+ sha256: 8ebb4ac6617f87405b6966a23dc4a37bdc96d4627f990e72abf1dff136179579
category: main
optional: false
- - name: zstd
- version: 1.5.5
+ - name: aws-checksums
+ version: 0.1.17
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.17-hea61927_5.conda
hash:
- md5: 04b88013080254850d6c01ed54810589
- sha256: 607cbeb1a533be98ba96cf5cdf0ddbb101c78019f1fda063261871dad6248609
+ md5: 4fcd94ba7456d0d162d3d84e5ef4db54
+ sha256: 72af0036cdb7492826fafe1513cc5f0aa0280ad5d5af4a9ebbca50b81920cbe6
category: main
optional: false
- - name: aws-c-io
- version: 0.13.35
+ - name: aws-crt-cpp
+ version: 0.24.7
manager: conda
platform: linux-64
dependencies:
+ aws-c-auth: ">=0.7.7,<0.7.8.0a0"
aws-c-cal: ">=0.6.9,<0.6.10.0a0"
aws-c-common: ">=0.9.8,<0.9.9.0a0"
- libgcc-ng: ">=12"
- s2n: ">=1.3.56,<1.3.57.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hc23c90e_8.conda
- hash:
- md5: 4cabe68190c1ff4c72154c0a7d2e980c
- sha256: 89103265c27cb5ad67a0f6b67149532e7addae4b6ddfb704e77f0369f5520591
- category: main
- optional: false
- - name: blosc
- version: 1.21.5
- manager: conda
- platform: linux-64
- dependencies:
+ aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-c-mqtt: ">=0.9.10,<0.9.11.0a0"
+ aws-c-s3: ">=0.4.1,<0.4.2.0a0"
+ aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.24.7-h97e63c7_6.conda
hash:
- md5: 009521b7ed97cca25f8f997f9e745976
- sha256: e2b15b017775d1bda8edbb1bc48e545e45364edefa4d926732fc5488cc600731
+ md5: f31cf00e404ba450c317d3a5ca9820b6
+ sha256: 13897adb73768128bf5110a97bc9a1a9aa3dfdd86460edd9d2af644ed89bd774
category: main
optional: false
- - name: brotli-bin
- version: 1.1.0
+ - name: aws-crt-cpp
+ version: 0.24.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libbrotlidec: 1.1.0
- libbrotlienc: 1.1.0
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda
+ __osx: ">=10.9"
+ aws-c-auth: ">=0.7.7,<0.7.8.0a0"
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-c-mqtt: ">=0.9.10,<0.9.11.0a0"
+ aws-c-s3: ">=0.4.1,<0.4.2.0a0"
+ aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.24.7-hf3941dc_6.conda
hash:
- md5: 39f910d205726805a958da408ca194ba
- sha256: a641abfbaec54f454c8434061fffa7fdaa9c695e8a5a400ed96b4f07c0c00677
+ md5: f2245f36cf4e3aef604a66238350cc20
+ sha256: 63668d23eed62f4fd4c5e6acceb6cafb10e129ad9dd2ae1415c82e52dc9a8894
category: main
optional: false
- - name: freetype
- version: 2.12.1
+ - name: aws-crt-cpp
+ version: 0.24.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libpng: ">=1.6.39,<1.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
+ __osx: ">=10.9"
+ aws-c-auth: ">=0.7.7,<0.7.8.0a0"
+ aws-c-cal: ">=0.6.9,<0.6.10.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
+ aws-c-http: ">=0.7.14,<0.7.15.0a0"
+ aws-c-io: ">=0.13.36,<0.13.37.0a0"
+ aws-c-mqtt: ">=0.9.10,<0.9.11.0a0"
+ aws-c-s3: ">=0.4.1,<0.4.2.0a0"
+ aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.24.7-hba4ac3b_6.conda
hash:
- md5: 9ae35c3d96db2c94ce0cef86efdfa2cb
- sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6
+ md5: d9ca6aeb5fff3e81b0cf21e76db467c6
+ sha256: 6c5f14346ec0078f013973d2b703390e001fd1e11c8d2c08fce8d5b049c22246
category: main
optional: false
- - name: krb5
- version: 1.21.2
+ - name: aws-sdk-cpp
+ version: 1.11.182
manager: conda
platform: linux-64
dependencies:
- keyutils: ">=1.6.1,<2.0a0"
- libedit: ">=3.1.20191231,<4.0a0"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.182-h8beafcf_7.conda
hash:
- md5: cd95826dbd331ed1be26bdf401432844
- sha256: 259bfaae731989b252b7d2228c1330ef91b641c9d68ff87dae02cbae682cb3e4
+ md5: fe27868256b2d2a57d8136e08cdff2bb
+ sha256: c71ca50ad5e4c806d76b3584a53b295db317ffa92bd8f28eacc2bf88a3877eee
category: main
optional: false
- - name: libarchive
- version: 3.7.2
+ - name: aws-sdk-cpp
+ version: 1.11.182
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libgcc-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
+ __osx: ">=10.9"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- lzo: ">=2.10,<3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h039dbb9_0.conda
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.182-h28d282b_7.conda
hash:
- md5: 611d6c83d1130ea60c916531adfb11db
- sha256: b82b9f4a1515877ea65416bf7fd9cc77cae77d7b5977eada2b999ee525a0d5c9
+ md5: 131091ac3ecfe9c409088e1b3861f064
+ sha256: 57029820f9e2af9f735ea2afcd8eeeeb3bac74e52e1ba6ec5666276b8e6e67f8
category: main
optional: false
- - name: libglib
- version: 2.78.1
+ - name: aws-sdk-cpp
+ version: 1.11.182
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- gettext: ">=0.21.1,<1.0a0"
- libffi: ">=3.4,<4.0a0"
- libgcc-ng: ">=12"
- libiconv: ">=1.17,<2.0a0"
- libstdcxx-ng: ">=12"
+ __osx: ">=10.9"
+ aws-c-common: ">=0.9.8,<0.9.9.0a0"
+ aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
+ aws-checksums: ">=0.1.17,<0.1.18.0a0"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
libzlib: ">=1.2.13,<1.3.0a0"
- pcre2: ">=10.42,<10.43.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.182-h31542fa_7.conda
hash:
- md5: 70052d6c1e84643e30ffefb21ab6950f
- sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b
+ md5: 6c837825a2350f590d307494e7a582ce
+ sha256: 8dd2f9b127c464a87de5e820b2edcb9fe8230a2ca5b8a051d86073f5359ec29e
category: main
optional: false
- - name: libllvm15
- version: 15.0.7
+ - name: babel
+ version: 2.13.1
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libxml2: ">=2.11.4,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- zstd: ">=1.5.2,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-h5cf9203_3.conda
+ python: ">=3.7"
+ pytz: ""
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 9efe82d44b76a7529a1d702e5a37752e
- sha256: bb94e7535a309c2a8d58585cb82bac954ed59f473eef2cac6ea677d6f576a3b6
+ md5: 3ccff479c246692468f604df9c85ef26
+ sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
category: main
optional: false
- - name: libopenblas
- version: 0.3.24
+ - name: babel
+ version: 2.13.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libgfortran-ng: ""
- libgfortran5: ">=12.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda
+ setuptools: ""
+ pytz: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 6e4ef6ca28655124dcde9bd500e44c32
- sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662
+ md5: 3ccff479c246692468f604df9c85ef26
+ sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
category: main
optional: false
- - name: libthrift
- version: 0.19.0
+ - name: babel
+ version: 2.13.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libevent: ">=2.1.12,<2.1.13.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda
+ setuptools: ""
+ pytz: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 8cdb7d41faa0260875ba92414c487e2d
- sha256: 719add2cf20d144ef9962c57cd0f77178259bdb3aae1cded2e2b2b7c646092f5
+ md5: 3ccff479c246692468f604df9c85ef26
+ sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
category: main
optional: false
- - name: libtiff
- version: 4.6.0
+ - name: backoff
+ version: 2.2.1
manager: conda
platform: linux-64
dependencies:
- lerc: ">=4.0.0,<5.0a0"
- libdeflate: ">=1.19,<1.20.0a0"
- libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libstdcxx-ng: ">=12"
- libwebp-base: ">=1.3.2,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-ha9c0a0a_2.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 55ed21669b2015f77c180feb1dd41930
- sha256: 45158f5fbee7ee3e257e6b9f51b9f1c919ed5518a94a9973fe7fa4764330473e
- category: main
- optional: false
- - name: libxslt
- version: 1.1.37
+ md5: 4600709bd85664d8606ae0c76642f8db
+ sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de
+ category: dev
+ optional: true
+ - name: backoff
+ version: 2.2.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libxml2: ">=2.11.3,<2.12.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.37-h0054252_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f27960e8873abb5476e96ef33bdbdccd
- sha256: 98739c3a7e1f6a8fb05e0bf54784fec4dfa2a640e4680ad0efc5cb65f5581cc8
- category: main
- optional: false
- - name: minizip
- version: 4.0.3
+ md5: 4600709bd85664d8606ae0c76642f8db
+ sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de
+ category: dev
+ optional: true
+ - name: backoff
+ version: 2.2.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libgcc-ng: ">=12"
- libiconv: ">=1.17,<2.0a0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.3-h0ab5242_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3f9b5f4400be3cee11b426a8cd653b7c
- sha256: cf33c24fa8375d17fad4e1da631b4c2e8ed9a109480fa45c82fbfa2a7c5bdd41
- category: main
- optional: false
- - name: nodejs
- version: 20.8.1
+ md5: 4600709bd85664d8606ae0c76642f8db
+ sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de
+ category: dev
+ optional: true
+ - name: backports.zoneinfo
+ version: 0.2.1
manager: conda
platform: linux-64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- icu: ">=73.2,<74.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libuv: ">=1.46.0,<1.47.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.8.1-h1990674_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/backports.zoneinfo-0.2.1-py311h38be061_8.conda
hash:
- md5: 05b928e13df9548a47568d581fdfa8a1
- sha256: a5491430566384933bd330571147f490bc4c5a01e312157a0d426fdeaf37b44f
+ md5: 5384590f14dfe6ccd02811236afc9f8e
+ sha256: 1708c5e6729567f30ccde7761492cb43ee72fa2f7d5065b9102785278718505b
category: main
optional: false
- - name: nss
- version: "3.94"
+ - name: backports.zoneinfo
+ version: 0.2.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- libgcc-ng: ">=12"
- libsqlite: ">=3.43.0,<4.0a0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- nspr: ">=4.35,<5.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/nss-3.94-h1d7d5a4_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/backports.zoneinfo-0.2.1-py311h6eed73b_8.conda
hash:
- md5: 7caef74bbfa730e014b20f0852068509
- sha256: c9b7910fc554c6550905b9150f4c8230e973ca63f41b42f2c18a49e8aa458e78
+ md5: 82f37234dbc0254423c109e9e21ce332
+ sha256: f6064fc69833fed6d02738d29132bc87a6195098ec74257f53044de306694ff3
category: main
optional: false
- - name: orc
- version: 1.9.0
+ - name: backports.zoneinfo
+ version: 0.2.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h4b38347_4.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zoneinfo-0.2.1-py311h267d04e_8.conda
hash:
- md5: f348d6a6bb3687dfead7c595f905732b
- sha256: af3587f3b9a892be828d159b78379bdcd03b933c9fefddfcf105541421b77d48
+ md5: acbef984789bc78fc49cca2e736b8006
+ sha256: a1cdbc446ff4db99e9e39b73b1611932dc9c5111ecd90dd131fa6fdf62de904d
category: main
optional: false
- - name: pandoc
- version: 3.1.3
+ - name: beautifulsoup4
+ version: 4.12.2
manager: conda
platform: linux-64
dependencies:
- gmp: ""
- libzlib: ">=1.2.13,<1.3.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda
+ python: ">=3.6"
+ soupsieve: ">=1.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda
hash:
- md5: 8287aeb8462e2d4b235eff788e75919d
- sha256: 52d23e2fded05e7a19d9d7996f19ed837b46578b6e5951b8c5990cf919404ffc
+ md5: a362ff7d976217f8fa78c0f1c4f59717
+ sha256: 52d3e6bcd442537e22699cd227d8fdcfd54b708eeb8ee5b4c671a6a9b9cd74da
category: main
optional: false
- - name: python
- version: 3.11.6
+ - name: beautifulsoup4
+ version: 4.12.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- ld_impl_linux-64: ">=2.36.1"
- libexpat: ">=2.5.0,<3.0a0"
- libffi: ">=3.4,<4.0a0"
- libgcc-ng: ">=12"
- libnsl: ">=2.0.0,<2.1.0a0"
- libsqlite: ">=3.43.0,<4.0a0"
- libuuid: ">=2.38.1,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- ncurses: ">=6.4,<7.0a0"
- openssl: ">=3.1.3,<4.0a0"
- readline: ">=8.2,<9.0a0"
- tk: ">=8.6.13,<8.7.0a0"
- tzdata: ""
- xz: ">=5.2.6,<6.0a0"
- pip: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.6-hab00c5b_0_cpython.conda
+ python: ">=3.6"
+ soupsieve: ">=1.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda
hash:
- md5: b0dfbe2fcbfdb097d321bfd50ecddab1
- sha256: 84f13bd70cff5dcdaee19263b2d4291d5793856a718efc1b63a9cfa9eb6e2ca1
+ md5: a362ff7d976217f8fa78c0f1c4f59717
+ sha256: 52d3e6bcd442537e22699cd227d8fdcfd54b708eeb8ee5b4c671a6a9b9cd74da
category: main
optional: false
- - name: re2
- version: 2023.06.02
+ - name: beautifulsoup4
+ version: 4.12.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libre2-11: 2023.06.02
- url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.06.02-h2873b5e_0.conda
+ python: ">=3.6"
+ soupsieve: ">=1.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda
hash:
- md5: bb2d5e593ef13fe4aff0bc9440f945ae
- sha256: 3e0bfb04b6d43312d711c5b49dbc3c7660b2e6e681ed504b1b322794462a1bcd
+ md5: a362ff7d976217f8fa78c0f1c4f59717
+ sha256: 52d3e6bcd442537e22699cd227d8fdcfd54b708eeb8ee5b4c671a6a9b9cd74da
category: main
optional: false
- - name: sqlite
- version: 3.44.0
+ - name: bleach
+ version: 6.1.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libsqlite: 3.44.0
- libzlib: ">=1.2.13,<1.3.0a0"
- ncurses: ">=6.4,<7.0a0"
- readline: ">=8.2,<9.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.0-h2c6b66d_0.conda
+ packaging: ""
+ python: ">=3.6"
+ setuptools: ""
+ six: ">=1.9.0"
+ webencodings: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda
hash:
- md5: df56c636df4a98990462d66ac7be2330
- sha256: ae7031a471868c7057cc16eded7bb58fa3723d9c1650c9d3eb8de1ff65d89dbb
+ md5: 0ed9d7c0e9afa7c025807a9a8136ea3e
+ sha256: 845e77ef495376c5c3c328ccfd746ca0ef1978150cae8eae61a300fe7755fb08
category: main
optional: false
- - name: xorg-libx11
- version: 1.8.7
+ - name: bleach
+ version: 6.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libxcb: ">=1.15,<1.16.0a0"
- xorg-kbproto: ""
- xorg-xextproto: ">=7.3.0,<8.0a0"
- xorg-xproto: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda
+ setuptools: ""
+ packaging: ""
+ webencodings: ""
+ python: ">=3.6"
+ six: ">=1.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 49e482d882669206653b095f5206c05b
- sha256: 7a02a7beac472ae2759498550b5fc5261bf5be7a9a2b4648a3f67818a7bfefcf
+ md5: 0ed9d7c0e9afa7c025807a9a8136ea3e
+ sha256: 845e77ef495376c5c3c328ccfd746ca0ef1978150cae8eae61a300fe7755fb08
category: main
optional: false
- - name: aiofiles
- version: 23.2.1
+ - name: bleach
+ version: 6.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda
+ setuptools: ""
+ packaging: ""
+ webencodings: ""
+ python: ">=3.6"
+ six: ">=1.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda
hash:
- md5: a2ee5b45771a700cf442a2edb151594e
- sha256: 98c9b4480dba1ae72c9a187cee7164ed1704f03c82576940311b5c3b55118ee5
+ md5: 0ed9d7c0e9afa7c025807a9a8136ea3e
+ sha256: 845e77ef495376c5c3c328ccfd746ca0ef1978150cae8eae61a300fe7755fb08
category: main
optional: false
- - name: alabaster
- version: 0.7.13
+ - name: blinker
+ version: 1.7.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda
hash:
- md5: 06006184e203b61d3525f90de394471e
- sha256: b2d160a050996950434c6e87a174fc01c4a937cbeffbdd20d1b46126b4478a95
+ md5: 550da20b2c2e38be9cc44bb819fda5d5
+ sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177
category: main
optional: false
- - name: anyascii
- version: 0.3.2
+ - name: blinker
+ version: 1.7.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/anyascii-0.3.2-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda
hash:
- md5: 70b6fc71d80ea6176f5302ebbeb13d8a
- sha256: 8ad0591c262e63f3a66fe093886a4b5d00d3ad6223560fc2a88da441c672fddc
+ md5: 550da20b2c2e38be9cc44bb819fda5d5
+ sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177
category: main
optional: false
- - name: appdirs
- version: 1.4.4
+ - name: blinker
+ version: 1.7.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda
hash:
- md5: 5f095bc6454094e96f146491fd03633b
- sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111
+ md5: 550da20b2c2e38be9cc44bb819fda5d5
+ sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177
category: main
optional: false
- - name: astroid
- version: 3.0.1
+ - name: blosc
+ version: 1.21.5
manager: conda
platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.1-py311h38be061_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda
hash:
- md5: 1cfd7512ea9cf20a14568c6991da262f
- sha256: 5aa75c004f51dab842c28f1003e4bf5d6d725867e25474a722aa9fe331649301
+ md5: 009521b7ed97cca25f8f997f9e745976
+ sha256: e2b15b017775d1bda8edbb1bc48e545e45364edefa4d926732fc5488cc600731
category: main
optional: false
- - name: atk-1.0
- version: 2.38.0
+ - name: blosc
+ version: 1.21.5
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libglib: ">=2.74.1,<3.0a0"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2
+ libcxx: ">=15.0.7"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.5-heccf04b_0.conda
hash:
- md5: 6c72ec3e660a51736913ef6ea68c454b
- sha256: 2f9314de13c1f0b54510a2afa0cdc02c0e3f828fccfc4277734f9590b11a65f1
- category: dev
- optional: true
- - name: attrs
- version: 23.1.0
+ md5: 3003fa6dd18769db1a616982dcee5b40
+ sha256: db629047f1721d5a6e3bd41b07c1a3bacd0dee70f4063b61db2aa46f19a0b8b4
+ category: main
+ optional: false
+ - name: blosc
+ version: 1.21.5
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda
+ libcxx: ">=15.0.7"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.5-hc338f07_0.conda
hash:
- md5: 3edfead7cedd1ab4400a6c588f3e75f8
- sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821
+ md5: 93fccb1150aa377576107ecd0ad375b3
+ sha256: 81f206dd843fe0da894d0480ea9d689fe948fa4b3cad060f97b016af4ac7b3a1
category: main
optional: false
- - name: aws-c-event-stream
- version: 0.3.2
+ - name: boto3
+ version: 1.33.3
manager: conda
platform: linux-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-hae413d4_6.conda
+ botocore: ">=1.33.3,<1.34.0"
+ jmespath: ">=0.7.1,<2.0.0"
+ python: ">=3.7"
+ s3transfer: ">=0.8.0,<0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.3-pyhd8ed1ab_0.conda
hash:
- md5: b4e69f0e7f832dc901bd585f353487f0
- sha256: b7b00593f4cd835780d3a4f61f6f77181b33b8e85cc0f78d9cb48dc1d84e8443
+ md5: d642fa88c5f9de6caaea3c06018aa676
+ sha256: 0fdff135ddeb1baa41f16ffcaab8537ad757857e977172c120bd5ed18676a5f1
category: main
optional: false
- - name: aws-c-http
- version: 0.7.14
+ - name: boto3
+ version: 1.33.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-compression: ">=0.2.17,<0.2.18.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-h162056d_1.conda
+ python: ">=3.7"
+ jmespath: ">=0.7.1,<2.0.0"
+ s3transfer: ">=0.8.0,<0.9.0"
+ botocore: ">=1.33.3,<1.34.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.3-pyhd8ed1ab_0.conda
hash:
- md5: e1b49ef8ddc4faca06a63a7e25da644f
- sha256: dc4cda9ffef3b5859c5943f010e947e082315e7d84eb1f5e0b3cd58565eaf405
+ md5: d642fa88c5f9de6caaea3c06018aa676
+ sha256: 0fdff135ddeb1baa41f16ffcaab8537ad757857e977172c120bd5ed18676a5f1
category: main
optional: false
- - name: backoff
- version: 2.2.1
+ - name: boto3
+ version: 1.33.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2
+ jmespath: ">=0.7.1,<2.0.0"
+ s3transfer: ">=0.8.0,<0.9.0"
+ botocore: ">=1.33.3,<1.34.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.3-pyhd8ed1ab_0.conda
hash:
- md5: 4600709bd85664d8606ae0c76642f8db
- sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de
- category: dev
- optional: true
- - name: backports
- version: "1.0"
+ md5: d642fa88c5f9de6caaea3c06018aa676
+ sha256: 0fdff135ddeb1baa41f16ffcaab8537ad757857e977172c120bd5ed18676a5f1
+ category: main
+ optional: false
+ - name: botocore
+ version: 1.33.3
manager: conda
platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda
+ jmespath: ">=0.7.1,<2.0.0"
+ python: ">=3.7"
+ python-dateutil: ">=2.1,<3.0.0"
+ urllib3: ">=1.25.4,<1.27"
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.3-pyhd8ed1ab_0.conda
hash:
- md5: 54ca2e08b3220c148a1d8329c2678e02
- sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd
+ md5: 861cb6464f236f2d93017782d6ee93ab
+ sha256: 235d5fae34acdc61c8a52043d927fe1b2426135dda8113a27198b9f210f91c2b
category: main
optional: false
- - name: backports.zoneinfo
- version: 0.2.1
+ - name: botocore
+ version: 1.33.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/backports.zoneinfo-0.2.1-py311h38be061_8.conda
+ python: ">=3.7"
+ python-dateutil: ">=2.1,<3.0.0"
+ jmespath: ">=0.7.1,<2.0.0"
+ urllib3: ">=1.25.4,<1.27"
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.3-pyhd8ed1ab_0.conda
hash:
- md5: 5384590f14dfe6ccd02811236afc9f8e
- sha256: 1708c5e6729567f30ccde7761492cb43ee72fa2f7d5065b9102785278718505b
+ md5: 861cb6464f236f2d93017782d6ee93ab
+ sha256: 235d5fae34acdc61c8a52043d927fe1b2426135dda8113a27198b9f210f91c2b
category: main
optional: false
- - name: blinker
- version: 1.7.0
+ - name: botocore
+ version: 1.33.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ python-dateutil: ">=2.1,<3.0.0"
+ jmespath: ">=0.7.1,<2.0.0"
+ urllib3: ">=1.25.4,<1.27"
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.3-pyhd8ed1ab_0.conda
hash:
- md5: 550da20b2c2e38be9cc44bb819fda5d5
- sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177
+ md5: 861cb6464f236f2d93017782d6ee93ab
+ sha256: 235d5fae34acdc61c8a52043d927fe1b2426135dda8113a27198b9f210f91c2b
category: main
optional: false
- - name: brotli
- version: 1.1.0
+ - name: bottleneck
+ version: 1.3.7
manager: conda
platform: linux-64
dependencies:
- brotli-bin: 1.1.0
- libbrotlidec: 1.1.0
- libbrotlienc: 1.1.0
libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.3.7-py311h1f0f07a_1.conda
hash:
- md5: f27a24d46e3ea7b70a1f98e50c62508f
- sha256: f2d918d351edd06c55a6c2d84b488fe392f85ea018ff227daac07db22b408f6b
+ md5: f12c27e2cf84d2bd9f306d05f07cfc2b
+ sha256: 1968e28f8c6e96643d9a863ea6b5146ab1bb710c4e66c737c3b628b0f0ba32b2
category: main
optional: false
- - name: brotli-python
- version: 1.1.0
+ - name: bottleneck
+ version: 1.3.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.3.7-py311h4a70a88_1.conda
hash:
- md5: cce9e7c3f1c307f2a5fb08a2922d6164
- sha256: 559093679e9fdb6061b7b80ca0f9a31fe6ffc213f1dae65bc5c82e2cd1a94107
+ md5: a51cbb557788277233420f12ced6e461
+ sha256: d61205023dacfc1733c6904cf5fa261e66049f1e407958e6e71d55903f193931
category: main
optional: false
- - name: cached_property
- version: 1.5.2
+ - name: bottleneck
+ version: 1.3.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.3.7-py311hb49d859_1.conda
hash:
- md5: 576d629e47797577ab0f1b351297ef4a
- sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
+ md5: aa08818d574106d3926fcffd3f932389
+ sha256: 423e5a12a559014273b5dfe732b22e059ede475562fe2175a5e7640ce34886f1
category: main
optional: false
- - name: cachetools
- version: 5.3.2
+ - name: branca
+ version: 0.7.0
manager: conda
platform: linux-64
dependencies:
+ jinja2: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.0-pyhd8ed1ab_1.conda
hash:
- md5: 185cc1bf1d5af90020292888a3c7eb5d
- sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad
+ md5: 980ae382aec2ebb7c20e8848f4d695d7
+ sha256: 9013b381e6745a7f717b7f742d3fe366ba619f1670da0d849ae589c4e88b0dbc
category: main
optional: false
- - name: cachy
- version: 0.3.0
+ - name: branca
+ version: 0.7.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-pyhd8ed1ab_1.tar.bz2
+ jinja2: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.0-pyhd8ed1ab_1.conda
hash:
- md5: 5dfee17f24e2dfd18d7392b48c9351e2
- sha256: 9b193a4e483c4d0004bc5b88fac7a02516b6311137ab61b8db85aa9741422e35
+ md5: 980ae382aec2ebb7c20e8848f4d695d7
+ sha256: 9013b381e6745a7f717b7f742d3fe366ba619f1670da0d849ae589c4e88b0dbc
category: main
optional: false
- - name: catalystcoop.dbfread
- version: 3.0.0
+ - name: branca
+ version: 0.7.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.dbfread-3.0.0-py_0.tar.bz2
+ jinja2: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.0-pyhd8ed1ab_1.conda
hash:
- md5: 301d8b0d49e76f6bd586d2c96c2e259e
- sha256: bfba35085bcf84c3368b38ed0c5e6f03aeadf0712e866cb9e89283d6ff5292d7
+ md5: 980ae382aec2ebb7c20e8848f4d695d7
+ sha256: 9013b381e6745a7f717b7f742d3fe366ba619f1670da0d849ae589c4e88b0dbc
category: main
optional: false
- - name: cchardet
- version: 2.1.7
+ - name: brotli
+ version: 1.1.0
manager: conda
platform: linux-64
dependencies:
+ brotli-bin: 1.1.0
+ libbrotlidec: 1.1.0
+ libbrotlienc: 1.1.0
libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/cchardet-2.1.7-py311hb755f60_5.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda
hash:
- md5: 7e2bfbfc5c66756cc026984c25c9ec18
- sha256: 54ab2875189fe15abcb4811c663a969a7d188299f245be468d5be4c262d552dc
+ md5: f27a24d46e3ea7b70a1f98e50c62508f
+ sha256: f2d918d351edd06c55a6c2d84b488fe392f85ea018ff227daac07db22b408f6b
category: main
optional: false
- - name: certifi
- version: 2023.7.22
+ - name: brotli
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda
+ brotli-bin: 1.1.0
+ libbrotlidec: 1.1.0
+ libbrotlienc: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h0dc2134_1.conda
hash:
- md5: 7f3dbc9179b4dde7da98dfb151d0ad22
- sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31
+ md5: 9272dd3b19c4e8212f8542cefd5c3d67
+ sha256: 4bf66d450be5d3f9ebe029b50f818d088b1ef9666b1f19e90c85479c77bbdcde
category: main
optional: false
- - name: cfgv
- version: 3.3.1
+ - name: brotli
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ brotli-bin: 1.1.0
+ libbrotlidec: 1.1.0
+ libbrotlienc: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hb547adb_1.conda
hash:
- md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
- sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
+ md5: a33aa58d448cbc054f887e39dd1dfaea
+ sha256: 62d1587deab752fcee07adc371eb20fcadc09f72c0c85399c22b637ca858020f
category: main
optional: false
- - name: chardet
- version: 5.2.0
+ - name: brotli-bin
+ version: 1.1.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py311h38be061_1.conda
+ libbrotlidec: 1.1.0
+ libbrotlienc: 1.1.0
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda
hash:
- md5: b8cfb13de4dbe349a41800644391de6a
- sha256: 80b547150fc6d125fe034bcc3e820222faa0136463b32b82d7cbe965cc5dec77
+ md5: 39f910d205726805a958da408ca194ba
+ sha256: a641abfbaec54f454c8434061fffa7fdaa9c695e8a5a400ed96b4f07c0c00677
category: main
optional: false
- - name: charset-normalizer
- version: 3.3.2
+ - name: brotli-bin
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ libbrotlidec: 1.1.0
+ libbrotlienc: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h0dc2134_1.conda
hash:
- md5: 7f4a9e3fcff3f6356ae99244a014da6a
- sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
+ md5: ece565c215adcc47fc1db4e651ee094b
+ sha256: 7ca3cfb4c5df314ed481301335387ab2b2ee651e2c74fbb15bacc795c664a5f1
category: main
optional: false
- - name: click
- version: 8.1.7
+ - name: brotli-bin
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ libbrotlidec: 1.1.0
+ libbrotlienc: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda
hash:
- md5: f3ad426304898027fc619827ff428eca
- sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
+ md5: 990d04f8c017b1b77103f9a7730a5f12
+ sha256: 8fbfc2834606292016f2faffac67deea4c5cdbc21a61169f0b355e1600105a24
category: main
optional: false
- - name: cloudpickle
- version: 3.0.0
+ - name: brotli-python
+ version: 1.1.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda
hash:
- md5: 753d29fe41bb881e4b9c004f0abf973f
- sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754
+ md5: cce9e7c3f1c307f2a5fb08a2922d6164
+ sha256: 559093679e9fdb6061b7b80ca0f9a31fe6ffc213f1dae65bc5c82e2cd1a94107
category: main
optional: false
- - name: colorama
- version: 0.4.6
+ - name: brotli-python
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hdf8f085_1.conda
hash:
- md5: 3faab06a954c2a04039983f2c4a50d99
- sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
+ md5: 546fdccabb90492fbaf2da4ffb78f352
+ sha256: 0f5e0a7de58006f349220365e32db521a1fe494c37ee455e5ecf05b8fe567dcc
category: main
optional: false
- - name: crashtest
- version: 0.4.1
+ - name: brotli-python
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/crashtest-0.4.1-pyhd8ed1ab_0.tar.bz2
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311ha891d26_1.conda
hash:
- md5: 709a2295dd907bb34afb57d54320642f
- sha256: 2f05954a3faf0700c14c1deddc085385160ee32abe111699c78d9cb277e915cc
+ md5: 5e802b015e33447d1283d599d21f052b
+ sha256: 2d78c79ccf2c17236c52ef217a4c34b762eb7908a6903d94439f787aac1c8f4b
category: main
optional: false
- - name: cycler
- version: 0.12.1
+ - name: bzip2
+ version: 1.0.8
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda
hash:
- md5: 5cd86562580f274031ede6aa6aa24441
- sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8
+ md5: 69b8b6202a07720f448be700e300ccf4
+ sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8
category: main
optional: false
- - name: dagster-pipes
- version: 1.5.9
+ - name: bzip2
+ version: 1.0.8
manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h10d778d_5.conda
hash:
- md5: 0a9787859365c4d2425e589ac53c462b
- sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
+ md5: 6097a6ca9ada32699b5fc4312dd6ef18
+ sha256: 61fb2b488928a54d9472113e1280b468a309561caa54f33825a3593da390b242
category: main
optional: false
- - name: dataclasses
- version: "0.8"
+ - name: bzip2
+ version: 1.0.8
manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h93a5062_5.conda
hash:
- md5: a362b2124b06aad102e2ee4581acee7d
- sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92
+ md5: 1bbc659ca658bfd49a481b5ef7a0f40f
+ sha256: bfa84296a638bea78a8bb29abc493ee95f2a0218775642474a840411b950fe5f
category: main
optional: false
- - name: dbus
- version: 1.13.6
+ - name: c-ares
+ version: 1.22.1
manager: conda
platform: linux-64
dependencies:
- expat: ">=2.4.2,<3.0a0"
- libgcc-ng: ">=9.4.0"
- libglib: ">=2.70.2,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.22.1-hd590300_0.conda
hash:
- md5: ecfff944ba3960ecb334b9a2663d708d
- sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5
+ md5: 8430bd266c7b2cfbda403f7585d5ee86
+ sha256: d41cf87938ba66de538b91afed3ece9b4cf5ed082a7d1c1add46b70f482f34b9
category: main
optional: false
- - name: debugpy
- version: 1.8.0
+ - name: c-ares
+ version: 1.22.1
manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py311hb755f60_1.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.22.1-h10d778d_0.conda
hash:
- md5: 2c241533b8eafe8028442d46ef41eb13
- sha256: f18492ebfaea54bbbeaec0ae207851f711ff589f60f2cc9b8a689f88b2442171
+ md5: 7040d0624b78a81c8d52f22b662d7c35
+ sha256: e52123d4d1e880ad883da1fa6301fa318e87cf42b6228833177d41053f7288b4
category: main
optional: false
- - name: decorator
- version: 5.1.1
+ - name: c-ares
+ version: 1.22.1
manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.22.1-h93a5062_0.conda
hash:
- md5: 43afe5ab04e35e17ba28649471dd7364
- sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2
+ md5: f9d38cc3908c066e50b184cdcab12929
+ sha256: 75f0222f76c9848ef9c3892300d057cb8285f28341d2f149d1fc10373242969c
category: main
optional: false
- - name: defusedxml
- version: 0.7.1
+ - name: ca-certificates
+ version: 2023.11.17
manager: conda
platform: linux-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda
hash:
- md5: 961b3a227b437d82ad7054484cfa71b2
- sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
+ md5: 01ffc8d36f9eba0ce0b3c1955fa780ee
+ sha256: fb4b9f4b7d885002db0b93e22f44b5b03791ef3d4efdc9d0662185a0faafd6b6
category: main
optional: false
- - name: distlib
- version: 0.3.7
+ - name: ca-certificates
+ version: 2023.11.17
manager: conda
- platform: linux-64
- dependencies:
- python: 2.7|>=3.6
- url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2023.11.17-h8857fd0_0.conda
hash:
- md5: 12d8aae6994f342618443a8f05c652a0
- sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
+ md5: c687e9d14c49e3d3946d50a413cdbf16
+ sha256: 7e05d80a97beb7cb7492fae38584a68d51f338a5eddf73a14b5bd266597db90e
category: main
optional: false
- - name: docstring_parser
- version: "0.15"
+ - name: ca-certificates
+ version: 2023.11.17
manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2023.11.17-hf0a4a13_0.conda
hash:
- md5: 031fcb28b8e80c1f7bec22ccdf4904b2
- sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706
+ md5: c01da7c77cfcba2107174e25c1d47384
+ sha256: 75f4762a55f7e9453a603c967d549bfa0a7a9669d502d103cb6fbf8c86d993c6
category: main
optional: false
- - name: docutils
- version: 0.20.1
+ - name: cachecontrol
+ version: 0.13.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_2.conda
+ msgpack-python: ">=0.5.2"
+ python: ">=3.7"
+ requests: ">=2.16.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 33f8066e53679dd4be2355fec849bf01
- sha256: 4e90bbc89f9ab192cb247d8b8ebe54c33e57652f8a057f9f176d9d9dd32993b9
+ md5: 174bd699bb5aa9e2622eb4b288276ff8
+ sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60
category: main
optional: false
- - name: entrypoints
- version: "0.4"
+ - name: cachecontrol
+ version: 0.13.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ msgpack-python: ">=0.5.2"
+ requests: ">=2.16.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 3cf04868fee0a029769bd41f4b2fbf2d
- sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af
+ md5: 174bd699bb5aa9e2622eb4b288276ff8
+ sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60
category: main
optional: false
- - name: et_xmlfile
- version: 1.1.0
+ - name: cachecontrol
+ version: 0.13.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ msgpack-python: ">=0.5.2"
+ requests: ">=2.16.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda
hash:
- md5: a2f2138597905eaa72e561d8efb42cf3
- sha256: 0c7bb50e1382615a660468dc531b8b17c5b91b88a02ed131c8e3cc63db507ce2
+ md5: 174bd699bb5aa9e2622eb4b288276ff8
+ sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60
category: main
optional: false
- - name: exceptiongroup
- version: 1.1.3
+ - name: cachecontrol-with-filecache
+ version: 0.13.1
manager: conda
platform: linux-64
dependencies:
+ cachecontrol: 0.13.1
+ filelock: ">=3.8.0"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda
hash:
- md5: e6518222753f519e911e83136d2158d9
- sha256: c28f715e049fe0f09785660bcbffa175ffb438720e5bc5a60d56d4b08364b315
+ md5: 8c4781ca0893cff3a64423954ce234a1
+ sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85
category: main
optional: false
- - name: execnet
- version: 2.0.2
+ - name: cachecontrol-with-filecache
+ version: 0.13.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda
+ filelock: ">=3.8.0"
+ cachecontrol: 0.13.1
+ url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 67de0d8241e1060a479e3c37793e26f9
- sha256: 88ea68a360198af39368beecf057af6b31f0ae38071b2bdb2aa961b6ae5427c0
+ md5: 8c4781ca0893cff3a64423954ce234a1
+ sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85
category: main
optional: false
- - name: executing
- version: 2.0.1
+ - name: cachecontrol-with-filecache
+ version: 0.13.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ filelock: ">=3.8.0"
+ cachecontrol: 0.13.1
+ url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda
hash:
- md5: e16be50e378d8a4533b989035b196ab8
- sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057
+ md5: 8c4781ca0893cff3a64423954ce234a1
+ sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85
category: main
optional: false
- - name: filelock
- version: 3.13.1
+ - name: cached-property
+ version: 1.5.2
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda
+ cached_property: ">=1.5.2,<1.5.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
hash:
- md5: 0c1729b74a8152fde6a38ba0a2ab9f45
- sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b
+ md5: 9b347a7ec10940d3f7941ff6c460b551
+ sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
category: main
optional: false
- - name: fontconfig
- version: 2.14.2
+ - name: cached-property
+ version: 1.5.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- expat: ">=2.5.0,<3.0a0"
- freetype: ">=2.12.1,<3.0a0"
- libgcc-ng: ">=12"
- libuuid: ">=2.32.1,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda
+ cached_property: ">=1.5.2,<1.5.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
hash:
- md5: 0f69b688f52ff6da70bccb7ff7001d1d
- sha256: 155d534c9037347ea7439a2c6da7c24ffec8e5dd278889b4c57274a1d91e0a83
+ md5: 9b347a7ec10940d3f7941ff6c460b551
+ sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
category: main
optional: false
- - name: freexl
- version: 2.0.0
+ - name: cached-property
+ version: 1.5.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libexpat: ">=2.5.0,<3.0a0"
- libgcc-ng: ">=12"
- libiconv: ">=1.17,<2.0a0"
- minizip: ">=4.0.1,<5.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h743c826_0.conda
+ cached_property: ">=1.5.2,<1.5.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
hash:
- md5: 12e6988845706b2cfbc3bc35c9a61a95
- sha256: 9213f60ba710ecfd3632ce47e036775c9f15ce80a6682ff63cbf12d9dddd5382
+ md5: 9b347a7ec10940d3f7941ff6c460b551
+ sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
category: main
optional: false
- - name: frozenlist
- version: 1.4.0
+ - name: cached_property
+ version: 1.5.2
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py311h459d7ec_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
hash:
- md5: 23d0b2d02252b32ee14e5063ccfb41e2
- sha256: aa832b23e1cce4530fef50e87de95132ba29fb4731848b2c7d3d91f863d2b7f3
+ md5: 576d629e47797577ab0f1b351297ef4a
+ sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
category: main
optional: false
- - name: fsspec
- version: 2023.10.0
+ - name: cached_property
+ version: 1.5.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
hash:
- md5: 5b86cf1ceaaa9be2ec4627377e538db1
- sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6
+ md5: 576d629e47797577ab0f1b351297ef4a
+ sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
category: main
optional: false
- - name: gdk-pixbuf
- version: 2.42.10
- manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- libglib: ">=2.78.0,<3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h829c605_4.conda
- hash:
- md5: 252a696860674caf7a855e16f680d63a
- sha256: 884992d0665a0a5c728943d99b5fba30fd6911bb84eee622fa7ad8a4fa9f6cf7
- category: dev
- optional: true
- - name: google-cloud-sdk
- version: 455.0.0
+ - name: cached_property
+ version: 1.5.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/google-cloud-sdk-455.0.0-py311h38be061_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
hash:
- md5: 1505ce6a9284c331e05de23b56d023ff
- sha256: 17c439e5b01341a4aae55a2f1841878244d25b365cef52b39fb9bfd3e30c8315
+ md5: 576d629e47797577ab0f1b351297ef4a
+ sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
category: main
optional: false
- - name: greenlet
- version: 3.0.1
+ - name: cachetools
+ version: 5.3.2
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.1-py311hb755f60_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 7c82abd17036c6ca0f02f2a8935c5572
- sha256: 8470a1c15889f4830df38966e29e3a7aa4473681b7b5997d916428c929544d74
+ md5: 185cc1bf1d5af90020292888a3c7eb5d
+ sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad
category: main
optional: false
- - name: gts
- version: 0.7.6
- manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- libglib: ">=2.76.3,<3.0a0"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda
- hash:
- md5: 4d8df0b0db060d33c9a702ada998a8fe
- sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b
- category: dev
- optional: true
- - name: hpack
- version: 4.0.0
+ - name: cachetools
+ version: 5.3.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 914d6646c4dbb1fd3ff539830a12fd71
- sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
+ md5: 185cc1bf1d5af90020292888a3c7eb5d
+ sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad
category: main
optional: false
- - name: httptools
- version: 0.6.1
- manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py311h459d7ec_0.conda
- hash:
- md5: 97b41332ad07a69a1ebb06e26aed50c8
- sha256: 32dc1c03971727098847564d7be589d16d48df233ccee79d369bb79f4e2fee9c
- category: dev
- optional: true
- - name: humanfriendly
- version: "10.0"
+ - name: cachetools
+ version: 5.3.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 2ed1fe4b9079da97c44cfe9c2e5078fd
- sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1
+ md5: 185cc1bf1d5af90020292888a3c7eb5d
+ sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad
category: main
optional: false
- - name: hupper
- version: "1.12"
+ - name: cachy
+ version: 0.3.0
manager: conda
platform: linux-64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/hupper-1.12-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 2654ff96e839bc699e5c3780689a596b
- sha256: 0b172391000a008029f32e4a34d37d79b114d4ea3b6948d2be72a78568fdadcd
+ md5: 5dfee17f24e2dfd18d7392b48c9351e2
+ sha256: 9b193a4e483c4d0004bc5b88fac7a02516b6311137ab61b8db85aa9741422e35
category: main
optional: false
- - name: hyperframe
- version: 6.0.1
+ - name: cachy
+ version: 0.3.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 9f765cbfab6870c8435b9eefecd7a1f4
- sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
+ md5: 5dfee17f24e2dfd18d7392b48c9351e2
+ sha256: 9b193a4e483c4d0004bc5b88fac7a02516b6311137ab61b8db85aa9741422e35
category: main
optional: false
- - name: idna
- version: "3.4"
+ - name: cachy
+ version: 0.3.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: 34272b248891bddccc64479f9a7fffed
- sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09
- category: main
- optional: false
- - name: ijson
- version: 3.2.3
- manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/ijson-3.2.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 6b1e4cb33f797d6487efd3ebad39d103
- sha256: 133fb51b4c638c453ef7de37cc4d412b9a4442839a9c7ad986b9bf473234b585
+ md5: 5dfee17f24e2dfd18d7392b48c9351e2
+ sha256: 9b193a4e483c4d0004bc5b88fac7a02516b6311137ab61b8db85aa9741422e35
category: main
optional: false
- - name: imagesize
- version: 1.4.1
+ - name: cairo
+ version: 1.18.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ icu: ">=73.2,<74.0a0"
+ libgcc-ng: ">=12"
+ libglib: ">=2.78.0,<3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libstdcxx-ng: ">=12"
+ libxcb: ">=1.15,<1.16.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pixman: ">=0.42.2,<1.0a0"
+ xorg-libice: ">=1.1.1,<2.0a0"
+ xorg-libsm: ">=1.2.4,<2.0a0"
+ xorg-libx11: ">=1.8.6,<2.0a0"
+ xorg-libxext: ">=1.3.4,<2.0a0"
+ xorg-libxrender: ">=0.9.11,<0.10.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda
hash:
- md5: 7de5386c8fea29e76b303f37dde4c352
- sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460
+ md5: f907bb958910dc404647326ca80c263e
+ sha256: 142e2639a5bc0e99c44d76f4cc8dce9c6a2d87330c4beeabb128832cd871a86e
category: main
optional: false
- - name: iniconfig
- version: 2.0.0
+ - name: cairo
+ version: 1.18.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ icu: ">=73.2,<74.0a0"
+ libcxx: ">=16.0.6"
+ libglib: ">=2.78.0,<3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pixman: ">=0.42.2,<1.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h99e66fa_0.conda
hash:
- md5: f800d2da156d08e289b14e87e43c1ae5
- sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
+ md5: 13f830b1bf46018f7062d1b798d53eca
+ sha256: f8d1142cf244eadcbc44e8ca2266aa61a05b6cda5571f9b745ba32c7ebbfdfba
category: main
optional: false
- - name: itsdangerous
- version: 2.1.2
+ - name: cairo
+ version: 1.18.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ icu: ">=73.2,<74.0a0"
+ libcxx: ">=16.0.6"
+ libglib: ">=2.78.0,<3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pixman: ">=0.42.2,<1.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hd1e100b_0.conda
hash:
- md5: 3c3de74912f11d2b590184f03c7cd09b
- sha256: 31e3492686b4e92b53db9b48bc0eb03873b1caaf28629fee7d2d47627a2c56d3
+ md5: 3fa6eebabb77f65e82f86b72b95482db
+ sha256: 599f8820553b3a3405706d9cad390ac199e24515a0a82c87153c9b5b5fdba3b8
category: main
optional: false
- - name: jeepney
- version: 0.8.0
+ - name: catalystcoop.dbfread
+ version: 3.0.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.dbfread-3.0.0-py_0.tar.bz2
hash:
- md5: 9800ad1699b42612478755a2d26c722d
- sha256: 16639759b811866d63315fe1391f6fb45f5478b823972f4d3d9f0392b7dd80b8
+ md5: 301d8b0d49e76f6bd586d2c96c2e259e
+ sha256: bfba35085bcf84c3368b38ed0c5e6f03aeadf0712e866cb9e89283d6ff5292d7
category: main
optional: false
- - name: jellyfish
- version: 1.0.1
+ - name: catalystcoop.dbfread
+ version: 3.0.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/jellyfish-1.0.1-py311h46250e7_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.dbfread-3.0.0-py_0.tar.bz2
hash:
- md5: 6f38f2017654d124c2745fad7eb96968
- sha256: e457cd8d073edf0ac698d2bd87f4255e0fe086470018ec8b58b9699c686f6129
+ md5: 301d8b0d49e76f6bd586d2c96c2e259e
+ sha256: bfba35085bcf84c3368b38ed0c5e6f03aeadf0712e866cb9e89283d6ff5292d7
category: main
optional: false
- - name: jmespath
- version: 1.0.1
+ - name: catalystcoop.dbfread
+ version: 3.0.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.dbfread-3.0.0-py_0.tar.bz2
hash:
- md5: 2cfa3e1cf3fb51bb9b17acc5b5e9ea11
- sha256: 95ac5f9ee95fd4e34dc051746fc86016d3d4f6abefed113e2ede049d59ec2991
+ md5: 301d8b0d49e76f6bd586d2c96c2e259e
+ sha256: bfba35085bcf84c3368b38ed0c5e6f03aeadf0712e866cb9e89283d6ff5292d7
category: main
optional: false
- - name: json5
- version: 0.9.14
+ - name: catalystcoop.ferc_xbrl_extractor
+ version: 1.3.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
+ arelle-release: ">=2.3,<3"
+ coloredlogs: ">=14.0,<15.1"
+ frictionless: ">=4.4,<5"
+ lxml: ">=4.9.1,<5"
+ numpy: ">=1.16,<2"
+ pandas: ">=1.5,<2.2"
+ pydantic: ">=2,<3"
+ python: ">=3.10,<3.13"
+ sqlalchemy: ">=1.4,<3"
+ stringcase: ">=1.2,<2"
+ url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.ferc_xbrl_extractor-1.3.1-pyhd8ed1ab_0.conda
hash:
- md5: dac1dabba2b5a9d1aee175c5fcc7b436
- sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
+ md5: 223cdad8b8eee98aae17835e4e34103d
+ sha256: d0588a3009fd8d2fbde979f3a518f7a1383f052f01a46022c541551adc413da8
category: main
optional: false
- - name: jsonpointer
- version: "2.4"
+ - name: catalystcoop.ferc_xbrl_extractor
+ version: 1.3.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py311h38be061_3.conda
+ sqlalchemy: ">=1.4,<3"
+ lxml: ">=4.9.1,<5"
+ pydantic: ">=2,<3"
+ python: ">=3.10,<3.13"
+ coloredlogs: ">=14.0,<15.1"
+ frictionless: ">=4.4,<5"
+ numpy: ">=1.16,<2"
+ arelle-release: ">=2.3,<3"
+ pandas: ">=1.5,<2.2"
+ stringcase: ">=1.2,<2"
+ url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.ferc_xbrl_extractor-1.3.1-pyhd8ed1ab_0.conda
hash:
- md5: 41d52d822edf991bf0e6b08c1921a8ec
- sha256: 976f7bf3c3a49c3066f36b67c12ae06b31542e53b843bb4362f31c9e449c6c46
+ md5: 223cdad8b8eee98aae17835e4e34103d
+ sha256: d0588a3009fd8d2fbde979f3a518f7a1383f052f01a46022c541551adc413da8
category: main
optional: false
- - name: jupyterlab_widgets
- version: 3.0.9
+ - name: catalystcoop.ferc_xbrl_extractor
+ version: 1.3.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda
+ sqlalchemy: ">=1.4,<3"
+ lxml: ">=4.9.1,<5"
+ pydantic: ">=2,<3"
+ python: ">=3.10,<3.13"
+ coloredlogs: ">=14.0,<15.1"
+ frictionless: ">=4.4,<5"
+ numpy: ">=1.16,<2"
+ arelle-release: ">=2.3,<3"
+ pandas: ">=1.5,<2.2"
+ stringcase: ">=1.2,<2"
+ url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.ferc_xbrl_extractor-1.3.1-pyhd8ed1ab_0.conda
hash:
- md5: 8370e0a9dc443f9b45a23fd30e7a6b3b
- sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3
+ md5: 223cdad8b8eee98aae17835e4e34103d
+ sha256: d0588a3009fd8d2fbde979f3a518f7a1383f052f01a46022c541551adc413da8
category: main
optional: false
- - name: kiwisolver
- version: 1.4.5
+ - name: cchardet
+ version: 2.1.7
manager: conda
platform: linux-64
dependencies:
@@ -2607,4368 +2720,4170 @@ package:
libstdcxx-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/cchardet-2.1.7-py311hb755f60_5.conda
hash:
- md5: 2c65bdf442b0d37aad080c8a4e0d452f
- sha256: 723b0894d2d2b05a38f9c5a285d5a0a5baa27235ceab6531dbf262ba7c6955c1
+ md5: 7e2bfbfc5c66756cc026984c25c9ec18
+ sha256: 54ab2875189fe15abcb4811c663a969a7d188299f245be468d5be4c262d552dc
category: main
optional: false
- - name: lcms2
- version: "2.15"
+ - name: cchardet
+ version: 2.1.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hb7c19ff_3.conda
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/cchardet-2.1.7-py311hdf8f085_5.conda
hash:
- md5: e96637dd92c5f340215c753a5c9a22d7
- sha256: cc0b2ddab52b20698b26fe8622ebe37e0d462d8691a1f324e7b00f7d904765e3
+ md5: db8be41b81fe09437c5f1bfef4949609
+ sha256: 98784ac0cca2b0b6149d8239d5bda9ff28ba9d115cf010d9e365bcd7b2db9206
category: main
optional: false
- - name: libblas
- version: 3.9.0
+ - name: cchardet
+ version: 2.1.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libopenblas: ">=0.3.24,<1.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cchardet-2.1.7-py311ha891d26_5.conda
hash:
- md5: 420f4e9be59d0dc9133a0f43f7bab3f3
- sha256: b1311b9414559c5760b08a32e0382ca27fa302c967968aa6f78e042519f728ce
+ md5: a13c24d173619a3d04af20fb9824414c
+ sha256: 6834d37c1c301f9bd7361c294559aff01b3680d65448f638f5c53eb7b7c44c03
category: main
optional: false
- - name: libcurl
- version: 8.4.0
+ - name: certifi
+ version: 2023.11.17
manager: conda
platform: linux-64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libgcc-ng: ">=12"
- libnghttp2: ">=1.52.0,<2.0a0"
- libssh2: ">=1.11.0,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.4.0-hca28451_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda
hash:
- md5: 1158ac1d2613b28685644931f11ee807
- sha256: 25f4b6a8827d7b17a66e0bd9b5d194bf9a9e4a46fb14e2ef472fdad4b39426a6
+ md5: 2011bcf45376341dd1d690263fdbc789
+ sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96
category: main
optional: false
- - name: libgrpc
- version: 1.59.2
+ - name: certifi
+ version: 2023.11.17
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- c-ares: ">=1.20.1,<2.0a0"
- libabseil: ">=20230802.1,<20230803.0a0"
- libgcc-ng: ">=12"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- re2: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.2-hd6c4280_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda
hash:
- md5: dd26e7127a7b08068b52181f47849f04
- sha256: 4ac31c7667fb0940856afc4b8ea58d8f1cb18db3cdf41729aa7d2c7f7a5e6429
+ md5: 2011bcf45376341dd1d690263fdbc789
+ sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96
category: main
optional: false
- - name: libpq
- version: "16.1"
+ - name: certifi
+ version: 2023.11.17
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-hfc447b1_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda
hash:
- md5: 2b7f1893cf40b4ccdc0230bcd94d5ed9
- sha256: 8c92a8cce329a83cc9e94b19d18200c661957c00cfb464f26237d24730864585
+ md5: 2011bcf45376341dd1d690263fdbc789
+ sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96
category: main
optional: false
- - name: libwebp
- version: 1.3.2
- manager: conda
- platform: linux-64
- dependencies:
- giflib: ">=5.2.1,<5.3.0a0"
- libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-h658648e_1.conda
- hash:
- md5: 0ebb65e8d86843865796c7c95a941f34
- sha256: cc5e55531d8067ea379b145861aea8c749a545912bc016372f5e3c69cc925efd
- category: dev
- optional: true
- - name: llvmlite
- version: 0.41.1
+ - name: cffi
+ version: 1.16.0
manager: conda
platform: linux-64
dependencies:
+ libffi: ">=3.4,<4.0a0"
libgcc-ng: ">=12"
- libllvm14: ">=14.0.6,<14.1.0a0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
+ pycparser: ""
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.41.1-py311ha6695c7_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda
hash:
- md5: 60fa8c1f3fb0d99dd10a9af2aff9c400
- sha256: 6510aee9e700e3d000a5eb1ac39455c306572baac8ea3a708743890e16499cf1
+ md5: b3469563ac5e808b0cd92810d0697043
+ sha256: b71c94528ca0c35133da4b7ef69b51a0b55eeee570376057f3d2ad60c3ab1444
category: main
optional: false
- - name: locket
- version: 1.0.0
- manager: conda
- platform: linux-64
+ - name: cffi
+ version: 1.16.0
+ manager: conda
+ platform: osx-64
dependencies:
- python: ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
- url: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ libffi: ">=3.4,<4.0a0"
+ pycparser: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.16.0-py311hc0b63fd_0.conda
hash:
- md5: 91e27ef3d05cc772ce627e51cff111c4
- sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
+ md5: 15d07b82223cac96af629e5e747ba27a
+ sha256: 1f13a5fa7f310fdbd27f5eddceb9e62cfb10012c58a58c923dd6f51fa979748a
category: main
optional: false
- - name: lxml
- version: 4.9.3
+ - name: cffi
+ version: 1.16.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
- libxslt: ">=1.1.37,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
+ libffi: ">=3.4,<4.0a0"
+ pycparser: ""
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py311h1a07684_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.16.0-py311h4a08483_0.conda
hash:
- md5: aab51e50d994e58efdfa5382139b0468
- sha256: 9ee461843278f695c5e301b4575e7dd02f69021e85023b62b17f7dfe2cd173e4
+ md5: cbdde0484a47b40e6ce2a4e5aaeb48d7
+ sha256: 9430416328fe2a28e206e703de771817064c8613a79a6a21fe7107f6a783104c
category: main
optional: false
- - name: marko
- version: 1.3.1
+ - name: cfgv
+ version: 3.3.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/marko-1.3.1-pyhd8ed1ab_0.conda
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 9651c1c1c19dbc072c557e3e2da38329
- sha256: 42a84421edb86e09b83aaaa340921b8f2c78daa787305895e886ade6913d8690
+ md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
+ sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
category: main
optional: false
- - name: markupsafe
- version: 2.1.3
+ - name: cfgv
+ version: 3.3.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py311h459d7ec_1.conda
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 71120b5155a0c500826cf81536721a15
- sha256: e1a9930f35e39bf65bc293e24160b83ebf9f800f02749f65358e1c04882ee6b0
+ md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
+ sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
category: main
optional: false
- - name: mdurl
- version: 0.1.0
+ - name: cfgv
+ version: 3.3.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f8dab71fdc13b1bf29a01248b156d268
- sha256: c678b9194e025b1fb665bec30ee20aab93399203583875b1dcc0a3b52a8f5523
+ md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
+ sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
category: main
optional: false
- - name: mergedeep
- version: 1.3.4
+ - name: cfitsio
+ version: 4.3.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2
+ bzip2: ">=1.0.8,<2.0a0"
+ libcurl: ">=8.2.0,<9.0a0"
+ libgcc-ng: ">=12"
+ libgfortran-ng: ""
+ libgfortran5: ">=12.3.0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.3.0-hbdc6101_0.conda
hash:
- md5: 1a160a3cab5cb6bd46264b52cd6f69a2
- sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b
+ md5: 797554b8b7603011e8677884381fbcc5
+ sha256: c74938f1ade9b8f37b9fa8cc98a5b9262b325506f41d7492ad1d00146e0f1d08
category: main
optional: false
- - name: mistune
- version: 3.0.2
+ - name: cfitsio
+ version: 4.3.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libcurl: ">=8.2.0,<9.0a0"
+ libgfortran: 5.*
+ libgfortran5: ">=12.2.0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/cfitsio-4.3.0-h66f91ea_0.conda
hash:
- md5: 5cbee699846772cc939bef23a0d524ed
- sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c
+ md5: f540472ad8a8ea2b39a4c6ca14ebc1b5
+ sha256: 0246d80ce305609c7e810514d1aa578ef498a1f05fd2dba5fa46ea845e4e57b9
category: main
optional: false
- - name: more-itertools
- version: 10.1.0
+ - name: cfitsio
+ version: 4.3.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libcurl: ">=8.2.0,<9.0a0"
+ libgfortran: 5.*
+ libgfortran5: ">=12.3.0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cfitsio-4.3.0-hca87796_0.conda
hash:
- md5: 8549fafed0351bbfaa1ddaa15fdf9b4e
- sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f
+ md5: a5a1019a6405052124e97999a5204a74
+ sha256: 5d03f8d484d29f8d3bdd64afe22ed29d75c639834b40382f8a520f96a7af27c4
category: main
optional: false
- - name: msgpack-python
- version: 1.0.6
+ - name: chardet
+ version: 5.2.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.6-py311h9547e67_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py311h38be061_1.conda
hash:
- md5: e826b71bf3dc8c91ee097663e2bcface
- sha256: da765eabe27d8adec5bcce30ea1a0b9308d01640089d039f06bef2cc5ef63f46
+ md5: b8cfb13de4dbe349a41800644391de6a
+ sha256: 80b547150fc6d125fe034bcc3e820222faa0136463b32b82d7cbe965cc5dec77
category: main
optional: false
- - name: multidict
- version: 6.0.4
+ - name: chardet
+ version: 5.2.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py311h459d7ec_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/chardet-5.2.0-py311h6eed73b_1.conda
hash:
- md5: 3dc76316237c8f7e7231d61b76c62b7c
- sha256: 5bb152aab8fa22d68ce0c802a9990c406eb60a8041660071de0bd30a5cd5081c
+ md5: dd58f7f16513cea1fea710651e4df728
+ sha256: 5826e13627594bafa2f0b4074d9233b0de74227835d249641f216423b3dc8dfc
category: main
optional: false
- - name: multimethod
- version: 1.9.1
+ - name: chardet
+ version: 5.2.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/multimethod-1.9.1-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/chardet-5.2.0-py311h267d04e_1.conda
hash:
- md5: 48223af3f697ccd9b114adb6a66e0f11
- sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
+ md5: 2aa7eb0b906818f900e2075fc244976f
+ sha256: 69541a0c834baa0b404cb55f8389bb53f8e9d6962055d68285635d6fbc04334c
category: main
optional: false
- - name: munch
- version: 4.0.0
+ - name: charset-normalizer
+ version: 3.3.2
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 376b32e8f9d3eacbd625f37d39bd507d
- sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
+ md5: 7f4a9e3fcff3f6356ae99244a014da6a
+ sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
category: main
optional: false
- - name: munkres
- version: 1.1.4
+ - name: charset-normalizer
+ version: 3.3.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 2ba8498c1018c1e9c61eb99b973dfe19
- sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306
+ md5: 7f4a9e3fcff3f6356ae99244a014da6a
+ sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
category: main
optional: false
- - name: mypy_extensions
- version: 1.0.0
+ - name: charset-normalizer
+ version: 3.3.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 4eccaeba205f0aed9ac3a9ea58568ca3
- sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3
+ md5: 7f4a9e3fcff3f6356ae99244a014da6a
+ sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
category: main
optional: false
- - name: nest-asyncio
- version: 1.5.8
+ - name: click
+ version: 8.1.7
manager: conda
platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
hash:
- md5: a4f0e4519bc50eee4f53f689be9607f7
- sha256: d7b795b4e754136841c6da3f9fa1a0f7ec37bc7167e7dd68c5b45e657133e008
+ md5: f3ad426304898027fc619827ff428eca
+ sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
category: main
optional: false
- - name: networkx
- version: 3.2.1
+ - name: click
+ version: 8.1.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
hash:
- md5: 425fce3b531bed6ec3c74fab3e5f0a1c
- sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d
+ md5: f3ad426304898027fc619827ff428eca
+ sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
category: main
optional: false
- - name: openjpeg
- version: 2.5.0
+ - name: click
+ version: 8.1.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libpng: ">=1.6.39,<1.7.0a0"
- libstdcxx-ng: ">=12"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
hash:
- md5: 128c25b7fe6a25286a48f3a6a9b5b6f3
- sha256: 9fe91b67289267de68fda485975bb48f0605ac503414dc663b50d8b5f29bc82a
+ md5: f3ad426304898027fc619827ff428eca
+ sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
category: main
optional: false
- - name: packaging
- version: "23.2"
+ - name: click-default-group
+ version: 1.2.4
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda
+ click: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda
hash:
- md5: 79002079284aa895f883c6b7f3f88fd6
- sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f
+ md5: 7c2b6931f9b3548ed78478332095c3e9
+ sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0
category: main
optional: false
- - name: pandocfilters
- version: 1.5.0
+ - name: click-default-group
+ version: 1.2.4
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: "!=3.0,!=3.1,!=3.2,!=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
+ click: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda
hash:
- md5: 457c2c8c08e54905d6954e79cb5b5db9
- sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
+ md5: 7c2b6931f9b3548ed78478332095c3e9
+ sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0
category: main
optional: false
- - name: parso
- version: 0.8.3
+ - name: click-default-group
+ version: 1.2.4
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2
+ click: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda
hash:
- md5: 17a565a0c3899244e938cdf417e7b094
- sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4
+ md5: 7c2b6931f9b3548ed78478332095c3e9
+ sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0
category: main
optional: false
- - name: pastel
- version: 0.2.1
+ - name: click-default-group-wheel
+ version: 1.2.2
manager: conda
platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2
+ click: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-wheel-1.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: a4eea5bff523f26442405bc5d1f52adb
- sha256: 9153f0f38c76a09da7688a61fdbf8f3d7504e2326bef53e4ec20d994311b15bd
+ md5: 2228f2640491b5e9c03b6f6346cba887
+ sha256: 3a4d5c96f5375715aec9b8b7639c5a401a90dc1019d24288e4e9494148a640ee
category: main
optional: false
- - name: pathspec
- version: 0.11.2
+ - name: click-default-group-wheel
+ version: 1.2.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda
+ click: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-wheel-1.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: e41debb259e68490e3ab81e46b639ab6
- sha256: 7bcfa6d86359d45572ba9ccaeaedc04b0452e2654fe44b6fe378d0d37b8745e1
+ md5: 2228f2640491b5e9c03b6f6346cba887
+ sha256: 3a4d5c96f5375715aec9b8b7639c5a401a90dc1019d24288e4e9494148a640ee
category: main
optional: false
- - name: petl
- version: 1.7.14
+ - name: click-default-group-wheel
+ version: 1.2.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
+ click: ""
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.14-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-wheel-1.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 65813db01f2331768d909c0852ff5d70
- sha256: f802a980b04ea3355831be31c4b94421040ec95902e203ea08c2e3fc0a1f4286
+ md5: 2228f2640491b5e9c03b6f6346cba887
+ sha256: 3a4d5c96f5375715aec9b8b7639c5a401a90dc1019d24288e4e9494148a640ee
category: main
optional: false
- - name: pickleshare
- version: 0.7.5
+ - name: click-plugins
+ version: 1.1.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3"
- url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
+ click: ">=3.0"
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2
hash:
- md5: 415f0ebb6198cc2801c73438a9fb5761
- sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738
+ md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f
+ sha256: ddef6e559dde6673ee504b0e29dd814d36e22b6b9b1f519fa856ee268905bf92
category: main
optional: false
- - name: pkginfo
- version: 1.9.6
+ - name: click-plugins
+ version: 1.1.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
+ python: ""
+ click: ">=3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2
hash:
- md5: be1e9f1c65a1ed0f2ae9352fec99db64
- sha256: 7ea5a5af62a15376d9f4f9f3c134874d0b0710f39be719e849b7fa9ca8870502
+ md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f
+ sha256: ddef6e559dde6673ee504b0e29dd814d36e22b6b9b1f519fa856ee268905bf92
category: main
optional: false
- - name: pkgutil-resolve-name
- version: 1.3.10
+ - name: click-plugins
+ version: 1.1.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ python: ""
+ click: ">=3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2
hash:
- md5: 405678b942f2481cecdb3e010f4925d9
- sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
+ md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f
+ sha256: ddef6e559dde6673ee504b0e29dd814d36e22b6b9b1f519fa856ee268905bf92
category: main
optional: false
- - name: pluggy
- version: 1.3.0
+ - name: cligj
+ version: 0.7.2
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda
+ click: ">=4.0"
+ python: <4.0
+ url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 2390bd10bed1f3fdc7a537fb5a447d8d
- sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5
+ md5: a29b7c141d6b2de4bb67788a5f107734
+ sha256: 97bd58f0cfcff56a0bcda101e26f7d936625599325beba3e3a1fa512dd7fc174
category: main
optional: false
- - name: prettier
- version: 3.1.0
+ - name: cligj
+ version: 0.7.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- nodejs: ">=20.8.1,<21.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.1.0-h31abb78_0.conda
+ python: <4.0
+ click: ">=4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 825c43da21ded31f538a695cca2961ee
- sha256: a836d8d87734c76e04b64f66d2a72262ac09ce7e23c92b3f77d47bdc20267a21
+ md5: a29b7c141d6b2de4bb67788a5f107734
+ sha256: 97bd58f0cfcff56a0bcda101e26f7d936625599325beba3e3a1fa512dd7fc174
category: main
optional: false
- - name: prometheus_client
- version: 0.18.0
+ - name: cligj
+ version: 0.7.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.18.0-pyhd8ed1ab_1.conda
+ python: <4.0
+ click: ">=4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 46f6be657443caffcc7201d51c07aadf
- sha256: dca35462761fe9a06f348a0e6216a7a5934e3e29c33bc8e173fb344116568a95
+ md5: a29b7c141d6b2de4bb67788a5f107734
+ sha256: 97bd58f0cfcff56a0bcda101e26f7d936625599325beba3e3a1fa512dd7fc174
category: main
optional: false
- - name: psutil
- version: 5.9.5
+ - name: clikit
+ version: 0.6.2
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py311h459d7ec_1.conda
+ pastel: ">=0.2.0,<0.3.0"
+ pylev: ">=1.3,<2.0"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyhd8ed1ab_2.conda
hash:
- md5: 490d7fa8675afd1aa6f1b2332d156a45
- sha256: e92d2120fc4b98fe838b3d52d4907fae97808bdd504fb84aa33aea8c4be7bc61
+ md5: 02abb7b66b02e8b9f5a9b05454400087
+ sha256: 2d582bc15d9116ec5467b565fb87d9034c8b56f60943e8eb69407f55f1ab5a78
category: main
optional: false
- - name: ptyprocess
- version: 0.7.0
+ - name: clikit
+ version: 0.6.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
+ python: ">=3.7"
+ pylev: ">=1.3,<2.0"
+ pastel: ">=0.2.0,<0.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyhd8ed1ab_2.conda
hash:
- md5: 359eeb6536da0e687af562ed265ec263
- sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a
+ md5: 02abb7b66b02e8b9f5a9b05454400087
+ sha256: 2d582bc15d9116ec5467b565fb87d9034c8b56f60943e8eb69407f55f1ab5a78
category: main
optional: false
- - name: pure_eval
- version: 0.2.2
+ - name: clikit
+ version: 0.6.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ pylev: ">=1.3,<2.0"
+ pastel: ">=0.2.0,<0.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyhd8ed1ab_2.conda
hash:
- md5: 6784285c7e55cb7212efabc79e4c2883
- sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44
+ md5: 02abb7b66b02e8b9f5a9b05454400087
+ sha256: 2d582bc15d9116ec5467b565fb87d9034c8b56f60943e8eb69407f55f1ab5a78
category: main
optional: false
- - name: pyasn1
- version: 0.5.0
+ - name: cloudpickle
+ version: 3.0.0
manager: conda
platform: linux-64
dependencies:
- python: "!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 4b1c0db24e212190be1969b0aa490ad8
- sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82
+ md5: 753d29fe41bb881e4b9c004f0abf973f
+ sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754
category: main
optional: false
- - name: pycparser
- version: "2.21"
+ - name: cloudpickle
+ version: 3.0.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: 2.7.*|>=3.4
- url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 076becd9e05608f8dc72757d5f3a91ff
- sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc
+ md5: 753d29fe41bb881e4b9c004f0abf973f
+ sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754
category: main
optional: false
- - name: pygments
- version: 2.16.1
+ - name: cloudpickle
+ version: 3.0.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 40e5cb18165466773619e5c963f00a7b
- sha256: 3f0f0fadc6084960ec8cc00a32a03529c562ffea3b527eb73b1653183daad389
+ md5: 753d29fe41bb881e4b9c004f0abf973f
+ sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754
category: main
optional: false
- - name: pyjwt
- version: 2.8.0
+ - name: colorama
+ version: 0.4.6
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 912c0194f898fdb783021fd25f913c31
- sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232
+ md5: 3faab06a954c2a04039983f2c4a50d99
+ sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
category: main
optional: false
- - name: pylev
- version: 1.4.0
+ - name: colorama
+ version: 0.4.6
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: edf8651c4379d9d1495ad6229622d150
- sha256: 50bd91767686bfe769e50a5a1b883e238d944a6163fea43e7c0beaac54ca674f
- category: main
- optional: false
- - name: pyparsing
- version: 3.1.1
- manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 176f7d56f0cfe9008bdf1bccd7de02fb
- sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b
+ md5: 3faab06a954c2a04039983f2c4a50d99
+ sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
category: main
optional: false
- - name: pysocks
- version: 1.7.1
+ - name: colorama
+ version: 0.4.6
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2a7de29fb590ca14b5243c4c812c8025
- sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
+ md5: 3faab06a954c2a04039983f2c4a50d99
+ sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
category: main
optional: false
- - name: python-dotenv
- version: 1.0.0
+ - name: coloredlogs
+ version: "14.0"
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.0-pyhd8ed1ab_1.conda
+ humanfriendly: ">=7.1"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-14.0-pyhd8ed1ab_3.tar.bz2
hash:
- md5: 111e7f9edd31865e2659fa9aad8ec8fd
- sha256: bc5663f224ff6d8a399ec6bd8517e0c0f87a69ead438f82e5ce5c30f00077586
+ md5: 6b92f390b198cb631c95fd37097098c8
+ sha256: 703557fb1bde384b34cd8b1aa88c485e8900f83420bb69066f958f45c2008ef9
category: main
optional: false
- - name: python-fastjsonschema
- version: 2.19.0
+ - name: coloredlogs
+ version: "14.0"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ humanfriendly: ">=7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-14.0-pyhd8ed1ab_3.tar.bz2
hash:
- md5: e4dbdb3585c0266b4710467fe7b75cf4
- sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
+ md5: 6b92f390b198cb631c95fd37097098c8
+ sha256: 703557fb1bde384b34cd8b1aa88c485e8900f83420bb69066f958f45c2008ef9
category: main
optional: false
- - name: python-json-logger
- version: 2.0.7
+ - name: coloredlogs
+ version: "14.0"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda
+ humanfriendly: ">=7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-14.0-pyhd8ed1ab_3.tar.bz2
hash:
- md5: a61bf9ec79426938ff785eb69dbb1960
- sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca
+ md5: 6b92f390b198cb631c95fd37097098c8
+ sha256: 703557fb1bde384b34cd8b1aa88c485e8900f83420bb69066f958f45c2008ef9
category: main
optional: false
- - name: python-multipart
- version: 0.0.6
+ - name: comm
+ version: 0.1.4
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.6-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda
hash:
- md5: f4f642eeda814c1b65f46fbdf7e89096
- sha256: 2a9b8d02a6ec9862433cfc2741c4cbfe321e4ae3bab066f7ed84bc00effb73d7
+ md5: c8eaca39e2b6abae1fc96acc929ae939
+ sha256: 11057745946a95ee7cc4c98900a60c7362266a4cb28bc97d96cd88e3056eb701
category: main
optional: false
- - name: python-tzdata
- version: "2023.3"
+ - name: comm
+ version: 0.1.4
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda
hash:
- md5: 2590495f608a63625e165915fb4e2e34
- sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6
+ md5: c8eaca39e2b6abae1fc96acc929ae939
+ sha256: 11057745946a95ee7cc4c98900a60c7362266a4cb28bc97d96cd88e3056eb701
category: main
optional: false
- - name: pytz
- version: 2023.3.post1
+ - name: comm
+ version: 0.1.4
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda
hash:
- md5: c93346b446cd08c169d843ae5fc0da97
- sha256: 6b680e63d69aaf087cd43ca765a23838723ef59b0a328799e6363eb13f52c49e
+ md5: c8eaca39e2b6abae1fc96acc929ae939
+ sha256: 11057745946a95ee7cc4c98900a60c7362266a4cb28bc97d96cd88e3056eb701
category: main
optional: false
- - name: pytzdata
- version: "2020.1"
+ - name: conda-lock
+ version: 2.5.1
manager: conda
platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2
+ cachecontrol-with-filecache: ">=0.12.9"
+ cachy: ">=0.3.0"
+ click: ">=8.0"
+ click-default-group: ""
+ clikit: ">=0.6.2"
+ crashtest: ">=0.3.0"
+ ensureconda: ">=1.3"
+ gitpython: ">=3.1.30"
+ html5lib: ">=1.0"
+ jinja2: ""
+ keyring: ">=21.2.0"
+ packaging: ">=20.4"
+ pkginfo: ">=1.4"
+ pydantic: ">=1.10"
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ requests: ">=2.18"
+ ruamel.yaml: ""
+ tomli: ""
+ tomlkit: ">=0.7.0"
+ toolz: ">=0.12.0,<1.0.0"
+ typing_extensions: ""
+ urllib3: ">=1.26.5,<2.0"
+ virtualenv: ">=20.0.26"
+ url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-2.5.1-pyhd8ed1ab_0.conda
hash:
- md5: 7dd824593f3a861130ac17c6571546e2
- sha256: e7e628c1247b096e3af147b1c32d5ac328266fa95656e27b79f71bb410251356
+ md5: 22209054c003c84cdabcc74d5733c501
+ sha256: c6fc314161263f031eb23ac53868e0d9b0242efe669e176901effdac4bd87376
category: main
optional: false
- - name: pywin32-on-windows
- version: 0.1.0
+ - name: conda-lock
+ version: 2.5.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- __unix: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2
+ typing_extensions: ""
+ jinja2: ""
+ ruamel.yaml: ""
+ tomli: ""
+ click-default-group: ""
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ click: ">=8.0"
+ packaging: ">=20.4"
+ requests: ">=2.18"
+ ensureconda: ">=1.3"
+ gitpython: ">=3.1.30"
+ keyring: ">=21.2.0"
+ html5lib: ">=1.0"
+ pydantic: ">=1.10"
+ cachy: ">=0.3.0"
+ clikit: ">=0.6.2"
+ crashtest: ">=0.3.0"
+ pkginfo: ">=1.4"
+ tomlkit: ">=0.7.0"
+ virtualenv: ">=20.0.26"
+ toolz: ">=0.12.0,<1.0.0"
+ cachecontrol-with-filecache: ">=0.12.9"
+ urllib3: ">=1.26.5,<2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-2.5.1-pyhd8ed1ab_0.conda
hash:
- md5: 2807a0becd1d986fe1ef9b7f8135f215
- sha256: 6502696aaef571913b22a808b15c185bd8ea4aabb952685deb29e6a6765761cb
+ md5: 22209054c003c84cdabcc74d5733c501
+ sha256: c6fc314161263f031eb23ac53868e0d9b0242efe669e176901effdac4bd87376
category: main
optional: false
- - name: pyxlsb
- version: 1.0.10
+ - name: conda-lock
+ version: 2.5.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2
+ typing_extensions: ""
+ jinja2: ""
+ ruamel.yaml: ""
+ tomli: ""
+ click-default-group: ""
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ click: ">=8.0"
+ packaging: ">=20.4"
+ requests: ">=2.18"
+ ensureconda: ">=1.3"
+ gitpython: ">=3.1.30"
+ keyring: ">=21.2.0"
+ html5lib: ">=1.0"
+ pydantic: ">=1.10"
+ cachy: ">=0.3.0"
+ clikit: ">=0.6.2"
+ crashtest: ">=0.3.0"
+ pkginfo: ">=1.4"
+ tomlkit: ">=0.7.0"
+ virtualenv: ">=20.0.26"
+ toolz: ">=0.12.0,<1.0.0"
+ cachecontrol-with-filecache: ">=0.12.9"
+ urllib3: ">=1.26.5,<2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-2.5.1-pyhd8ed1ab_0.conda
hash:
- md5: 0c14e44bc93a99cdc11398311c3c0dcf
- sha256: 7e6e7064ad976ba6d38e7cf5a893c93a47025d4074b888e8db31386a914935fb
+ md5: 22209054c003c84cdabcc74d5733c501
+ sha256: c6fc314161263f031eb23ac53868e0d9b0242efe669e176901effdac4bd87376
category: main
optional: false
- - name: pyyaml
- version: 6.0.1
+ - name: contourpy
+ version: 1.2.0
manager: conda
platform: linux-64
dependencies:
libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ numpy: ">=1.20,<2"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- yaml: ">=0.2.5,<0.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py311h9547e67_0.conda
hash:
- md5: 52719a74ad130de8fb5d047dc91f247a
- sha256: 28729ef1ffa7f6f9dfd54345a47c7faac5d34296d66a2b9891fb147f4efe1348
+ md5: 40828c5b36ef52433e21f89943e09f33
+ sha256: 2c76e2a970b74eef92ef9460aa705dbdc506dd59b7382bfbedce39d9c189d7f4
category: main
optional: false
- - name: pyzmq
- version: 25.1.1
+ - name: contourpy
+ version: 1.2.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libsodium: ">=1.0.18,<1.0.19.0a0"
- libstdcxx-ng: ">=12"
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.20,<2"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- zeromq: ">=4.3.5,<4.4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.1-py311h34ded2d_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.0-py311h7bea37d_0.conda
hash:
- md5: ea365280db99687905b4d76cf6a3568c
- sha256: a5ed6592f32b0caf3883a2f863e8a6258845310d4eebeab2eaf1c5abed04d6b8
+ md5: 6711c052d956af4973a16749236a0387
+ sha256: 40bca4a644e0c0b0e6d58cef849ba02d4f218af715f7a5787d41845797f3b8a9
category: main
optional: false
- - name: regex
- version: 2023.10.3
+ - name: contourpy
+ version: 1.2.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.20,<2"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.10.3-py311h459d7ec_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.2.0-py311hd03642b_0.conda
hash:
- md5: c690bffc22c33b3a976d588937eb32bf
- sha256: 80b761ea8ed126b3d12a0466ea925db6116527675f8eb8bd0f68b260f292e9e6
+ md5: c0fa0bea0af7ecdea23bf983655fa2d0
+ sha256: 3ec341c3a33bbb7f60e9a96214e0e08c4ba9e4a553b18104194e7843abbb4ef4
category: main
optional: false
- - name: rfc3986
- version: 2.0.0
+ - name: coverage
+ version: 7.3.2
manager: conda
platform: linux-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ tomli: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.3.2-py311h459d7ec_0.conda
hash:
- md5: d337886e38f965bf97aaec382ff6db00
- sha256: dd6bfb7c4248ba7612f2e6e4a066d6804ba96dfcaeddf43475a2c846ccfcc396
+ md5: 7b3145fed7adc7c63a0e08f6f29f5480
+ sha256: 8b56edd4336e7fc6ff9b73436a3a270cf835f57cf4d0565c6e240c40f1981085
category: main
optional: false
- - name: rfc3986-validator
- version: 0.1.1
+ - name: coverage
+ version: 7.3.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ tomli: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.3.2-py311h2725bcf_0.conda
hash:
- md5: 912a71cc01012ee38e6b90ddd561e36f
- sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37
+ md5: 0ce651c68a0322a6eacef726025b938a
+ sha256: ada34f95907fe0cd98d4d12e439bd1508363738f8b0fbe88d14cb398f4235af6
category: main
optional: false
- - name: rpds-py
- version: 0.13.0
+ - name: coverage
+ version: 7.3.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.0-py311h46250e7_0.conda
+ tomli: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.3.2-py311heffc1b2_0.conda
hash:
- md5: 5e619ccf7939a4364d1b96648c90c34a
- sha256: 03651a2670fd8f99e42f8e7b4581ded905cfbf62a2923ae532db4f1dede8fbc4
+ md5: 75928ad6625a73ff93f08be98014248c
+ sha256: 88d116c4c51a106c43937b950d3fd14007800fb7b3945573a5a117533c450e6b
category: main
optional: false
- - name: rtree
- version: 1.1.0
+ - name: crashtest
+ version: 0.4.1
manager: conda
platform: linux-64
dependencies:
- libspatialindex: ">=1.9.3,<1.9.4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/rtree-1.1.0-py311h3bb2b0f_0.conda
+ python: ">=3.6,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/crashtest-0.4.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 341bbb97186f23835d2d0456d96c5aba
- sha256: 555d5b653283380ed397f4bbfa47ab7c62c2173ca06f9dadc5eb0b1bd99c95a7
+ md5: 709a2295dd907bb34afb57d54320642f
+ sha256: 2f05954a3faf0700c14c1deddc085385160ee32abe111699c78d9cb277e915cc
category: main
optional: false
- - name: ruamel.yaml.clib
- version: 0.2.7
+ - name: crashtest
+ version: 0.4.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h459d7ec_2.conda
+ python: ">=3.6,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/crashtest-0.4.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 56bc3fe5180c0b23e05c7a5708153ac7
- sha256: cfd060725d39f136618547ecb8a593d82d460725fb447849815c26418c360c35
+ md5: 709a2295dd907bb34afb57d54320642f
+ sha256: 2f05954a3faf0700c14c1deddc085385160ee32abe111699c78d9cb277e915cc
category: main
optional: false
- - name: ruff
- version: 0.1.5
+ - name: crashtest
+ version: 0.4.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.1.5-py311h7145743_0.conda
+ python: ">=3.6,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/crashtest-0.4.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: fb689551fcdea23b9edbe3aefea691b0
- sha256: 957be00fcff45d338024a7623f4016de3e59265f005e1216c5b2d178f82a1ace
+ md5: 709a2295dd907bb34afb57d54320642f
+ sha256: 2f05954a3faf0700c14c1deddc085385160ee32abe111699c78d9cb277e915cc
category: main
optional: false
- - name: send2trash
- version: 1.8.2
+ - name: croniter
+ version: 2.0.1
manager: conda
platform: linux-64
dependencies:
- __linux: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda
+ python: ">=3.7"
+ python-dateutil: ""
+ pytz: ">2021.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda
hash:
- md5: ada5a17adcd10be4fc7e37e4166ba0e2
- sha256: e74d3faf51a6cc429898da0209d95b209270160f3edbf2f6d8b61a99428301cd
+ md5: f67f52c1f555785b86c3bd8e5de4c66f
+ sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34
category: main
optional: false
- - name: setuptools
- version: 68.2.2
+ - name: croniter
+ version: 2.0.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
+ python-dateutil: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda
+ pytz: ">2021.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda
hash:
- md5: fc2166155db840c634a1291a5c35a709
- sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7
+ md5: f67f52c1f555785b86c3bd8e5de4c66f
+ sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34
category: main
optional: false
- - name: shellingham
- version: 1.5.4
+ - name: croniter
+ version: 2.0.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
+ python-dateutil: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ pytz: ">2021.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda
hash:
- md5: d08db09a552699ee9e7eec56b4eb3899
- sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
+ md5: f67f52c1f555785b86c3bd8e5de4c66f
+ sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34
category: main
optional: false
- - name: simpleeval
- version: 0.9.13
+ - name: cryptography
+ version: 41.0.5
manager: conda
platform: linux-64
dependencies:
- python: ">=2.5,!=3.0.*,!=3.1.*,!=3.2.*"
- url: https://conda.anaconda.org/conda-forge/noarch/simpleeval-0.9.13-pyhd8ed1ab_1.conda
+ cffi: ">=1.12"
+ libgcc-ng: ">=12"
+ openssl: ">=3.1.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.5-py311h63ff55d_0.conda
hash:
- md5: b3282d9b9e4a7c42d6c570492316dcaa
- sha256: 5c9c537011327fc281c3c108020f1ad2a40284df0e1625a87825c0699d98f67f
+ md5: 22584e5c97ed8f1a6b63a0ff43dba827
+ sha256: 236ed2218fb857fecaa11fc7fee23574f683b3d03576f8f26f628b7fd2ced5fa
category: main
optional: false
- - name: six
- version: 1.16.0
+ - name: cryptography
+ version: 41.0.5
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ cffi: ">=1.12"
+ openssl: ">=3.1.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-41.0.5-py311hd51016d_0.conda
hash:
- md5: e5f25f8dbc060e9a8d912e432202afc2
- sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
+ md5: 99f1edef251a9fe4edf620b527ee70ea
+ sha256: 26ee22b99771f0d338eca6299cbe866f695c544d855d5eab82539497b0a24fc1
category: main
optional: false
- - name: smmap
- version: 5.0.0
+ - name: cryptography
+ version: 41.0.5
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ cffi: ">=1.12"
+ openssl: ">=3.1.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-41.0.5-py311h71175c2_0.conda
hash:
- md5: 62f26a3d1387acee31322208f0cfa3e0
- sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
+ md5: adc55f424334b834098d50e57efe0789
+ sha256: 00c9b389b51b6e951a1f639aa04dceca9e329e144275c79b4f6baacd3fb90345
category: main
optional: false
- - name: sniffio
- version: 1.3.0
+ - name: curl
+ version: 8.4.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2
+ krb5: ">=1.21.2,<1.22.0a0"
+ libcurl: 8.4.0
+ libgcc-ng: ">=12"
+ libssh2: ">=1.11.0,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/curl-8.4.0-hca28451_0.conda
hash:
- md5: dd6cbc539e74cb1f430efbd4575b9303
- sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78
+ md5: 2bcf7689cae931dd35d9a45626f49fce
+ sha256: 373c50b5b668cf39a71d17a42a96144d5efc1e62e7d81c1dd830e2493cefc8cc
category: main
optional: false
- - name: snowballstemmer
- version: 2.2.0
+ - name: curl
+ version: 8.4.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=2"
- url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
+ krb5: ">=1.21.2,<1.22.0a0"
+ libcurl: 8.4.0
+ libssh2: ">=1.11.0,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/curl-8.4.0-h726d00d_0.conda
hash:
- md5: 4d22a9315e78c6827f806065957d566e
- sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
+ md5: e1de44cac6e7774dd2c1e074f5d637a9
+ sha256: 32cb23c91dd4cd88d3e6c7adb38ea3d1a1e5da79c63a20ec27d3d0924fcf644c
category: main
optional: false
- - name: sortedcontainers
- version: 2.4.0
+ - name: curl
+ version: 8.4.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
+ krb5: ">=1.21.2,<1.22.0a0"
+ libcurl: 8.4.0
+ libssh2: ">=1.11.0,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.4.0-h2d989ff_0.conda
hash:
- md5: 6d6552722448103793743dabfbda532d
- sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
+ md5: ae975c2ea5334bd8a8ddecb5013a30c6
+ sha256: d0fa5d1a7a6d0e9dcf930db1e4a750991244567ea5e09a15a00c163a52113465
category: main
optional: false
- - name: soupsieve
- version: "2.5"
+ - name: cycler
+ version: 0.12.1
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
hash:
- md5: 3f144b2c34f8cb5a9abd9ed23a39c561
- sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
+ md5: 5cd86562580f274031ede6aa6aa24441
+ sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8
category: main
optional: false
- - name: sphinxcontrib-jsmath
- version: 1.0.1
+ - name: cycler
+ version: 0.12.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
hash:
- md5: da1d979339e2714c30a8e806a33ec087
- sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2
+ md5: 5cd86562580f274031ede6aa6aa24441
+ sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8
category: main
optional: false
- - name: stringcase
- version: 1.2.0
+ - name: cycler
+ version: 0.12.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-py_0.tar.bz2
- hash:
- md5: 26a9caf3173939377bac7152379daac0
- sha256: ebd515c57537799ee7829055fe9aa93d1c4695334b991fe1de9d7947f53f18f2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
+ hash:
+ md5: 5cd86562580f274031ede6aa6aa24441
+ sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8
category: main
optional: false
- - name: tabulate
- version: 0.9.0
+ - name: dagster
+ version: 1.5.9
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
+ click: ">=5.0"
+ coloredlogs: ">=6.1,<=14.0"
+ croniter: ">=0.3.34"
+ dagster-pipes: ">=1.5.9,<1.5.10.0a0"
+ docstring_parser: ""
+ grpcio: ">=1.44.0"
+ grpcio-health-checking: ">=1.44.0"
+ jinja2: ""
+ packaging: ">=20.9"
+ pendulum: <3
+ protobuf: ">=3.20.0"
+ psutil: ">=1.0"
+ pydantic: ">1.10.0,!=1.10.7"
+ python: ">=3.8"
+ python-dateutil: ""
+ python-dotenv: ""
+ pytz: ""
+ pywin32-on-windows: ""
+ pyyaml: ">=5.1"
+ requests: ""
+ setuptools: ""
+ sqlalchemy: ">=1.0"
+ tabulate: ""
+ tomli: ""
+ toposort: ">=1.0"
+ tqdm: ""
+ typing_extensions: ">=4.4.0"
+ universal_pathlib: ""
+ watchdog: ">=0.8.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 4759805cce2d914c38472f70bf4d8bcb
- sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
+ md5: d8ab27112f82687ffcd456a3b88092e5
+ sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
category: main
optional: false
- - name: text-unidecode
- version: "1.3"
+ - name: dagster
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda
+ requests: ""
+ setuptools: ""
+ tqdm: ""
+ jinja2: ""
+ python-dateutil: ""
+ pytz: ""
+ tabulate: ""
+ tomli: ""
+ python-dotenv: ""
+ pywin32-on-windows: ""
+ docstring_parser: ""
+ universal_pathlib: ""
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ watchdog: ">=0.8.3"
+ packaging: ">=20.9"
+ click: ">=5.0"
+ typing_extensions: ">=4.4.0"
+ coloredlogs: ">=6.1,<=14.0"
+ croniter: ">=0.3.34"
+ toposort: ">=1.0"
+ psutil: ">=1.0"
+ sqlalchemy: ">=1.0"
+ grpcio-health-checking: ">=1.44.0"
+ protobuf: ">=3.20.0"
+ grpcio: ">=1.44.0"
+ alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
+ pydantic: ">1.10.0,!=1.10.7"
+ pendulum: <3
+ dagster-pipes: ">=1.5.9,<1.5.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: ba8aba332d8868897ce44ad74015a7fe
- sha256: db64669a918dec8c744f80a85b9c82216b79298256c7c8bd19bdba54a02f8914
+ md5: d8ab27112f82687ffcd456a3b88092e5
+ sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
category: main
optional: false
- - name: threadpoolctl
- version: 3.2.0
+ - name: dagster
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
+ requests: ""
+ setuptools: ""
+ tqdm: ""
+ jinja2: ""
+ python-dateutil: ""
+ pytz: ""
+ tabulate: ""
+ tomli: ""
+ python-dotenv: ""
+ pywin32-on-windows: ""
+ docstring_parser: ""
+ universal_pathlib: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda
+ pyyaml: ">=5.1"
+ watchdog: ">=0.8.3"
+ packaging: ">=20.9"
+ click: ">=5.0"
+ typing_extensions: ">=4.4.0"
+ coloredlogs: ">=6.1,<=14.0"
+ croniter: ">=0.3.34"
+ toposort: ">=1.0"
+ psutil: ">=1.0"
+ sqlalchemy: ">=1.0"
+ grpcio-health-checking: ">=1.44.0"
+ protobuf: ">=3.20.0"
+ grpcio: ">=1.44.0"
+ alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
+ pydantic: ">1.10.0,!=1.10.7"
+ pendulum: <3
+ dagster-pipes: ">=1.5.9,<1.5.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 978d03388b62173b8e6f79162cf52b86
- sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd
+ md5: d8ab27112f82687ffcd456a3b88092e5
+ sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
category: main
optional: false
- - name: toml
- version: 0.10.2
+ - name: dagster-graphql
+ version: 1.5.9
manager: conda
platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
+ dagster: ">=1.5.9,<1.5.10.0a0"
+ gql-with-requests: ">=3.0.0"
+ graphene: ">=3"
+ python: ">=3.8"
+ requests: ""
+ starlette: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: f832c45a477c78bebd107098db465095
- sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1
- category: main
- optional: false
- - name: tomli
- version: 2.0.1
+ md5: 7dcd105a5451f9800aa6de278d86db72
+ sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ category: dev
+ optional: true
+ - name: dagster-graphql
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
+ requests: ""
+ starlette: ""
+ python: ">=3.8"
+ graphene: ">=3"
+ gql-with-requests: ">=3.0.0"
+ dagster: ">=1.5.9,<1.5.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 5844808ffab9ebdb694585b50ba02a96
- sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f
- category: main
- optional: false
- - name: tomlkit
- version: 0.12.3
+ md5: 7dcd105a5451f9800aa6de278d86db72
+ sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ category: dev
+ optional: true
+ - name: dagster-graphql
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
+ requests: ""
+ starlette: ""
+ python: ">=3.8"
+ graphene: ">=3"
+ gql-with-requests: ">=3.0.0"
+ dagster: ">=1.5.9,<1.5.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 074d0ce7a6261ab8b497c3518796ef3e
- sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
- category: main
- optional: false
- - name: toolz
- version: 0.12.0
+ md5: 7dcd105a5451f9800aa6de278d86db72
+ sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ category: dev
+ optional: true
+ - name: dagster-pipes
+ version: 1.5.9
manager: conda
platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 92facfec94bc02d6ccf42e7173831a36
- sha256: 90229da7665175b0185183ab7b53f50af487c7f9b0f47cf09c184cbc139fd24b
+ md5: 0a9787859365c4d2425e589ac53c462b
+ sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
category: main
optional: false
- - name: toposort
- version: "1.10"
+ - name: dagster-pipes
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: aeef653e20028f19a3c2cc70e166b509
- sha256: 23589eeb84f55c9f245ffca1201a0dc9b16e838d39fe7857d4bd0e3026e5b75a
+ md5: 0a9787859365c4d2425e589ac53c462b
+ sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
category: main
optional: false
- - name: tornado
- version: 6.3.3
+ - name: dagster-pipes
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py311h459d7ec_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: a700fcb5cedd3e72d0c75d095c7a6eda
- sha256: 3f0640415c6f50c6b31b5ce41a870ac48c130fda8921aae11afea84c54a6ba84
+ md5: 0a9787859365c4d2425e589ac53c462b
+ sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
category: main
optional: false
- - name: traitlets
- version: 5.13.0
+ - name: dagster-postgres
+ version: 0.21.9
manager: conda
platform: linux-64
dependencies:
+ dagster: 1.5.9.*
+ psycopg2-binary: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.13.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_1.conda
hash:
- md5: 8a9953c15e1e5a7c1baddbbf4511a567
- sha256: 7ac67960ba2e8c16818043cc65ac6190fa4fd95f5b24357df58e4f73d5e60a10
+ md5: 8c1a941fe77b920b1c7933a7a0c6bf2e
+ sha256: 0e947f376d6878bd8e505932277e84c373da492a38d2c4ef9d96fc25f5327845
category: main
optional: false
- - name: types-python-dateutil
- version: 2.8.19.14
+ - name: dagster-postgres
+ version: 0.21.9
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda
+ psycopg2-binary: ""
+ python: ">=3.8"
+ dagster: 1.5.9.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_1.conda
hash:
- md5: 4df15c51a543e806d439490b862be1c6
- sha256: 7b0129c72d371fa7a06ed5dd1d701844c20d03bb4641a38a88a982b347d087e2
- category: main
- optional: false
- - name: types-pyyaml
- version: 6.0.12.12
- manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda
- hash:
- md5: 0cb14c80f66937df894d60626dd1921f
- sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c
+ md5: 8c1a941fe77b920b1c7933a7a0c6bf2e
+ sha256: 0e947f376d6878bd8e505932277e84c373da492a38d2c4ef9d96fc25f5327845
category: main
optional: false
- - name: typing_extensions
- version: 4.8.0
+ - name: dagster-postgres
+ version: 0.21.9
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
+ psycopg2-binary: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
- hash:
- md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
- sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
- category: main
- optional: false
- - name: typing_utils
- version: 0.1.0
- manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2
+ dagster: 1.5.9.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_1.conda
hash:
- md5: eb67e3cace64c66233e2d35949e20f92
- sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739
+ md5: 8c1a941fe77b920b1c7933a7a0c6bf2e
+ sha256: 0e947f376d6878bd8e505932277e84c373da492a38d2c4ef9d96fc25f5327845
category: main
optional: false
- - name: unicodecsv
- version: 0.14.1
+ - name: dagster-webserver
+ version: 1.5.9
manager: conda
platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/unicodecsv-0.14.1-py_1.tar.bz2
+ click: ">=7.0,<9.0"
+ dagster: ">=1.5.9,<1.5.10.0a0"
+ dagster-graphql: ">=1.5.9,<1.5.10.0a0"
+ python: ">=3.8"
+ starlette: ""
+ uvicorn-standard: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 3b2b0e9d7f73db2b5e45db113badb7f7
- sha256: 4bbf3579d57036725562ccc11c57bc487f1eb5c14c138a6881d10f34c2f04237
- category: main
- optional: false
- - name: uri-template
- version: 1.3.0
+ md5: 880fa7acdbf3494cef45759bb866bb63
+ sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
+ category: dev
+ optional: true
+ - name: dagster-webserver
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
+ starlette: ""
+ uvicorn-standard: ""
+ python: ">=3.8"
+ click: ">=7.0,<9.0"
+ dagster: ">=1.5.9,<1.5.10.0a0"
+ dagster-graphql: ">=1.5.9,<1.5.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 0944dc65cb4a9b5b68522c3bb585d41c
- sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
- category: main
- optional: false
- - name: uvloop
- version: 0.19.0
+ md5: 880fa7acdbf3494cef45759bb866bb63
+ sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
+ category: dev
+ optional: true
+ - name: dagster-webserver
+ version: 1.5.9
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- libgcc-ng: ">=12"
- libuv: ">=1.46.0,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.19.0-py311h460e60f_0.conda
+ starlette: ""
+ uvicorn-standard: ""
+ python: ">=3.8"
+ click: ">=7.0,<9.0"
+ dagster: ">=1.5.9,<1.5.10.0a0"
+ dagster-graphql: ">=1.5.9,<1.5.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
hash:
- md5: 671712f2371367c4df72dcba03ef6b82
- sha256: 5748b7c33b7e3238c3f8fce654e1f5ad4877da04e8f30bd3c26c59ae7bfdcd92
+ md5: 880fa7acdbf3494cef45759bb866bb63
+ sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
category: dev
optional: true
- - name: validators
- version: 0.22.0
+ - name: dask-core
+ version: 2023.11.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/validators-0.22.0-pyhd8ed1ab_0.conda
+ click: ">=8.1"
+ cloudpickle: ">=1.5.0"
+ fsspec: ">=2021.09.0"
+ importlib_metadata: ">=4.13.0"
+ packaging: ">=20.0"
+ partd: ">=1.2.0"
+ python: ">=3.9"
+ pyyaml: ">=5.3.1"
+ toolz: ">=0.10.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 56435633ef70e7b92c54151599cbf757
- sha256: f30699fd1a76cf3291e042167f8dc8dd28e00e08e49047a353304c7ad7bc279d
+ md5: 3bf8f5c3fbab9e0cfffdf5914f021854
+ sha256: f23b4e5d8f118d9d7916d8def04dab9a299d73879216da72dd7168c1c30ecb9e
category: main
optional: false
- - name: webcolors
- version: "1.13"
+ - name: dask-core
+ version: 2023.11.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ packaging: ">=20.0"
+ pyyaml: ">=5.3.1"
+ cloudpickle: ">=1.5.0"
+ toolz: ">=0.10.0"
+ partd: ">=1.2.0"
+ importlib_metadata: ">=4.13.0"
+ fsspec: ">=2021.09.0"
+ click: ">=8.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 166212fe82dad8735550030488a01d03
- sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ md5: 3bf8f5c3fbab9e0cfffdf5914f021854
+ sha256: f23b4e5d8f118d9d7916d8def04dab9a299d73879216da72dd7168c1c30ecb9e
category: main
optional: false
- - name: webencodings
- version: 0.5.1
+ - name: dask-core
+ version: 2023.11.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=2.6"
- url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda
+ python: ">=3.9"
+ packaging: ">=20.0"
+ pyyaml: ">=5.3.1"
+ cloudpickle: ">=1.5.0"
+ toolz: ">=0.10.0"
+ partd: ">=1.2.0"
+ importlib_metadata: ">=4.13.0"
+ fsspec: ">=2021.09.0"
+ click: ">=8.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.11.0-pyhd8ed1ab_0.conda
hash:
- md5: daf5160ff9cde3a468556965329085b9
- sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944
+ md5: 3bf8f5c3fbab9e0cfffdf5914f021854
+ sha256: f23b4e5d8f118d9d7916d8def04dab9a299d73879216da72dd7168c1c30ecb9e
category: main
optional: false
- - name: websocket-client
- version: 1.6.4
+ - name: dataclasses
+ version: "0.8"
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2
hash:
- md5: bdb77b28cf16deac0eef431a068320e8
- sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6
+ md5: a362b2124b06aad102e2ee4581acee7d
+ sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92
category: main
optional: false
- - name: websockets
- version: "10.4"
- manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/websockets-10.4-py311hd4cff14_1.tar.bz2
- hash:
- md5: ff58b7e4d10dd88e679cf86988d3fbfb
- sha256: 00eb760d18e1c60b0bdc5e6c36af03050820c870057423681bd44b75c3577458
- category: dev
- optional: true
- - name: wheel
- version: 0.41.3
+ - name: dataclasses
+ version: "0.8"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2
hash:
- md5: 3fc026b9c87d091c4b34a6c997324ae8
- sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d
+ md5: a362b2124b06aad102e2ee4581acee7d
+ sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92
category: main
optional: false
- - name: widgetsnbextension
- version: 4.0.9
+ - name: dataclasses
+ version: "0.8"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2
hash:
- md5: 82617d07b2f5f5a96296d3c19684b37a
- sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b
+ md5: a362b2124b06aad102e2ee4581acee7d
+ sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92
category: main
optional: false
- - name: wrapt
- version: 1.16.0
+ - name: datapackage
+ version: 1.15.2
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h459d7ec_0.conda
+ cchardet: ">=1.0"
+ click: ">=6.7"
+ jsonpointer: ">=1.10"
+ jsonschema: ">=2.5"
+ python: ""
+ requests: ">=2.8"
+ six: ">=1.10"
+ tableschema: ">=1.1.0"
+ tabulator: ">=1.24.2"
+ unicodecsv: ">=0.14"
+ url: https://conda.anaconda.org/conda-forge/noarch/datapackage-1.15.2-pyh44b312d_0.tar.bz2
hash:
- md5: 6669b5529d206c1f880b642cdd17ae05
- sha256: 6587e0b7d42368f767172b239a755fcf6363d91348faf9b7ab5743585369fc58
+ md5: 3f1a6895ab9c423cf59de7c46e56a824
+ sha256: 3344e3c1ea6a1925504f7cbfba6f4be6521465baa2de6bac86769528ea1c3d0d
category: main
optional: false
- - name: xlrd
- version: 2.0.1
+ - name: datapackage
+ version: 1.15.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.1-pyhd8ed1ab_3.tar.bz2
+ python: ""
+ six: ">=1.10"
+ jsonschema: ">=2.5"
+ unicodecsv: ">=0.14"
+ requests: ">=2.8"
+ click: ">=6.7"
+ cchardet: ">=1.0"
+ jsonpointer: ">=1.10"
+ tableschema: ">=1.1.0"
+ tabulator: ">=1.24.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/datapackage-1.15.2-pyh44b312d_0.tar.bz2
hash:
- md5: 97dfcd5ff030d829b55f67e82f928093
- sha256: a97030fc6cde1a335c035392db47efdb4add7d1db76a11b4bfac6ec7fc42bfe5
+ md5: 3f1a6895ab9c423cf59de7c46e56a824
+ sha256: 3344e3c1ea6a1925504f7cbfba6f4be6521465baa2de6bac86769528ea1c3d0d
category: main
optional: false
- - name: xlsxwriter
- version: 3.1.9
+ - name: datapackage
+ version: 1.15.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.9-pyhd8ed1ab_0.conda
+ python: ""
+ six: ">=1.10"
+ jsonschema: ">=2.5"
+ unicodecsv: ">=0.14"
+ requests: ">=2.8"
+ click: ">=6.7"
+ cchardet: ">=1.0"
+ jsonpointer: ">=1.10"
+ tableschema: ">=1.1.0"
+ tabulator: ">=1.24.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/datapackage-1.15.2-pyh44b312d_0.tar.bz2
hash:
- md5: 70e533db62a710ae216fdaccc4a983c8
- sha256: 96f04c1aa99d3a90319979079cfe0f17ecea2bf0d67ca07c12d210af355a5d1d
+ md5: 3f1a6895ab9c423cf59de7c46e56a824
+ sha256: 3344e3c1ea6a1925504f7cbfba6f4be6521465baa2de6bac86769528ea1c3d0d
category: main
optional: false
- - name: xorg-libxext
- version: 1.3.4
+ - name: datasette
+ version: 0.64.4
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- xorg-libx11: ">=1.7.2,<2.0a0"
- xorg-xextproto: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda
+ aiofiles: ">=0.4"
+ asgi-csrf: ">=0.9"
+ asgiref: ">=3.2.10"
+ click: ">=7.1.1"
+ click-default-group-wheel: ">=1.2.2"
+ httpx: ">=0.20"
+ hupper: ">=1.9"
+ itsdangerous: ">=1.1"
+ janus: ">=0.6.2"
+ jinja2: ">=2.10.3"
+ mergedeep: ">=1.1.1"
+ pint: ">=0.9"
+ pip: ""
+ pluggy: ">=1.0"
+ python: ">=3.7"
+ pyyaml: ">=5.3"
+ setuptools: ""
+ uvicorn: ">=0.11"
+ url: https://conda.anaconda.org/conda-forge/noarch/datasette-0.64.4-pyhd8ed1ab_1.conda
hash:
- md5: 82b6df12252e6f32402b96dacc656fec
- sha256: 73e5cfbdff41ef8a844441f884412aa5a585a0f0632ec901da035a03e1fe1249
+ md5: cd1207af03052f6b81906e1a914ad3c5
+ sha256: 8800f86ec23a31ad642a1467d0a8f343038c7e2237a1f9046493ad1868ceb441
category: main
optional: false
- - name: xorg-libxrender
- version: 0.9.11
+ - name: datasette
+ version: 0.64.4
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- xorg-libx11: ">=1.8.6,<2.0a0"
- xorg-renderproto: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda
+ setuptools: ""
+ pip: ""
+ python: ">=3.7"
+ pyyaml: ">=5.3"
+ jinja2: ">=2.10.3"
+ click: ">=7.1.1"
+ pint: ">=0.9"
+ httpx: ">=0.20"
+ asgi-csrf: ">=0.9"
+ itsdangerous: ">=1.1"
+ click-default-group-wheel: ">=1.2.2"
+ hupper: ">=1.9"
+ uvicorn: ">=0.11"
+ pluggy: ">=1.0"
+ aiofiles: ">=0.4"
+ asgiref: ">=3.2.10"
+ janus: ">=0.6.2"
+ mergedeep: ">=1.1.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/datasette-0.64.4-pyhd8ed1ab_1.conda
hash:
- md5: ed67c36f215b310412b2af935bf3e530
- sha256: 26da4d1911473c965c32ce2b4ff7572349719eaacb88a066db8d968a4132c3f7
+ md5: cd1207af03052f6b81906e1a914ad3c5
+ sha256: 8800f86ec23a31ad642a1467d0a8f343038c7e2237a1f9046493ad1868ceb441
category: main
optional: false
- - name: xyzservices
- version: 2023.10.1
+ - name: datasette
+ version: 0.64.4
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda
+ setuptools: ""
+ pip: ""
+ python: ">=3.7"
+ pyyaml: ">=5.3"
+ jinja2: ">=2.10.3"
+ click: ">=7.1.1"
+ pint: ">=0.9"
+ httpx: ">=0.20"
+ asgi-csrf: ">=0.9"
+ itsdangerous: ">=1.1"
+ click-default-group-wheel: ">=1.2.2"
+ hupper: ">=1.9"
+ uvicorn: ">=0.11"
+ pluggy: ">=1.0"
+ aiofiles: ">=0.4"
+ asgiref: ">=3.2.10"
+ janus: ">=0.6.2"
+ mergedeep: ">=1.1.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/datasette-0.64.4-pyhd8ed1ab_1.conda
hash:
- md5: 1e0d85c0e2fef9539218da185b285f54
- sha256: da655e2e0a742fddefeeaf2dd828b62a1820a3755d13341e1a555a10fcb9cf81
+ md5: cd1207af03052f6b81906e1a914ad3c5
+ sha256: 8800f86ec23a31ad642a1467d0a8f343038c7e2237a1f9046493ad1868ceb441
category: main
optional: false
- - name: zipp
- version: 3.17.0
+ - name: dbus
+ version: 1.13.6
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda
+ expat: ">=2.4.2,<3.0a0"
+ libgcc-ng: ">=9.4.0"
+ libglib: ">=2.70.2,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2
hash:
- md5: 2e4d6bc0b14e10f895fc6791a7d9b26a
- sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26
+ md5: ecfff944ba3960ecb334b9a2663d708d
+ sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5
category: main
optional: false
- - name: aiosignal
- version: 1.3.1
+ - name: debugpy
+ version: 1.8.0
manager: conda
platform: linux-64
dependencies:
- frozenlist: ">=1.1.0"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.0-py311hb755f60_1.conda
hash:
- md5: d1e1eb7e21a9e2c74279d87dafb68156
- sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783
+ md5: 2c241533b8eafe8028442d46ef41eb13
+ sha256: f18492ebfaea54bbbeaec0ae207851f711ff589f60f2cc9b8a689f88b2442171
category: main
optional: false
- - name: anyio
- version: 4.0.0
+ - name: debugpy
+ version: 1.8.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- exceptiongroup: ""
- idna: ">=2.8"
- python: ">=3.8"
- sniffio: ">=1.1"
- url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.0.0-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.0-py311hdf8f085_1.conda
hash:
- md5: 3c4e99d3ae4ec033d4dd99fb5220e540
- sha256: 64125775b2e724db5c72e431dd180495d5d509d0a2d1228a122e6af9f1b60e33
+ md5: 7f20ef8a63be62d1bcdaa8136ec09647
+ sha256: 93e94c9077b13f3dde47794bb6ca02f9c3174c794edf889158306a54764a075c
category: main
optional: false
- - name: asgi-csrf
- version: "0.9"
+ - name: debugpy
+ version: 1.8.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- itsdangerous: ""
- python: ">=3.6"
- python-multipart: ""
- url: https://conda.anaconda.org/conda-forge/noarch/asgi-csrf-0.9-pyhd8ed1ab_0.tar.bz2
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.0-py311ha891d26_1.conda
hash:
- md5: eae21b40ce9beded0ce0e5c67180b1e7
- sha256: 9e8d86083dac575490045e570147ff44879aa8412dafa04cff3e539f77eb263f
+ md5: 575b875f1e7901213e9a0f44db9deccc
+ sha256: a7c3b4abf2d3d5256be7e891e76c86dd52e3893e9495d468e3c95e82932b9d7b
category: main
optional: false
- - name: asgiref
- version: 3.7.2
+ - name: decorator
+ version: 5.1.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=4"
- url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 596932155bf88bb6837141550cb721b0
- sha256: 63f85717fd38912a69be5a03d35a648c404cb86843cd4a1302c380c0e7744e30
+ md5: 43afe5ab04e35e17ba28649471dd7364
+ sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2
category: main
optional: false
- - name: asttokens
- version: 2.4.1
+ - name: decorator
+ version: 5.1.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.5"
- six: ">=1.12.0"
- url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 5f25798dcefd8252ce5f9dc494d5f571
- sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111
+ md5: 43afe5ab04e35e17ba28649471dd7364
+ sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2
category: main
optional: false
- - name: async-lru
- version: 2.0.4
+ - name: decorator
+ version: 5.1.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- typing_extensions: ">=4.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
- sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
+ md5: 43afe5ab04e35e17ba28649471dd7364
+ sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2
category: main
optional: false
- - name: aws-c-auth
- version: 0.7.6
+ - name: defusedxml
+ version: 0.7.1
manager: conda
platform: linux-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.6-h37ad1db_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 31836ccf72bc70ce2ec38a2ec2c8b504
- sha256: 6f44ef79e2ab5005961847cdefd2a71aa3a33c741adc77e774ac9dbedd9a2f81
+ md5: 961b3a227b437d82ad7054484cfa71b2
+ sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
category: main
optional: false
- - name: aws-c-mqtt
- version: 0.9.9
+ - name: defusedxml
+ version: 0.7.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.9-h1387108_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: d03181571be036cfbe7accf52256efe7
- sha256: 1df6ad0f5db319090718f5d4575b8829ff5aa5b663c8580e191fa9005e71072d
+ md5: 961b3a227b437d82ad7054484cfa71b2
+ sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
category: main
optional: false
- - name: babel
- version: 2.13.1
+ - name: defusedxml
+ version: 0.7.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- pytz: ""
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
- hash:
- md5: 3ccff479c246692468f604df9c85ef26
- sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
- category: main
- optional: false
- - name: backports.functools_lru_cache
- version: 1.6.5
- manager: conda
- platform: linux-64
- dependencies:
- backports: ""
python: ">=3.6"
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 6b1b907661838a75d067a22f87996b2e
- sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700
+ md5: 961b3a227b437d82ad7054484cfa71b2
+ sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
category: main
optional: false
- - name: beautifulsoup4
- version: 4.12.2
+ - name: distlib
+ version: 0.3.7
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- soupsieve: ">=1.2"
- url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda
+ python: 2.7|>=3.6
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
hash:
- md5: a362ff7d976217f8fa78c0f1c4f59717
- sha256: 52d3e6bcd442537e22699cd227d8fdcfd54b708eeb8ee5b4c671a6a9b9cd74da
+ md5: 12d8aae6994f342618443a8f05c652a0
+ sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
category: main
optional: false
- - name: bleach
- version: 6.1.0
+ - name: distlib
+ version: 0.3.7
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- packaging: ""
- python: ">=3.6"
- setuptools: ""
- six: ">=1.9.0"
- webencodings: ""
- url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda
+ python: 2.7|>=3.6
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
hash:
- md5: 0ed9d7c0e9afa7c025807a9a8136ea3e
- sha256: 845e77ef495376c5c3c328ccfd746ca0ef1978150cae8eae61a300fe7755fb08
+ md5: 12d8aae6994f342618443a8f05c652a0
+ sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
category: main
optional: false
- - name: cached-property
- version: 1.5.2
+ - name: distlib
+ version: 0.3.7
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- cached_property: ">=1.5.2,<1.5.3.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ python: 2.7|>=3.6
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
hash:
- md5: 9b347a7ec10940d3f7941ff6c460b551
- sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
+ md5: 12d8aae6994f342618443a8f05c652a0
+ sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
category: main
optional: false
- - name: cairo
- version: 1.18.0
+ - name: dnspython
+ version: 2.4.2
manager: conda
platform: linux-64
dependencies:
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- icu: ">=73.2,<74.0a0"
- libgcc-ng: ">=12"
- libglib: ">=2.78.0,<3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libstdcxx-ng: ">=12"
- libxcb: ">=1.15,<1.16.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- pixman: ">=0.42.2,<1.0a0"
- xorg-libice: ">=1.1.1,<2.0a0"
- xorg-libsm: ">=1.2.4,<2.0a0"
- xorg-libx11: ">=1.8.6,<2.0a0"
- xorg-libxext: ">=1.3.4,<2.0a0"
- xorg-libxrender: ">=0.9.11,<0.10.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda
+ cryptography: ">=2.6,<42.0"
+ httpcore: ">=0.17.3"
+ idna: ">=2.1,<4.0"
+ python: ">=3.8.0,<4.0.0"
+ sniffio: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.4.2-pyhd8ed1ab_1.conda
hash:
- md5: f907bb958910dc404647326ca80c263e
- sha256: 142e2639a5bc0e99c44d76f4cc8dce9c6a2d87330c4beeabb128832cd871a86e
+ md5: b9657eab1e69207feba4f21fa1207b03
+ sha256: eb7de9ddc2c3a5aef78d6c74d2652ada0e1d47e11304953e65b3c7dfd8290f18
category: main
optional: false
- - name: cffi
- version: 1.16.0
+ - name: dnspython
+ version: 2.4.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libffi: ">=3.4,<4.0a0"
- libgcc-ng: ">=12"
- pycparser: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda
+ sniffio: ""
+ python: ">=3.8.0,<4.0.0"
+ cryptography: ">=2.6,<42.0"
+ httpcore: ">=0.17.3"
+ idna: ">=2.1,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.4.2-pyhd8ed1ab_1.conda
hash:
- md5: b3469563ac5e808b0cd92810d0697043
- sha256: b71c94528ca0c35133da4b7ef69b51a0b55eeee570376057f3d2ad60c3ab1444
+ md5: b9657eab1e69207feba4f21fa1207b03
+ sha256: eb7de9ddc2c3a5aef78d6c74d2652ada0e1d47e11304953e65b3c7dfd8290f18
category: main
optional: false
- - name: cfitsio
- version: 4.3.0
+ - name: dnspython
+ version: 2.4.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libcurl: ">=8.2.0,<9.0a0"
- libgcc-ng: ">=12"
- libgfortran-ng: ""
- libgfortran5: ">=12.3.0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.3.0-hbdc6101_0.conda
+ sniffio: ""
+ python: ">=3.8.0,<4.0.0"
+ cryptography: ">=2.6,<42.0"
+ httpcore: ">=0.17.3"
+ idna: ">=2.1,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.4.2-pyhd8ed1ab_1.conda
hash:
- md5: 797554b8b7603011e8677884381fbcc5
- sha256: c74938f1ade9b8f37b9fa8cc98a5b9262b325506f41d7492ad1d00146e0f1d08
+ md5: b9657eab1e69207feba4f21fa1207b03
+ sha256: eb7de9ddc2c3a5aef78d6c74d2652ada0e1d47e11304953e65b3c7dfd8290f18
category: main
optional: false
- - name: click-default-group
- version: 1.2.4
+ - name: doc8
+ version: 1.1.1
manager: conda
platform: linux-64
dependencies:
- click: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda
+ docutils: ">=0.19,<0.21"
+ pygments: ""
+ python: ">=3.8"
+ restructuredtext_lint: ">=0.7"
+ stevedore: ""
+ tomli: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/doc8-1.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 7c2b6931f9b3548ed78478332095c3e9
- sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0
+ md5: 5e9e17751f19d03c4034246de428582e
+ sha256: 00691538e6289b7947cabc2024f08883b3e2ded00369c68de7d67677e9d4c250
category: main
optional: false
- - name: click-default-group-wheel
- version: 1.2.2
+ - name: doc8
+ version: 1.1.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- click: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-wheel-1.2.2-pyhd8ed1ab_0.tar.bz2
+ pygments: ""
+ tomli: ""
+ stevedore: ""
+ python: ">=3.8"
+ restructuredtext_lint: ">=0.7"
+ docutils: ">=0.19,<0.21"
+ url: https://conda.anaconda.org/conda-forge/noarch/doc8-1.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 2228f2640491b5e9c03b6f6346cba887
- sha256: 3a4d5c96f5375715aec9b8b7639c5a401a90dc1019d24288e4e9494148a640ee
+ md5: 5e9e17751f19d03c4034246de428582e
+ sha256: 00691538e6289b7947cabc2024f08883b3e2ded00369c68de7d67677e9d4c250
category: main
optional: false
- - name: click-plugins
+ - name: doc8
version: 1.1.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- click: ">=3.0"
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2
+ pygments: ""
+ tomli: ""
+ stevedore: ""
+ python: ">=3.8"
+ restructuredtext_lint: ">=0.7"
+ docutils: ">=0.19,<0.21"
+ url: https://conda.anaconda.org/conda-forge/noarch/doc8-1.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f
- sha256: ddef6e559dde6673ee504b0e29dd814d36e22b6b9b1f519fa856ee268905bf92
+ md5: 5e9e17751f19d03c4034246de428582e
+ sha256: 00691538e6289b7947cabc2024f08883b3e2ded00369c68de7d67677e9d4c250
category: main
optional: false
- - name: cligj
- version: 0.7.2
+ - name: docstring_parser
+ version: "0.15"
manager: conda
platform: linux-64
dependencies:
- click: ">=4.0"
- python: <4.0
- url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda
hash:
- md5: a29b7c141d6b2de4bb67788a5f107734
- sha256: 97bd58f0cfcff56a0bcda101e26f7d936625599325beba3e3a1fa512dd7fc174
+ md5: 031fcb28b8e80c1f7bec22ccdf4904b2
+ sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706
category: main
optional: false
- - name: clikit
- version: 0.6.2
+ - name: docstring_parser
+ version: "0.15"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- pastel: ">=0.2.0,<0.3.0"
- pylev: ">=1.3,<2.0"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyhd8ed1ab_2.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda
hash:
- md5: 02abb7b66b02e8b9f5a9b05454400087
- sha256: 2d582bc15d9116ec5467b565fb87d9034c8b56f60943e8eb69407f55f1ab5a78
+ md5: 031fcb28b8e80c1f7bec22ccdf4904b2
+ sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706
category: main
optional: false
- - name: coloredlogs
- version: "14.0"
+ - name: docstring_parser
+ version: "0.15"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- humanfriendly: ">=7.1"
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-14.0-pyhd8ed1ab_3.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda
hash:
- md5: 6b92f390b198cb631c95fd37097098c8
- sha256: 703557fb1bde384b34cd8b1aa88c485e8900f83420bb69066f958f45c2008ef9
+ md5: 031fcb28b8e80c1f7bec22ccdf4904b2
+ sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706
category: main
optional: false
- - name: comm
- version: 0.1.4
+ - name: docutils
+ version: 0.20.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_2.conda
hash:
- md5: c8eaca39e2b6abae1fc96acc929ae939
- sha256: 11057745946a95ee7cc4c98900a60c7362266a4cb28bc97d96cd88e3056eb701
+ md5: 33f8066e53679dd4be2355fec849bf01
+ sha256: 4e90bbc89f9ab192cb247d8b8ebe54c33e57652f8a057f9f176d9d9dd32993b9
category: main
optional: false
- - name: coverage
- version: 7.3.2
+ - name: docutils
+ version: 0.20.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- tomli: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.3.2-py311h459d7ec_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py311h6eed73b_2.conda
hash:
- md5: 7b3145fed7adc7c63a0e08f6f29f5480
- sha256: 8b56edd4336e7fc6ff9b73436a3a270cf835f57cf4d0565c6e240c40f1981085
+ md5: d56b49f1a2c908d05d1ca6b3f85d0fd5
+ sha256: 869e919066b308794e399bc551fc508c175da5f9324b7a324eb259cef8adabf2
category: main
optional: false
- - name: fonttools
- version: 4.44.3
+ - name: docutils
+ version: 0.20.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- brotli: ""
- libgcc-ng: ">=12"
- munkres: ""
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.44.3-py311h459d7ec_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_2.conda
hash:
- md5: a811af88d3c522cf36f4674ef699021d
- sha256: 44a9f21a1f02c07ea8d2b3d7880e631db6f4bd08aafc620d4324542ebb2d3009
+ md5: e82ee6e9db96d5f7ddf289399744240d
+ sha256: 3bc810b946ef8f87681ea4bee2610e8c418f9f61772f5d1ff3ffa803ae7cfbb6
category: main
optional: false
- - name: gitdb
- version: 4.0.11
+ - name: email-validator
+ version: 2.1.0.post1
manager: conda
platform: linux-64
dependencies:
+ dnspython: ">=2.0.0"
+ idna: ">=2.0.0"
python: ">=3.7"
- smmap: ">=3.0.1,<6"
- url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.1.0.post1-pyhd8ed1ab_0.conda
hash:
- md5: 623b19f616f2ca0c261441067e18ae40
- sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
+ md5: 192fe8f657c763c6120d9f8592055847
+ sha256: 0b2e503da10648e2fa8d13035ddda174a549732c4f17476363882ebf67867283
category: main
optional: false
- - name: graphql-core
- version: 3.2.3
+ - name: email-validator
+ version: 2.1.0.post1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- typing_extensions: ">=4,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.3-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ idna: ">=2.0.0"
+ dnspython: ">=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.1.0.post1-pyhd8ed1ab_0.conda
hash:
- md5: 87cafe8c7638a5ac6fd8ec8fb01f1508
- sha256: 6f7da913ecad98951cadfe512af2c3979fbff752bf714da66760701e5463dd29
- category: dev
- optional: true
- - name: grpcio
- version: 1.59.2
+ md5: 192fe8f657c763c6120d9f8592055847
+ sha256: 0b2e503da10648e2fa8d13035ddda174a549732c4f17476363882ebf67867283
+ category: main
+ optional: false
+ - name: email-validator
+ version: 2.1.0.post1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libgrpc: 1.59.2
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.59.2-py311ha6695c7_0.conda
+ python: ">=3.7"
+ idna: ">=2.0.0"
+ dnspython: ">=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.1.0.post1-pyhd8ed1ab_0.conda
hash:
- md5: cb3e3f8a2ed96ee4d5d945050e82b828
- sha256: 131e0a411e1ebf536b5528a62c57e32fb54297eddd106e002c0411dcfe3e4ea0
+ md5: 192fe8f657c763c6120d9f8592055847
+ sha256: 0b2e503da10648e2fa8d13035ddda174a549732c4f17476363882ebf67867283
category: main
optional: false
- - name: h11
- version: 0.14.0
+ - name: ensureconda
+ version: 1.4.3
manager: conda
platform: linux-64
dependencies:
- python: ">=3"
- typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2
+ appdirs: ""
+ click: ">=5.1"
+ filelock: ""
+ python: ">=3.7"
+ requests: ">=2"
+ url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b21ed0883505ba1910994f1df031a428
- sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085
+ md5: c99ae3abf501990769047b4b40a98f17
+ sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6
category: main
optional: false
- - name: h2
- version: 4.1.0
+ - name: ensureconda
+ version: 1.4.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- hpack: ">=4.0,<5"
- hyperframe: ">=6.0,<7"
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ appdirs: ""
+ filelock: ""
+ python: ">=3.7"
+ requests: ">=2"
+ click: ">=5.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b748fbf7060927a6e82df7cb5ee8f097
- sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
+ md5: c99ae3abf501990769047b4b40a98f17
+ sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6
category: main
optional: false
- - name: hdf5
- version: 1.14.2
+ - name: ensureconda
+ version: 1.4.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libgcc-ng: ">=12"
- libgfortran-ng: ""
- libgfortran5: ">=12.3.0"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.2-nompi_h4f84152_100.conda
+ appdirs: ""
+ filelock: ""
+ python: ">=3.7"
+ requests: ">=2"
+ click: ">=5.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2de6a9bc8083b49f09b2f6eb28d3ba3c
- sha256: f70f18291f912ba019cbb736bb87b6487021154733cd109147a6d9672790b6b8
+ md5: c99ae3abf501990769047b4b40a98f17
+ sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6
category: main
optional: false
- - name: html5lib
- version: "1.1"
+ - name: entrypoints
+ version: "0.4"
manager: conda
platform: linux-64
dependencies:
- python: ""
- six: ">=1.9"
- webencodings: ""
- url: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b2355343d6315c892543200231d7154a
- sha256: 9ad06446fe9847e86cb20d220bf11614afcd2cbe9f58096f08d5d4018877bee4
+ md5: 3cf04868fee0a029769bd41f4b2fbf2d
+ sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af
category: main
optional: false
- - name: hypothesis
- version: 6.89.0
+ - name: entrypoints
+ version: "0.4"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- attrs: ">=19.2.0"
- backports.zoneinfo: ">=0.2.1"
- click: ">=7.0"
- exceptiongroup: ">=1.0.0rc8"
- python: ">=3.8"
- setuptools: ""
- sortedcontainers: ">=2.1.0,<3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.89.0-pyha770c72_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 87fe6add77af84b6fafecd466e27a28d
- sha256: 5805c101a002de63400e97d33d0e70f4cade33b2e7bf76061aaa0a7058fc44ea
+ md5: 3cf04868fee0a029769bd41f4b2fbf2d
+ sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af
category: main
optional: false
- - name: importlib-metadata
- version: 6.8.0
+ - name: entrypoints
+ version: "0.4"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- zipp: ">=0.5"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 4e9f59a060c3be52bc4ddc46ee9b6946
- sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf
+ md5: 3cf04868fee0a029769bd41f4b2fbf2d
+ sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af
category: main
optional: false
- - name: importlib_resources
- version: 6.1.1
+ - name: et_xmlfile
+ version: 1.1.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.8"
- zipp: ">=3.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 3d5fa25cf42f3f32a12b2d874ace8574
- sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed
+ md5: a2f2138597905eaa72e561d8efb42cf3
+ sha256: 0c7bb50e1382615a660468dc531b8b17c5b91b88a02ed131c8e3cc63db507ce2
category: main
optional: false
- - name: isodate
- version: 0.6.1
+ - name: et_xmlfile
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
python: ">=3.6"
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 4a62c93c1b5c0b920508ae3fd285eaf5
- sha256: af8f801e093da52a50ca0ea0510dfaf6898fea37e66d08d335e370235dede9fc
+ md5: a2f2138597905eaa72e561d8efb42cf3
+ sha256: 0c7bb50e1382615a660468dc531b8b17c5b91b88a02ed131c8e3cc63db507ce2
category: main
optional: false
- - name: janus
- version: 1.0.0
+ - name: et_xmlfile
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=3.7.4.3"
- url: https://conda.anaconda.org/conda-forge/noarch/janus-1.0.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 304b5bce5a9b3590d825ffd85ac63471
- sha256: b702ef1e280249065d69aef7b0a7b3920903d2de68283bb5282cb57a4ed54d19
+ md5: a2f2138597905eaa72e561d8efb42cf3
+ sha256: 0c7bb50e1382615a660468dc531b8b17c5b91b88a02ed131c8e3cc63db507ce2
category: main
optional: false
- - name: jaraco.classes
- version: 3.3.0
+ - name: exceptiongroup
+ version: 1.2.0
manager: conda
platform: linux-64
dependencies:
- more-itertools: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_0.conda
hash:
- md5: e9f79248d30e942f7c358ff21a1790f5
- sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891
+ md5: f6c211fee3c98229652b60a9a42ef363
+ sha256: cf83dcaf9006015c8ccab3fc6770f478464a66a8769e1763ca5d7dff09d11d08
category: main
optional: false
- - name: jedi
- version: 0.19.1
+ - name: exceptiongroup
+ version: 1.2.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- parso: ">=0.8.3,<0.9.0"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_0.conda
hash:
- md5: 81a3be0b2023e1ea8555781f0ad904a2
- sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a
+ md5: f6c211fee3c98229652b60a9a42ef363
+ sha256: cf83dcaf9006015c8ccab3fc6770f478464a66a8769e1763ca5d7dff09d11d08
category: main
optional: false
- - name: jinja2
- version: 3.1.2
+ - name: exceptiongroup
+ version: 1.2.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- markupsafe: ">=2.0"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_0.conda
hash:
- md5: c8490ed5c70966d232fdd389d0dbed37
- sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5
+ md5: f6c211fee3c98229652b60a9a42ef363
+ sha256: cf83dcaf9006015c8ccab3fc6770f478464a66a8769e1763ca5d7dff09d11d08
category: main
optional: false
- - name: joblib
- version: 1.3.2
+ - name: execnet
+ version: 2.0.2
manager: conda
platform: linux-64
dependencies:
python: ">=3.7"
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda
hash:
- md5: 4da50d410f553db77e62ab62ffaa1abc
- sha256: 31e05d47970d956206188480b038829d24ac11fe8216409d8584d93d40233878
+ md5: 67de0d8241e1060a479e3c37793e26f9
+ sha256: 88ea68a360198af39368beecf057af6b31f0ae38071b2bdb2aa961b6ae5427c0
category: main
optional: false
- - name: jsonlines
- version: 4.0.0
+ - name: execnet
+ version: 2.0.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- attrs: ">=19.2.0"
- python: ">=3.6"
- typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda
hash:
- md5: df32eb56c2a48a5ca9465aef29dd46bc
- sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c
+ md5: 67de0d8241e1060a479e3c37793e26f9
+ sha256: 88ea68a360198af39368beecf057af6b31f0ae38071b2bdb2aa961b6ae5427c0
category: main
optional: false
- - name: jupyterlab_pygments
- version: 0.2.2
+ - name: execnet
+ version: 2.0.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- pygments: ">=2.4.1,<3"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda
hash:
- md5: 243f63592c8e449f40cd42eb5cf32f40
- sha256: 08453e09d5a6bbaeeca839553a5dfd7a377a97550efab96019c334a8042f54f5
+ md5: 67de0d8241e1060a479e3c37793e26f9
+ sha256: 88ea68a360198af39368beecf057af6b31f0ae38071b2bdb2aa961b6ae5427c0
category: main
optional: false
- - name: latexcodec
+ - name: executing
version: 2.0.1
manager: conda
platform: linux-64
dependencies:
- python: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda
hash:
- md5: 8d67904973263afd2985ba56aa2d6bb4
- sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f
+ md5: e16be50e378d8a4533b989035b196ab8
+ sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057
category: main
optional: false
- - name: libcblas
- version: 3.9.0
+ - name: executing
+ version: 2.0.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libblas: 3.9.0
- url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda
hash:
- md5: d12374af44575413fbbd4a217d46ea33
- sha256: 84fddccaf58f42b07af7fb42512bd617efcb072f17bdef27f4c1884dbd33c86a
+ md5: e16be50e378d8a4533b989035b196ab8
+ sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057
category: main
optional: false
- - name: libgd
- version: 2.3.3
+ - name: executing
+ version: 2.0.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- expat: ""
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- icu: ">=73.2,<74.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp: ""
- libwebp-base: ">=1.3.2,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda
hash:
- md5: cfebc557e54905dadc355c0e9f003004
- sha256: b74f95a6e1f3b31a74741b39cba83ed99fc82d17243c0fd3b5ab16ddd48ab89d
- category: dev
- optional: true
- - name: libgoogle-cloud
- version: 2.12.0
+ md5: e16be50e378d8a4533b989035b196ab8
+ sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057
+ category: main
+ optional: false
+ - name: expat
+ version: 2.5.0
manager: conda
platform: linux-64
dependencies:
- libabseil: ">=20230802.1,<20230803.0a0"
- libcrc32c: ">=1.1.2,<1.2.0a0"
- libcurl: ">=8.4.0,<9.0a0"
+ libexpat: 2.5.0
libgcc-ng: ">=12"
- libgrpc: ">=1.59.2,<1.60.0a0"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libstdcxx-ng: ">=12"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-h5206363_4.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda
hash:
- md5: b5eb63d2683102be45d17c55021282f6
- sha256: 82a7d211d0df165b073f9e8ba6d789c4b1c7c4882d546ca12d40f201fc3496fc
+ md5: 8b9b5aca60558d02ddaa09d599e55920
+ sha256: 36dfeb4375059b3bba75ce9b38c29c69fd257342a79e6cf20e9f25c1523f785f
category: main
optional: false
- - name: liblapack
- version: 3.9.0
+ - name: expat
+ version: 2.5.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libblas: 3.9.0
- url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda
+ libexpat: 2.5.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/expat-2.5.0-hf0c8a7f_1.conda
hash:
- md5: 9f100edf65436e3eabc2a51fc00b2c37
- sha256: 58f402aae605ebd0932e1cbbf855cd49dcdfa2fcb6aab790a4f6068ec5937878
+ md5: e12630038077877cbb6c7851e139c17c
+ sha256: 15c04a5a690b337b50fb7550cce057d843cf94dd0109d576ec9bc3448a8571d0
category: main
optional: false
- - name: linear-tsv
- version: 1.1.0
+ - name: expat
+ version: 2.5.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/linear-tsv-1.1.0-py_1.tar.bz2
+ libexpat: 2.5.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.5.0-hb7217d7_1.conda
hash:
- md5: 16491914064fdfe1b9a8fba94ac90e9a
- sha256: 7d653455e3ab3bdbd064e5a8995cce6e657fb1b2fdd26f0bc62ed57687b16043
+ md5: 624fa0dd6fdeaa650b71a62296fdfedf
+ sha256: 9f06afbe4604decf6a2e8e7e87f5ca218a3e9049d57d5b3fcd538ca6240d21a0
category: main
optional: false
- - name: markdown-it-py
- version: 3.0.0
+ - name: filelock
+ version: 3.13.1
manager: conda
platform: linux-64
dependencies:
- mdurl: ">=0.1,<1"
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 93a8e71256479c62074356ef6ebf501b
- sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
+ md5: 0c1729b74a8152fde6a38ba0a2ab9f45
+ sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b
category: main
optional: false
- - name: matplotlib-inline
- version: 0.1.6
+ - name: filelock
+ version: 3.13.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- traitlets: ""
- url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda
hash:
- md5: b21613793fcc81d944c76c9f2864a7de
- sha256: aa091b88aec55bfa2d9207028d8cdc689b9efb090ae27b99557e93c675be2f3c
+ md5: 0c1729b74a8152fde6a38ba0a2ab9f45
+ sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b
category: main
optional: false
- - name: nodeenv
- version: 1.8.0
+ - name: filelock
+ version: 3.13.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: 2.7|>=3.7
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda
hash:
- md5: 2a75b296096adabbabadd5e9782e5fcc
- sha256: 1320306234552717149f36f825ddc7e27ea295f24829e9db4cc6ceaff0b032bd
+ md5: 0c1729b74a8152fde6a38ba0a2ab9f45
+ sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b
category: main
optional: false
- - name: openpyxl
- version: 3.1.2
+ - name: fiona
+ version: 1.9.5
manager: conda
platform: linux-64
dependencies:
- et_xmlfile: ""
+ attrs: ">=17"
+ click: ">=4.0"
+ click-plugins: ">=1.0"
+ cligj: ">=0.5"
+ gdal: ""
+ importlib-metadata: ""
libgcc-ng: ">=12"
+ libgdal: ">=3.8.0,<3.9.0a0"
+ libstdcxx-ng: ">=12"
+ munch: ""
+ numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.2-py311h459d7ec_1.conda
+ setuptools: ""
+ shapely: ""
+ six: ">=1.7"
+ url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hf8e0aa6_1.conda
hash:
- md5: 5c809fb753f06a04c2f114394404769e
- sha256: 49cb85c8ad834e383ad447c66045e3b1beff12b209f5cde06a18c1de4e4c6754
+ md5: 961758d24e419de785e99b038033f9ae
+ sha256: 5579deb516af98c167e11b0f9250ce53e1780eade803b03ad9507fb41b295a5c
category: main
optional: false
- - name: overrides
- version: 7.4.0
+ - name: fiona
+ version: 1.9.5
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- typing_utils: ""
- url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.4.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ attrs: ">=17"
+ click: ">=4.0"
+ click-plugins: ">=1.0"
+ cligj: ">=0.5"
+ gdal: ""
+ importlib-metadata: ""
+ libcxx: ">=16.0.6"
+ libgdal: ">=3.8.0,<3.9.0a0"
+ munch: ""
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ shapely: ""
+ six: ">=1.7"
+ url: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.5-py311h809632c_1.conda
hash:
- md5: 4625b7b01d7f4ac9c96300a5515acfaa
- sha256: 29db8c3b521d261bf71897ba3cfbebc81cd61e581b30fcb984b5a713f02fe1ff
+ md5: fa38d43ecb08f4db5107fc6390949414
+ sha256: 80cfa5135122c959a7ec656c7c1c1fcc60398669029d86fac1cb9a3d3c5cacc1
category: main
optional: false
- - name: partd
- version: 1.4.1
+ - name: fiona
+ version: 1.9.5
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- locket: ""
- python: ">=3.7"
- toolz: ""
- url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ attrs: ">=17"
+ click: ">=4.0"
+ click-plugins: ">=1.0"
+ cligj: ">=0.5"
+ gdal: ""
+ importlib-metadata: ""
+ libcxx: ">=16.0.6"
+ libgdal: ">=3.8.0,<3.9.0a0"
+ munch: ""
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ shapely: ""
+ six: ">=1.7"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py311h4760b73_1.conda
hash:
- md5: acf4b7c0bcd5fa3b0e05801c4d2accd6
- sha256: b248238da2bb9dfe98e680af911dc7013af86095e3ec8baf08905555632d34c7
+ md5: 0232bf494596b3d10e1cf21fbcbc8615
+ sha256: 9d0ad417f817677f113608aacdbac93fad06bf2a149233d299a6ada5c56c6600
category: main
optional: false
- - name: pexpect
- version: 4.8.0
+ - name: folium
+ version: 0.15.0
manager: conda
platform: linux-64
dependencies:
- ptyprocess: ">=0.5"
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2
+ branca: ">=0.7.0"
+ jinja2: ">=2.9"
+ numpy: ""
+ python: ">=3.7"
+ requests: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.0-pyhd8ed1ab_0.conda
hash:
- md5: 330448ce4403cc74990ac07c555942a1
- sha256: 07706c0417ead94f359ca7278f65452d3c396448777aba1da6a11fc351bdca9a
+ md5: 25f5dbce4f946240dea7d2ee79d34254
+ sha256: afe869f136fca1dbda8be0c342392fda99d951c4c4612f134a70efbf5449ef30
category: main
optional: false
- - name: pillow
- version: 10.1.0
+ - name: folium
+ version: 0.15.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- freetype: ">=2.12.1,<3.0a0"
- lcms2: ">=2.15,<3.0a0"
- libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libxcb: ">=1.15,<1.16.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- tk: ">=8.6.13,<8.7.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.1.0-py311ha6c5da5_0.conda
+ numpy: ""
+ requests: ""
+ python: ">=3.7"
+ jinja2: ">=2.9"
+ branca: ">=0.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.0-pyhd8ed1ab_0.conda
hash:
- md5: 83a988daf5c49e57f7d2086fb6781fe8
- sha256: 5b037243f76644fe2e565aa6a3764039dba47cddf8bbef8ef01643775a459b60
+ md5: 25f5dbce4f946240dea7d2ee79d34254
+ sha256: afe869f136fca1dbda8be0c342392fda99d951c4c4612f134a70efbf5449ef30
category: main
optional: false
- - name: pint
- version: "0.22"
+ - name: folium
+ version: 0.15.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
+ numpy: ""
+ requests: ""
+ python: ">=3.7"
+ jinja2: ">=2.9"
+ branca: ">=0.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.0-pyhd8ed1ab_0.conda
hash:
- md5: a719c3f3959c529e558e9ed9f98c3f30
- sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
+ md5: 25f5dbce4f946240dea7d2ee79d34254
+ sha256: afe869f136fca1dbda8be0c342392fda99d951c4c4612f134a70efbf5449ef30
category: main
optional: false
- - name: pip
- version: 23.3.1
+ - name: font-ttf-dejavu-sans-mono
+ version: "2.37"
manager: conda
platform: linux-64
- dependencies:
- python: ">=3.7"
- setuptools: ""
- wheel: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
hash:
- md5: 2400c0b86889f43aa52067161e1fb108
- sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563
+ md5: 0c96522c6bdaed4b1566d11387caaf45
+ sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
category: main
optional: false
- - name: postgresql
- version: "16.1"
+ - name: font-ttf-dejavu-sans-mono
+ version: "2.37"
manager: conda
- platform: linux-64
- dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libgcc-ng: ">=12"
- libpq: "16.1"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- readline: ">=8.2,<9.0a0"
- tzcode: ""
- tzdata: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
hash:
- md5: 1e9ab0760262044fa00814088667e451
- sha256: 74dfb5793a00a0a9e85296ce0944d8af0f71758574b7c8f9e7d5590250441e24
+ md5: 0c96522c6bdaed4b1566d11387caaf45
+ sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
category: main
optional: false
- - name: proj
- version: 9.3.0
+ - name: font-ttf-dejavu-sans-mono
+ version: "2.37"
manager: conda
- platform: linux-64
- dependencies:
- libcurl: ">=8.4.0,<9.0a0"
- libgcc-ng: ">=12"
- libsqlite: ">=3.43.2,<4.0a0"
- libstdcxx-ng: ">=12"
- libtiff: ">=4.6.0,<4.7.0a0"
- sqlite: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/proj-9.3.0-h1d62c97_2.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
hash:
- md5: b5e57a0c643da391bef850922963eece
- sha256: 252f6c31101719e3d524679e69ae81e6323b93b143e1360169bf50e89386bf24
+ md5: 0c96522c6bdaed4b1566d11387caaf45
+ sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
category: main
optional: false
- - name: protobuf
- version: 4.24.4
+ - name: font-ttf-inconsolata
+ version: "3.000"
manager: conda
platform: linux-64
- dependencies:
- libabseil: ">=20230802.1,<20230803.0a0"
- libgcc-ng: ">=12"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.24.4-py311h46cbc50_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
hash:
- md5: 83b241e2db8adb55d7ec110a913fea80
- sha256: 1f664f5fc370c28809024387e2f991003fcabf8b025c787c70dbc99a8fcb2088
+ md5: 34893075a5c9e55cdafac56607368fc6
+ sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
category: main
optional: false
- - name: psycopg2
- version: 2.9.7
+ - name: font-ttf-inconsolata
+ version: "3.000"
manager: conda
- platform: linux-64
- dependencies:
- libgcc-ng: ">=12"
- libpq: ">=16.0,<17.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/psycopg2-2.9.7-py311h03dec38_1.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
hash:
- md5: 894f0e7a734b1f1182f87081f1ddffa3
- sha256: 047fe0687432b83762d4d77a31cd01572044a231f945f83e10f2cd3c2b44077d
+ md5: 34893075a5c9e55cdafac56607368fc6
+ sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
category: main
optional: false
- - name: pyasn1-modules
- version: 0.3.0
+ - name: font-ttf-inconsolata
+ version: "3.000"
manager: conda
- platform: linux-64
- dependencies:
- pyasn1: ">=0.4.6,<0.6.0"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
hash:
- md5: 26db749166cdca55e5ef1ffdc7767d0e
- sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b
+ md5: 34893075a5c9e55cdafac56607368fc6
+ sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
category: main
optional: false
- - name: pyproject_hooks
- version: 1.0.0
+ - name: font-ttf-source-code-pro
+ version: "2.038"
manager: conda
platform: linux-64
- dependencies:
- python: ">=3.7"
- tomli: ">=1.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
hash:
- md5: 21de50391d584eb7f4441b9de1ad773f
- sha256: 016340837fcfef57b351febcbe855eedf0c1f0ecfc910ed48c7fbd20535f9847
+ md5: 4d59c254e01d9cde7957100457e2d5fb
+ sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
category: main
optional: false
- - name: pytest
- version: 7.4.3
+ - name: font-ttf-source-code-pro
+ version: "2.038"
manager: conda
- platform: linux-64
- dependencies:
- colorama: ""
- exceptiongroup: ">=1.0.0rc8"
- iniconfig: ""
- packaging: ""
- pluggy: ">=0.12,<2.0"
- python: ">=3.7"
- tomli: ">=1.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
hash:
- md5: 5bdca0aca30b0ee62bb84854e027eae0
- sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0
+ md5: 4d59c254e01d9cde7957100457e2d5fb
+ sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
category: main
optional: false
- - name: python-dateutil
- version: 2.8.2
+ - name: font-ttf-source-code-pro
+ version: "2.038"
manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.6"
- six: ">=1.5"
- url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
hash:
- md5: dd999d1cc9f79e67dbb855c8924c7984
- sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da
+ md5: 4d59c254e01d9cde7957100457e2d5fb
+ sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
category: main
optional: false
- - name: python-slugify
- version: 8.0.1
+ - name: font-ttf-ubuntu
+ version: "0.83"
manager: conda
platform: linux-64
- dependencies:
- python: ">=3.7"
- text-unidecode: ">=1.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.1-pyhd8ed1ab_2.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda
hash:
- md5: 519897ff446e0dc056e12402e6785cd5
- sha256: 68ac5a6a467b9c0a98e326ec4cc8e3c01d4514f1200c1b44102923424e8ed1eb
+ md5: 6185f640c43843e5ad6fd1c5372c3f80
+ sha256: 056c85b482d58faab5fd4670b6c1f5df0986314cca3bc831d458b22e4ef2c792
category: main
optional: false
- - name: pyu2f
- version: 0.1.5
+ - name: font-ttf-ubuntu
+ version: "0.83"
manager: conda
- platform: linux-64
- dependencies:
- python: ">=2.7"
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda
hash:
- md5: caabbeaa83928d0c3e3949261daa18eb
- sha256: 667a5a30b65a60b15f38fa4cb09efd6d2762b5a0a9563acd9555eaa5e0b953a2
+ md5: 6185f640c43843e5ad6fd1c5372c3f80
+ sha256: 056c85b482d58faab5fd4670b6c1f5df0986314cca3bc831d458b22e4ef2c792
category: main
optional: false
- - name: qtpy
- version: 2.4.1
+ - name: font-ttf-ubuntu
+ version: "0.83"
manager: conda
- platform: linux-64
- dependencies:
- packaging: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda
hash:
- md5: 7f391bd70d2abfb70f304ba5aa4e1261
- sha256: 925bf48e747af6ceff1b073c10b12fc94ef79c88a34729059d253e43466a33f1
+ md5: 6185f640c43843e5ad6fd1c5372c3f80
+ sha256: 056c85b482d58faab5fd4670b6c1f5df0986314cca3bc831d458b22e4ef2c792
category: main
optional: false
- - name: referencing
- version: 0.31.0
+ - name: fontconfig
+ version: 2.14.2
manager: conda
platform: linux-64
dependencies:
- attrs: ">=22.2.0"
- python: ">=3.8"
- rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.0-pyhd8ed1ab_0.conda
+ expat: ">=2.5.0,<3.0a0"
+ freetype: ">=2.12.1,<3.0a0"
+ libgcc-ng: ">=12"
+ libuuid: ">=2.32.1,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda
hash:
- md5: 38c2b9b24e9a58725a233f1fa32c23e9
- sha256: 108f27bf249a581acd0f1de0e1e6a4d814ab18943178c2d9a4df02f5c16d2102
+ md5: 0f69b688f52ff6da70bccb7ff7001d1d
+ sha256: 155d534c9037347ea7439a2c6da7c24ffec8e5dd278889b4c57274a1d91e0a83
category: main
optional: false
- - name: restructuredtext_lint
- version: 1.4.0
+ - name: fontconfig
+ version: 2.14.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- docutils: ">=0.11,<1.0"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/restructuredtext_lint-1.4.0-pyhd8ed1ab_0.tar.bz2
+ expat: ">=2.5.0,<3.0a0"
+ freetype: ">=2.12.1,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda
hash:
- md5: 1f3c21740038aba9c174df58986bdccb
- sha256: 636ceefea3675cdd96e49e9bc344190dd72d722642c47597f7bfd30e7ceb2a33
+ md5: 86cc5867dfbee4178118392bae4a3c89
+ sha256: f63e6d1d6aef8ba6de4fc54d3d7898a153479888d40ffdf2e4cfad6f92679d34
category: main
optional: false
- - name: rfc3339-validator
- version: 0.1.4
+ - name: fontconfig
+ version: 2.14.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2
+ expat: ">=2.5.0,<3.0a0"
+ freetype: ">=2.12.1,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda
hash:
- md5: fed45fc5ea0813240707998abe49f520
- sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d
+ md5: f77d47ddb6d3cc5b39b9bdf65635afbb
+ sha256: 7094917fc6758186e17c61d8ee8fd2bbbe9f303b4addac61d918fa415c497e2b
category: main
optional: false
- - name: rsa
- version: "4.9"
+ - name: fonts-conda-ecosystem
+ version: "1"
manager: conda
platform: linux-64
dependencies:
- pyasn1: ">=0.1.3"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2
+ fonts-conda-forge: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
hash:
- md5: 03bf410858b2cefc267316408a77c436
- sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57
+ md5: fee5683a3f04bd15cbd8318b096a27ab
+ sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
category: main
optional: false
- - name: ruamel.yaml
- version: 0.18.5
+ - name: fonts-conda-ecosystem
+ version: "1"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- ruamel.yaml.clib: ">=0.1.2"
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.5-py311h459d7ec_0.conda
+ fonts-conda-forge: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
hash:
- md5: 1101ec27377f8e45d8431a5f21d744f1
- sha256: c92e7bbb1d02286bcd3d3292208006f796ae45df82af3deec940339493415c04
+ md5: fee5683a3f04bd15cbd8318b096a27ab
+ sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
category: main
optional: false
- - name: sqlalchemy
- version: 1.4.49
+ - name: fonts-conda-ecosystem
+ version: "1"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- greenlet: "!=0.4.17"
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py311h459d7ec_1.conda
+ fonts-conda-forge: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
hash:
- md5: 17392bcb4ceac1b2c95db9d54b4ac018
- sha256: 542dea4823e2e1283936fbd25c9f3fa960ec6df2dd54589b192b4dac68af7295
+ md5: fee5683a3f04bd15cbd8318b096a27ab
+ sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
category: main
optional: false
- - name: terminado
- version: 0.18.0
+ - name: fonts-conda-forge
+ version: "1"
manager: conda
platform: linux-64
dependencies:
- __linux: ""
- ptyprocess: ""
- python: ">=3.8"
- tornado: ">=6.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh0d859eb_0.conda
+ font-ttf-dejavu-sans-mono: ""
+ font-ttf-inconsolata: ""
+ font-ttf-source-code-pro: ""
+ font-ttf-ubuntu: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
hash:
- md5: e463f348b8b0eb62c9f7c6fbc780286c
- sha256: e90139ef15ea9d75a69cd6b6302c29ed5b01c03ddfa717b71acb32b60af74269
+ md5: f766549260d6815b0c52253f1fb1bb29
+ sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
category: main
optional: false
- - name: tinycss2
- version: 1.2.1
+ - name: fonts-conda-forge
+ version: "1"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.5"
- webencodings: ">=0.4"
- url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2
+ font-ttf-inconsolata: ""
+ font-ttf-source-code-pro: ""
+ font-ttf-ubuntu: ""
+ font-ttf-dejavu-sans-mono: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
hash:
- md5: 7234c9eefff659501cd2fe0d2ede4d48
- sha256: f0db1a2298a5e10e30f4b947566c7229442834702f549dded40a73ecdea7502d
+ md5: f766549260d6815b0c52253f1fb1bb29
+ sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
category: main
optional: false
- - name: tqdm
- version: 4.66.1
+ - name: fonts-conda-forge
+ version: "1"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- colorama: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda
+ font-ttf-inconsolata: ""
+ font-ttf-source-code-pro: ""
+ font-ttf-ubuntu: ""
+ font-ttf-dejavu-sans-mono: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
hash:
- md5: 03c97908b976498dcae97eb4e4f3149c
- sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4
+ md5: f766549260d6815b0c52253f1fb1bb29
+ sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
category: main
optional: false
- - name: typing-extensions
- version: 4.8.0
+ - name: fonttools
+ version: 4.45.1
manager: conda
platform: linux-64
dependencies:
- typing_extensions: 4.8.0
- url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
+ brotli: ""
+ libgcc-ng: ">=12"
+ munkres: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.45.1-py311h459d7ec_0.conda
hash:
- md5: 384462e63262a527bda564fa2d9126c0
- sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
+ md5: 5b24692ece82f89e5cb9a469d9619731
+ sha256: 57d311f86568d46f33845ea8c7d1c9e449a1fa85e510baa17f09e2cae2283681
category: main
optional: false
- - name: typing_inspect
- version: 0.9.0
+ - name: fonttools
+ version: 4.45.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- mypy_extensions: ">=0.3.0"
- python: ">=3.5"
- typing_extensions: ">=3.7.4"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda
+ brotli: ""
+ munkres: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.45.1-py311he705e18_0.conda
hash:
- md5: 9e924b76b91908a17e28a19a0ab88687
- sha256: 16e0b825c138e14ebc84623248d91d93a8cff29bb93595cc4aa46ca32f24f1de
+ md5: 2910a2886c556ce4085fd59d73ae96f2
+ sha256: 5a60241d7585b33160c169ae59b9bd9445c89bfb4604b2d77e7a0db48c04ccc5
category: main
optional: false
- - name: universal_pathlib
- version: 0.1.4
+ - name: fonttools
+ version: 4.45.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- fsspec: ">=2022.1.0"
- python: ">=3.8,<3.12"
- url: https://conda.anaconda.org/conda-forge/noarch/universal_pathlib-0.1.4-pyhd8ed1ab_0.conda
+ brotli: ""
+ munkres: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.45.1-py311h05b510d_0.conda
hash:
- md5: 08ca974df312b574c4d6511426539a87
- sha256: ee5a8f423b7429e2ebc0051638875a69e4dc4558c07a26d3063866cebed5fb66
+ md5: 40c7471beb6af15161a202c0ddf04d82
+ sha256: 7d8d2c8de468dc5a432e8d083f3b56eeec4380749bcfd09a44c81d42cacceece
category: main
optional: false
- - name: urllib3
- version: 1.26.18
+ - name: fqdn
+ version: 1.5.1
manager: conda
platform: linux-64
dependencies:
- brotli-python: ">=1.0.9"
- pysocks: ">=1.5.6,<2.0,!=1.5.7"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda
+ cached-property: ">=1.3.0"
+ python: ">=2.7,<4"
+ url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: bf61cfd2a7f212efba378167a07d4a6a
- sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7
+ md5: 642d35437078749ef23a5dca2c9bb1f3
+ sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
category: main
optional: false
- - name: watchdog
- version: 3.0.0
+ - name: fqdn
+ version: 1.5.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- pyyaml: ">=3.10"
- url: https://conda.anaconda.org/conda-forge/linux-64/watchdog-3.0.0-py311h38be061_1.conda
+ cached-property: ">=1.3.0"
+ python: ">=2.7,<4"
+ url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 1901b9f3ca3782f31450fd7158d2fe8a
- sha256: c1fd4f6bd6f3c4009fe2f97d3ed8edd2f2a46058293e0176b06fa181eb66558f
+ md5: 642d35437078749ef23a5dca2c9bb1f3
+ sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
category: main
optional: false
- - name: xerces-c
- version: 3.2.4
+ - name: fqdn
+ version: 1.5.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- icu: ">=73.2,<74.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libgcc-ng: ">=12"
- libnsl: ">=2.0.0,<2.1.0a0"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.4-hac6953d_3.conda
+ cached-property: ">=1.3.0"
+ python: ">=2.7,<4"
+ url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 297e6a75dc1b6a440cd341a85eab8a00
- sha256: faf1c8f0e625466efec442e987737057ca304f1fcf79055da4d9e93e49f14ffa
+ md5: 642d35437078749ef23a5dca2c9bb1f3
+ sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
category: main
optional: false
- - name: yarl
- version: 1.9.2
+ - name: freetype
+ version: 2.12.1
manager: conda
platform: linux-64
dependencies:
- idna: ">=2.0"
libgcc-ng: ">=12"
- multidict: ">=4.0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py311h459d7ec_1.conda
- hash:
- md5: 132637a291f818a0e99c8ca468e92eb8
- sha256: f25893b4c4e4432cdfa1c19631dd503e5f197704d2b9d09624520ece9a6845f0
- category: main
+ libpng: ">=1.6.39,<1.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda
+ hash:
+ md5: 9ae35c3d96db2c94ce0cef86efdfa2cb
+ sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6
+ category: main
optional: false
- - name: addfips
- version: 0.4.0
+ - name: freetype
+ version: 2.12.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- importlib_resources: ">=5.0"
- python: ">=3.7.5"
- url: https://conda.anaconda.org/conda-forge/noarch/addfips-0.4.0-pyhd8ed1ab_1.conda
+ libpng: ">=1.6.39,<1.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda
hash:
- md5: cb434d01bfd3ba57c54a423f3773ffda
- sha256: c6f7bf91f19ad4fdd183efde6346a0dfd3df7929f413c9535e19c51610b4f671
+ md5: 25152fce119320c980e5470e64834b50
+ sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e
category: main
optional: false
- - name: aniso8601
- version: 9.0.1
+ - name: freetype
+ version: 2.12.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7"
- python-dateutil: ""
- url: https://conda.anaconda.org/conda-forge/noarch/aniso8601-9.0.1-pyhd8ed1ab_0.tar.bz2
+ libpng: ">=1.6.39,<1.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
hash:
- md5: 36fba1a639f2d24723c5480345b78553
- sha256: 201c040b6ee0045805a777f75f37a8648eb8dfd4725d62a4fcddc24d7d6c2a9f
- category: dev
- optional: true
- - name: argon2-cffi-bindings
- version: 21.2.0
+ md5: e6085e516a3e304ce41a8ee08b9b89ad
+ sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9
+ category: main
+ optional: false
+ - name: freexl
+ version: 2.0.0
manager: conda
platform: linux-64
dependencies:
- cffi: ">=1.0.1"
+ libexpat: ">=2.5.0,<3.0a0"
libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h459d7ec_4.conda
+ libiconv: ">=1.17,<2.0a0"
+ minizip: ">=4.0.1,<5.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h743c826_0.conda
hash:
- md5: de5b16869a430949b02161b04b844a30
- sha256: 104194af519b4e667aa5341068b94b521a791aaaa05ec0091f8f0bdba43a60ac
+ md5: 12e6988845706b2cfbc3bc35c9a61a95
+ sha256: 9213f60ba710ecfd3632ce47e036775c9f15ce80a6682ff63cbf12d9dddd5382
category: main
optional: false
- - name: arrow
- version: 1.3.0
+ - name: freexl
+ version: 2.0.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- python-dateutil: ">=2.7.0"
- types-python-dateutil: ">=2.8.10"
- url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda
+ libexpat: ">=2.5.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ minizip: ">=4.0.1,<5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/freexl-2.0.0-h3ec172f_0.conda
hash:
- md5: b77d8c2313158e6e461ca0efb1c2c508
- sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db
+ md5: 640c34a8084e2a812bcee5b804597fc9
+ sha256: 9d59f1894c3b526e6806e376e979b81d0df23a836415122b86458aef72cda24a
category: main
optional: false
- - name: async-timeout
- version: 4.0.3
+ - name: freexl
+ version: 2.0.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- typing-extensions: ">=3.6.5"
- url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda
+ libexpat: ">=2.5.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ minizip: ">=4.0.1,<5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/freexl-2.0.0-hfbad9fb_0.conda
hash:
- md5: 3ce482ec3066e6d809dbbb1d1679f215
- sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979
+ md5: 40722e5f48287567cda6fb2ec1f7891b
+ sha256: 9cb4957d1431bc57bc95b1e99a50669d91ac3441226a78f69fa030d52f2bda77
category: main
optional: false
- - name: aws-c-s3
- version: 0.3.24
+ - name: fribidi
+ version: 1.0.10
manager: conda
platform: linux-64
dependencies:
- aws-c-auth: ">=0.7.6,<0.7.7.0a0"
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- libgcc-ng: ">=12"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.24-h7630044_0.conda
+ libgcc-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2
hash:
- md5: 527d813e1a1cfe40902d2254937b404b
- sha256: 1f276b336ac57166541b1327264639547c7073b30e309502c77ab6eb113ff37c
- category: main
- optional: false
- - name: botocore
- version: 1.32.2
+ md5: ac7bc6a654f8f41b352b38f4051135f8
+ sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627
+ category: dev
+ optional: true
+ - name: fribidi
+ version: 1.0.10
+ manager: conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2
+ hash:
+ md5: f1c6b41e0f56998ecd9a3e210faa1dc0
+ sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5
+ category: dev
+ optional: true
+ - name: fribidi
+ version: 1.0.10
+ manager: conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2
+ hash:
+ md5: c64443234ff91d70cb9c7dc926c58834
+ sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303
+ category: dev
+ optional: true
+ - name: frictionless
+ version: 4.40.8
manager: conda
platform: linux-64
dependencies:
- jmespath: ">=0.7.1,<2.0.0"
- python: ">=3.7"
- python-dateutil: ">=2.1,<3.0.0"
- urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.32.2-pyhd8ed1ab_0.conda
+ chardet: ">=3.0"
+ isodate: ">=0.6"
+ jinja2: ">=3.0.3"
+ jsonschema: ">=2.5"
+ marko: ">=1.0"
+ petl: ">=1.6"
+ python: ">=3.6"
+ python-dateutil: ">=2.8"
+ python-slugify: ">=1.2"
+ pyyaml: ">=5.3"
+ requests: ">=2.10"
+ rfc3986: ">=1.4"
+ simpleeval: ">=0.9.11"
+ stringcase: ">=1.2"
+ tabulate: ">=0.8.10"
+ typer: ">=0.5"
+ validators: ">=0.18"
+ url: https://conda.anaconda.org/conda-forge/noarch/frictionless-4.40.8-pyh6c4a22f_0.tar.bz2
hash:
- md5: 303d0f8f09c41c07b18b9a1112cec29b
- sha256: 621ee76f9d1e741039513e94ef3e4d3442f76098d863f50474ec60d823ef11ae
+ md5: d2791ef8f6c1252aa8d2e2001a603815
+ sha256: 0d7d669d92aa4ecf08effb64aea4c98aa65607bdb98e7b82627b7c43556dd9bc
category: main
optional: false
- - name: branca
- version: 0.7.0
+ - name: frictionless
+ version: 4.40.8
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- jinja2: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.0-pyhd8ed1ab_1.conda
+ python: ">=3.6"
+ pyyaml: ">=5.3"
+ jsonschema: ">=2.5"
+ chardet: ">=3.0"
+ python-dateutil: ">=2.8"
+ isodate: ">=0.6"
+ requests: ">=2.10"
+ python-slugify: ">=1.2"
+ stringcase: ">=1.2"
+ petl: ">=1.6"
+ validators: ">=0.18"
+ rfc3986: ">=1.4"
+ tabulate: ">=0.8.10"
+ marko: ">=1.0"
+ simpleeval: ">=0.9.11"
+ jinja2: ">=3.0.3"
+ typer: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/frictionless-4.40.8-pyh6c4a22f_0.tar.bz2
hash:
- md5: 980ae382aec2ebb7c20e8848f4d695d7
- sha256: 9013b381e6745a7f717b7f742d3fe366ba619f1670da0d849ae589c4e88b0dbc
+ md5: d2791ef8f6c1252aa8d2e2001a603815
+ sha256: 0d7d669d92aa4ecf08effb64aea4c98aa65607bdb98e7b82627b7c43556dd9bc
category: main
optional: false
- - name: croniter
- version: 2.0.1
+ - name: frictionless
+ version: 4.40.8
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- python-dateutil: ""
- pytz: ">2021.1"
- url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ pyyaml: ">=5.3"
+ jsonschema: ">=2.5"
+ chardet: ">=3.0"
+ python-dateutil: ">=2.8"
+ isodate: ">=0.6"
+ requests: ">=2.10"
+ python-slugify: ">=1.2"
+ stringcase: ">=1.2"
+ petl: ">=1.6"
+ validators: ">=0.18"
+ rfc3986: ">=1.4"
+ tabulate: ">=0.8.10"
+ marko: ">=1.0"
+ simpleeval: ">=0.9.11"
+ jinja2: ">=3.0.3"
+ typer: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/frictionless-4.40.8-pyh6c4a22f_0.tar.bz2
hash:
- md5: f67f52c1f555785b86c3bd8e5de4c66f
- sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34
+ md5: d2791ef8f6c1252aa8d2e2001a603815
+ sha256: 0d7d669d92aa4ecf08effb64aea4c98aa65607bdb98e7b82627b7c43556dd9bc
category: main
optional: false
- - name: cryptography
- version: 41.0.5
+ - name: frozenlist
+ version: 1.4.0
manager: conda
platform: linux-64
dependencies:
- cffi: ">=1.12"
libgcc-ng: ">=12"
- openssl: ">=3.1.4,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.5-py311h63ff55d_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py311h459d7ec_1.conda
hash:
- md5: 22584e5c97ed8f1a6b63a0ff43dba827
- sha256: 236ed2218fb857fecaa11fc7fee23574f683b3d03576f8f26f628b7fd2ced5fa
+ md5: 23d0b2d02252b32ee14e5063ccfb41e2
+ sha256: aa832b23e1cce4530fef50e87de95132ba29fb4731848b2c7d3d91f863d2b7f3
category: main
optional: false
- - name: fqdn
- version: 1.5.1
+ - name: frozenlist
+ version: 1.4.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- cached-property: ">=1.3.0"
- python: ">=2.7,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.4.0-py311h2725bcf_1.conda
hash:
- md5: 642d35437078749ef23a5dca2c9bb1f3
- sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
+ md5: 43a86b4653a43d76f3d6859a5a077ceb
+ sha256: d94ac2d88ac46097c9d0c98a42e6f6ee92219824b5e71053a84decd0daad7c81
category: main
optional: false
- - name: geotiff
- version: 1.7.1
+ - name: frozenlist
+ version: 1.4.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libstdcxx-ng: ">=12"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- proj: ">=9.3.0,<9.3.1.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-hf074850_14.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.4.0-py311heffc1b2_1.conda
hash:
- md5: 1d53ee057d8481bd2b4c2c34c8e92aac
- sha256: b00958767cb5607bdb3bbcec0b2056b3e48c0f9e34c31ed8ac01c9bd36704dab
+ md5: 38016fce1505beb7f18bcb86ee02d276
+ sha256: 48e086e66914cde5e4d76d855312be8faabb16df7062aad5915be31ee12dee44
category: main
optional: false
- - name: gitpython
- version: 3.1.40
+ - name: fsspec
+ version: 2023.10.0
manager: conda
platform: linux-64
dependencies:
- gitdb: ">=4.0.1,<5"
- python: ">=3.7"
- typing_extensions: ">=3.7.4.3"
- url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda
hash:
- md5: 6bf74c3b7c13079a91d4bd3da51cefcf
- sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b
+ md5: 5b86cf1ceaaa9be2ec4627377e538db1
+ sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6
category: main
optional: false
- - name: google-crc32c
- version: 1.1.2
+ - name: fsspec
+ version: 2023.10.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- cffi: ">=1.0.0"
- libcrc32c: ">=1.1.2,<1.2.0a0"
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.1.2-py311h9b08b9c_5.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda
hash:
- md5: 59b908ae2a7e328eae0ccb03fa3fa0dd
- sha256: bbd6d4a5d91b8a9e783a03240e906d3cb6fee85ca912f900c46ef027a9eaa289
+ md5: 5b86cf1ceaaa9be2ec4627377e538db1
+ sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6
category: main
optional: false
- - name: googleapis-common-protos
- version: 1.61.0
+ - name: fsspec
+ version: 2023.10.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda
hash:
- md5: f315d7fdc1905dcc2e18a1c7bed22fa9
- sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
+ md5: 5b86cf1ceaaa9be2ec4627377e538db1
+ sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6
category: main
optional: false
- - name: gql
- version: 3.4.1
- manager: conda
- platform: linux-64
- dependencies:
- backoff: ">=1.11.1,<3.0"
- graphql-core: ">=3.2,<3.3"
- python: ">=3.6"
- yarl: ">=1.6,<2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/gql-3.4.1-pyhd8ed1ab_0.conda
- hash:
- md5: 6ad94588f33ddb97175c7f22feef7d2c
- sha256: 6025dcd91083fe1d3f38172d18d041b0c1da4d9d86606a18312efd429c99b93e
- category: dev
- optional: true
- - name: graphql-relay
- version: 3.2.0
- manager: conda
- platform: linux-64
- dependencies:
- graphql-core: ">=3.2,<3.3"
- python: ">=3.6"
- typing_extensions: ">=4.1,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: 1b2b83e3528f8fb83007161eff51073d
- sha256: 04f2a3383e74421441e46eaed4c32940682c1de82036fd1b6f18663d6d5447c4
- category: dev
- optional: true
- - name: grpcio-health-checking
- version: 1.59.2
+ - name: furo
+ version: 2023.9.10
manager: conda
platform: linux-64
dependencies:
- grpcio: ">=1.59.2"
- protobuf: ">=3.12.1"
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/grpcio-health-checking-1.59.2-pyhd8ed1ab_0.conda
+ beautifulsoup4: ""
+ pygments: ">=2.7"
+ python: ">=3.7"
+ sphinx: ">=6.0,<8.0"
+ sphinx-basic-ng: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.9.10-pyhd8ed1ab_0.conda
hash:
- md5: 8b85dc4c1a577f1823b394d5071052de
- sha256: b77ffee9cbd731caa6eca7487286bc65551729744a89ecb3335ca220fec4061d
+ md5: 0dcfacf6d3e49f2957c69c81356cf892
+ sha256: 95f69e36078dd598f5b28b2e0d7ff94946170af9f990b7474ee5501378203bc3
category: main
optional: false
- - name: harfbuzz
- version: 8.3.0
+ - name: furo
+ version: 2023.9.10
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- cairo: ">=1.18.0,<2.0a0"
- freetype: ">=2.12.1,<3.0a0"
- graphite2: ""
- icu: ">=73.2,<74.0a0"
- libgcc-ng: ">=12"
- libglib: ">=2.78.1,<3.0a0"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda
+ beautifulsoup4: ""
+ sphinx-basic-ng: ""
+ python: ">=3.7"
+ pygments: ">=2.7"
+ sphinx: ">=6.0,<8.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.9.10-pyhd8ed1ab_0.conda
hash:
- md5: 5a6f6c00ef982a9bc83558d9ac8f64a0
- sha256: 4b55aea03b18a4084b750eee531ad978d4a3690f63019132c26c6ad26bbe3aed
- category: dev
- optional: true
- - name: httpcore
- version: 1.0.2
+ md5: 0dcfacf6d3e49f2957c69c81356cf892
+ sha256: 95f69e36078dd598f5b28b2e0d7ff94946170af9f990b7474ee5501378203bc3
+ category: main
+ optional: false
+ - name: furo
+ version: 2023.9.10
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- anyio: ">=3.0,<5.0"
- certifi: ""
- h11: ">=0.13,<0.15"
- h2: ">=3,<5"
- python: ">=3.8"
- sniffio: 1.*
- url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.2-pyhd8ed1ab_0.conda
+ beautifulsoup4: ""
+ sphinx-basic-ng: ""
+ python: ">=3.7"
+ pygments: ">=2.7"
+ sphinx: ">=6.0,<8.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.9.10-pyhd8ed1ab_0.conda
hash:
- md5: 48995b2157996a94f50fa483d884e0a3
- sha256: b9a2ec0ecdaf54d67caf73d8a94c8ddba62f482093a5adbfb89c2ce020d64475
+ md5: 0dcfacf6d3e49f2957c69c81356cf892
+ sha256: 95f69e36078dd598f5b28b2e0d7ff94946170af9f990b7474ee5501378203bc3
category: main
optional: false
- - name: importlib_metadata
- version: 6.8.0
+ - name: gcsfs
+ version: 2023.10.0
manager: conda
platform: linux-64
dependencies:
- importlib-metadata: ">=6.8.0,<6.8.1.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda
+ aiohttp: ""
+ decorator: ">4.1.2"
+ fsspec: 2023.10.0
+ google-auth: ">=1.2"
+ google-auth-oauthlib: ""
+ google-cloud-storage: ">1.40"
+ python: ">=3.7"
+ requests: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.10.0-pyhd8ed1ab_0.conda
hash:
- md5: b279b07ce18058034e5b3606ba103a8b
- sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f
+ md5: 500521931bdcc0f6d19c1c2e2ab4a5d9
+ sha256: dd7559c5297359e475a125742e9cb30938579e93a17ce7537af64a04c98407a5
category: main
optional: false
- - name: jsonschema-specifications
- version: 2023.11.1
+ - name: gcsfs
+ version: 2023.10.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- importlib_resources: ">=1.4.0"
- python: ">=3.8"
- referencing: ">=0.31.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
+ requests: ""
+ aiohttp: ""
+ google-auth-oauthlib: ""
+ python: ">=3.7"
+ google-auth: ">=1.2"
+ decorator: ">4.1.2"
+ google-cloud-storage: ">1.40"
+ fsspec: 2023.10.0
+ url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.10.0-pyhd8ed1ab_0.conda
hash:
- md5: 094ff9cf36957f95bb74cee42ab140b2
- sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
+ md5: 500521931bdcc0f6d19c1c2e2ab4a5d9
+ sha256: dd7559c5297359e475a125742e9cb30938579e93a17ce7537af64a04c98407a5
category: main
optional: false
- - name: jupyter_server_terminals
- version: 0.4.4
+ - name: gcsfs
+ version: 2023.10.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- terminado: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
+ requests: ""
+ aiohttp: ""
+ google-auth-oauthlib: ""
+ python: ">=3.7"
+ google-auth: ">=1.2"
+ decorator: ">4.1.2"
+ google-cloud-storage: ">1.40"
+ fsspec: 2023.10.0
+ url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.10.0-pyhd8ed1ab_0.conda
hash:
- md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
- sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
+ md5: 500521931bdcc0f6d19c1c2e2ab4a5d9
+ sha256: dd7559c5297359e475a125742e9cb30938579e93a17ce7537af64a04c98407a5
category: main
optional: false
- - name: kealib
- version: 1.5.2
+ - name: gdal
+ version: 3.8.0
manager: conda
platform: linux-64
dependencies:
hdf5: ">=1.14.2,<1.14.3.0a0"
libgcc-ng: ">=12"
+ libgdal: 3.8.0
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.2-hcd42e92_1.conda
+ libxml2: ">=2.11.6,<2.12.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.0-py311h815a124_6.conda
hash:
- md5: b04c039f0bd511533a0d8bc8a7b6835e
- sha256: 1278aaba7bfd9a143a58a2d5e13296702b6bd77f7b43f6ecace555a55579bdad
+ md5: a20379b7539caea4fd3ba6628d862138
+ sha256: 7aab0e96f76d15a35b78704d13523f234a47cd8c653d8085c1219a8d7d45ef22
category: main
optional: false
- - name: libnetcdf
- version: 4.9.2
+ - name: gdal
+ version: 3.8.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- blosc: ">=1.21.4,<2.0a0"
- bzip2: ">=1.0.8,<2.0a0"
- hdf4: ">=4.2.15,<4.2.16.0a0"
+ __osx: ">=10.9"
hdf5: ">=1.14.2,<1.14.3.0a0"
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzip: ">=1.10.1,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- zlib: ""
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h80fb2b6_112.conda
+ libcxx: ">=16.0.6"
+ libgdal: 3.8.0
+ libxml2: ">=2.11.6,<2.12.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.0-py311h5646c56_6.conda
hash:
- md5: a19fa6cacf80c8a366572853d5890eb4
- sha256: 305ffc3ecaffce10754e4d057daa9803e8dc86d68b14524a791c7dc5598c1d2f
+ md5: 1cb3c8b063c0aca152dd7d7045e8ec2e
+ sha256: b9428ade4519d84f5ef68174f403cac65ee8d44ba10992809ea54ac56508457b
category: main
optional: false
- - name: libspatialite
- version: 5.1.0
+ - name: gdal
+ version: 3.8.0
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ __osx: ">=10.9"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libcxx: ">=16.0.6"
+ libgdal: 3.8.0
+ libxml2: ">=2.11.6,<2.12.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.0-py311h32a4f3d_6.conda
+ hash:
+ md5: b266b8795152cc1dfc9296ac95cb60ad
+ sha256: f8d113f50e12756c4b6640a8f70b2bccc54cc2e1a29b11f5e3cb3e4671d259be
+ category: main
+ optional: false
+ - name: gdk-pixbuf
+ version: 2.42.10
manager: conda
platform: linux-64
dependencies:
- freexl: ">=2.0.0,<3.0a0"
- geos: ">=3.12.0,<3.12.1.0a0"
libgcc-ng: ">=12"
- librttopo: ">=1.1.0,<1.2.0a0"
- libsqlite: ">=3.44.0,<4.0a0"
- libstdcxx-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
+ libglib: ">=2.78.0,<3.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- proj: ">=9.3.0,<9.3.1.0a0"
- sqlite: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h090f1da_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h829c605_4.conda
hash:
- md5: 9a2d6acaa8ce6d53a150248e7b11165e
- sha256: c00eb70e8cf3778bffd04a9551e205e399d16e83a04f55ec392c3163b93d4feb
- category: main
- optional: false
- - name: mako
- version: 1.3.0
+ md5: 252a696860674caf7a855e16f680d63a
+ sha256: 884992d0665a0a5c728943d99b5fba30fd6911bb84eee622fa7ad8a4fa9f6cf7
+ category: dev
+ optional: true
+ - name: gdk-pixbuf
+ version: 2.42.10
+ manager: conda
+ platform: osx-64
+ dependencies:
+ libglib: ">=2.78.0,<3.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.10-hbb5a27d_4.conda
+ hash:
+ md5: 72c45a278f6250c087c2389bcdcc9fd4
+ sha256: b19b3bda07c97d7b550d2fd45c813a1af15ed21d274aa280debf81d07f6edf11
+ category: dev
+ optional: true
+ - name: gdk-pixbuf
+ version: 2.42.10
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ libglib: ">=2.78.0,<3.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.10-h15fa40c_4.conda
+ hash:
+ md5: ed5cfaa924087471c439d94a0e393364
+ sha256: d0ec06b17a6c9aa13e56b7ce188b061ffb11f5e964cade7e4757156dca2aa5a7
+ category: dev
+ optional: true
+ - name: geopandas
+ version: 0.14.1
manager: conda
platform: linux-64
dependencies:
- importlib-metadata: ""
- markupsafe: ">=0.9.2"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.0-pyhd8ed1ab_0.conda
+ fiona: ">=1.8.21"
+ folium: ""
+ geopandas-base: 0.14.1
+ mapclassify: ">=2.4.0"
+ matplotlib-base: ""
+ python: ">=3.9"
+ rtree: ""
+ xyzservices: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.1-pyhd8ed1ab_0.conda
hash:
- md5: 92ca4a92d34ed6e8fa38d93c8552c346
- sha256: b3c0353790ae5a5ebb54aa339661083a6234e5193e758668e62ba36c48dc3c94
+ md5: 6ce5f89fb1e2aa7e04d12c0008b3a745
+ sha256: f3563ad6f1a55587c097337ece863e583c796c9a9df3ecb396bbfeec4ec309fb
category: main
optional: false
- - name: numpy
- version: 1.26.0
+ - name: geopandas
+ version: 0.14.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libblas: ">=3.9.0,<4.0a0"
- libcblas: ">=3.9.0,<4.0a0"
- libgcc-ng: ">=12"
- liblapack: ">=3.9.0,<4.0a0"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py311h64a7726_0.conda
+ matplotlib-base: ""
+ rtree: ""
+ folium: ""
+ xyzservices: ""
+ python: ">=3.9"
+ mapclassify: ">=2.4.0"
+ fiona: ">=1.8.21"
+ geopandas-base: 0.14.1
+ url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.1-pyhd8ed1ab_0.conda
hash:
- md5: bf16a9f625126e378302f08e7ed67517
- sha256: 0aab5cef67cc2a1cd584f6e9cc6f2065c7a28c142d7defcb8096e8f719d9b3bf
+ md5: 6ce5f89fb1e2aa7e04d12c0008b3a745
+ sha256: f3563ad6f1a55587c097337ece863e583c796c9a9df3ecb396bbfeec4ec309fb
category: main
optional: false
- - name: pbr
- version: 6.0.0
+ - name: geopandas
+ version: 0.14.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- pip: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda
+ matplotlib-base: ""
+ rtree: ""
+ folium: ""
+ xyzservices: ""
+ python: ">=3.9"
+ mapclassify: ">=2.4.0"
+ fiona: ">=1.8.21"
+ geopandas-base: 0.14.1
+ url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.1-pyhd8ed1ab_0.conda
hash:
- md5: 8dbab5ba746ed14aa32cb232dc437f8f
- sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87
+ md5: 6ce5f89fb1e2aa7e04d12c0008b3a745
+ sha256: f3563ad6f1a55587c097337ece863e583c796c9a9df3ecb396bbfeec4ec309fb
category: main
optional: false
- - name: pendulum
- version: 2.1.2
+ - name: geopandas-base
+ version: 0.14.1
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.6,<3.0"
- python_abi: 3.11.*
- pytzdata: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/linux-64/pendulum-2.1.2-py311h459d7ec_6.conda
+ packaging: ""
+ pandas: ">=1.4.0"
+ pyproj: ">=3.3.0"
+ python: ">=3.9"
+ shapely: ">=1.8.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.1-pyha770c72_0.conda
hash:
- md5: 7ada98068961b6a6f1f620dcbfedd1ec
- sha256: 59a97ea22e5bbc42981af7625b780b29eee6680bd91c52695b4e388ce786e65b
+ md5: d65c6f458bfdaa181f388d91e858ea67
+ sha256: c813004bb84e50de19f599b188719e40106c858c7da22e504b29ce66e5043361
category: main
optional: false
- - name: platformdirs
- version: 3.11.0
+ - name: geopandas-base
+ version: 0.14.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- typing-extensions: ">=4.6.3"
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda
+ packaging: ""
+ python: ">=3.9"
+ pandas: ">=1.4.0"
+ shapely: ">=1.8.0"
+ pyproj: ">=3.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.1-pyha770c72_0.conda
hash:
- md5: 8f567c0a74aa44cf732f15773b4083b0
- sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144
+ md5: d65c6f458bfdaa181f388d91e858ea67
+ sha256: c813004bb84e50de19f599b188719e40106c858c7da22e504b29ce66e5043361
category: main
optional: false
- - name: poppler
- version: 23.11.0
+ - name: geopandas-base
+ version: 0.14.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- cairo: ">=1.18.0,<2.0a0"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- lcms2: ">=2.15,<3.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libgcc-ng: ">=12"
- libglib: ">=2.78.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libstdcxx-ng: ">=12"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- nspr: ">=4.35,<5.0a0"
- nss: ">=3.94,<4.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- poppler-data: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.11.0-h590f24d_0.conda
+ packaging: ""
+ python: ">=3.9"
+ pandas: ">=1.4.0"
+ shapely: ">=1.8.0"
+ pyproj: ">=3.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.1-pyha770c72_0.conda
hash:
- md5: 671439d8eca2084bb5a75561fff23a85
- sha256: 8050002e01be124efcb82e32e740676f5ed7dfe852f335408554e6dc3b060ad9
+ md5: d65c6f458bfdaa181f388d91e858ea67
+ sha256: c813004bb84e50de19f599b188719e40106c858c7da22e504b29ce66e5043361
category: main
optional: false
- - name: psycopg2-binary
- version: 2.9.7
+ - name: geos
+ version: 3.12.1
manager: conda
platform: linux-64
dependencies:
- psycopg2: ">=2.9.7,<2.9.8.0a0"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.1-h59595ed_0.conda
hash:
- md5: 0212a5c5ae1ab578853364bfc5d9f657
- sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
+ md5: 8c0f4f71f5a59ceb0c6fa9f51501066d
+ sha256: 2593b255cb9c4639d6ea261c47aaed1380216a366546f0468e95c36c2afd1c1a
category: main
optional: false
- - name: pybtex
- version: 0.24.0
+ - name: geos
+ version: 3.12.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- latexcodec: ">=1.0.4"
- python: ">=3.6"
- pyyaml: ">=3.01"
- setuptools: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/geos-3.12.1-h93d8f39_0.conda
hash:
- md5: 2099b86a7399c44c0c61cdb6de6915ba
- sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc
+ md5: d13f05ed3985f57456b610bab66366db
+ sha256: 6feffb0d1999a22c5f94d2168b1af9c5fbdd25c9a963a6825ee32cf05e5c07f5
category: main
optional: false
- - name: pydantic
- version: 1.10.13
+ - name: geos
+ version: 3.12.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- typing-extensions: ">=4.2.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.13-py311h459d7ec_1.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.12.1-h965bd2d_0.conda
hash:
- md5: 8a92f40420211897a35841861e7e8348
- sha256: f2d3a838fc90699c5dcd537aff10c78b33bd755232d0b21b26247cbf185cced7
+ md5: 0f28efe509ee998b3a09e571191d406a
+ sha256: 9cabd90e43caf8fe63a80909775f1ac76814f0666bf6fe7ba836d077a6d4dcf3
category: main
optional: false
- - name: pyproj
- version: 3.6.1
+ - name: geotiff
+ version: 1.7.1
manager: conda
platform: linux-64
dependencies:
- certifi: ""
libgcc-ng: ">=12"
- proj: ">=9.3.0,<9.3.1.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py311h1facc83_4.conda
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.1-hf074850_14.conda
hash:
- md5: 75d504c6787edc377ebdba087a26a61b
- sha256: 4eb94c421b5c635b770e5fbd2774cf1dd4570ad69baf1c248f978943df352896
+ md5: 1d53ee057d8481bd2b4c2c34c8e92aac
+ sha256: b00958767cb5607bdb3bbcec0b2056b3e48c0f9e34c31ed8ac01c9bd36704dab
category: main
optional: false
- - name: pytest-console-scripts
- version: 1.4.1
+ - name: geotiff
+ version: 1.7.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- importlib-metadata: ">=3.6"
- pytest: ">=4.0.0"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-console-scripts-1.4.1-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.1-h889ec99_14.conda
hash:
- md5: ee8808504c73665bed76e20ede28bd56
- sha256: d6603e211019f2581c9f3c0922133b190a46e4ceaad3e3e0e6149f31bc593fa1
+ md5: c994aeaa43a92403ecc723dba66b3f1f
+ sha256: 2d6d54763b4cc41a90d7ca810681c44eaff077027a7b6f5df676736fa0299746
category: main
optional: false
- - name: pytest-cov
- version: 4.1.0
+ - name: geotiff
+ version: 1.7.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- coverage: ">=5.2.1"
- pytest: ">=4.6"
- python: ">=3.7"
- toml: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.1-h71398c0_14.conda
hash:
- md5: 06eb685a3a0b146347a58dda979485da
- sha256: f07d3b44cabbed7843de654c4a6990a08475ce3b708bb735c7da9842614586f2
+ md5: f2a5ed847c17df7b45467210f5a7c15d
+ sha256: 0af388cc45d1813c57ba5f30032b22a8fdf9bc2762bacf4101168009d51d24ce
category: main
optional: false
- - name: pytest-mock
- version: 3.12.0
+ - name: gettext
+ version: 0.21.1
manager: conda
platform: linux-64
dependencies:
- pytest: ">=5.0"
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2
hash:
- md5: ac9fedc9a0c397f2318e82525491dd83
- sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0
+ md5: 14947d8770185e5153fdd04d4673ed37
+ sha256: 4fcfedc44e4c9a053f0416f9fc6ab6ed50644fca3a761126dbd00d09db1f546a
category: main
optional: false
- - name: pytest-xdist
- version: 3.4.0
+ - name: gettext
+ version: 0.21.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- execnet: ">=1.1"
- pytest: ">=6.2.0"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.4.0-pyhd8ed1ab_0.conda
+ libiconv: ">=1.17,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.21.1-h8a4c099_0.tar.bz2
hash:
- md5: b8dc6f9db1b9670e564b68277a79ffeb
- sha256: b835170885a0d2b4bfdc7bc5d09e5a175518f41b6ffa1a0ac891797cd94e3292
+ md5: 1e3aff29ce703d421c43f371ad676cc5
+ sha256: 915d3cd2d777b9b3fc2e87a25901b8e4a6aa1b2b33cf2ba54e9e9ed4f6b67d94
category: main
optional: false
- - name: python-build
- version: 1.0.3
+ - name: gettext
+ version: 0.21.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- colorama: ""
- importlib-metadata: ">=4.6"
- packaging: ">=19.0"
- pyproject_hooks: ""
- python: ">=3.7"
- tomli: ">=1.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda
+ libiconv: ">=1.17,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.21.1-h0186832_0.tar.bz2
hash:
- md5: d9ccabf228cb98419ca3d5694b25e1a2
- sha256: f32748beb76abf5173ee956f30a82c9e9b4a3d9924b0960f1e19e267ea4f01de
+ md5: 63d2ff6fddfa74e5458488fd311bf635
+ sha256: 093b2f96dc4b48e4952ab8946facec98b34b708a056251fc19c23c3aad30039e
category: main
optional: false
- - name: requests
- version: 2.31.0
+ - name: gflags
+ version: 2.2.2
manager: conda
platform: linux-64
dependencies:
- certifi: ">=2017.4.17"
- charset-normalizer: ">=2,<4"
- idna: ">=2.5,<4"
- python: ">=3.7"
- urllib3: ">=1.21.1,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=7.5.0"
+ libstdcxx-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2
hash:
- md5: a30144e4156cdbb236f99ebb49828f8b
- sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad
+ md5: cddaf2c63ea4a5901cf09524c490ecdc
+ sha256: a853c0cacf53cfc59e1bca8d6e5cdfe9f38fce836f08c2a69e35429c2a492e77
category: main
optional: false
- - name: rich
- version: 13.7.0
+ - name: gflags
+ version: 2.2.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- markdown-it-py: ">=2.2.0"
- pygments: ">=2.13.0,<3.0.0"
- python: ">=3.7.0"
- typing_extensions: ">=4.0.0,<5.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda
+ libcxx: ">=10.0.1"
+ url: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2
hash:
- md5: d7a11d4f3024b2f4a6e0ae7377dd61e9
- sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb
+ md5: 3f59cc77a929537e42120faf104e0d16
+ sha256: 39540f879057ae529cad131644af111a8c3c48b384ec6212de6a5381e0863948
category: main
optional: false
- - name: stack_data
- version: 0.6.2
+ - name: gflags
+ version: 2.2.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- asttokens: ""
- executing: ""
- pure_eval: ""
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda
+ libcxx: ">=11.0.0.rc1"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2
hash:
- md5: e7df0fdd404616638df5ece6e69ba7af
- sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec
+ md5: aab9ddfad863e9ef81229a1f8852211b
+ sha256: 25d4a20af2e5ace95fdec88970f6d190e77e20074d2f6d3cef766198b76a4289
category: main
optional: false
- - name: starlette
- version: 0.32.0.post1
- manager: conda
- platform: linux-64
- dependencies:
- anyio: <5,>=3.4.0
- python: ">=3.8"
- typing_extensions: ">=3.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
- hash:
- md5: 9aa6d56db739eee2ff473becbe178fd1
- sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
- category: dev
- optional: true
- - name: tiledb
- version: 2.16.3
+ - name: giflib
+ version: 5.2.1
manager: conda
platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libabseil: ">=20230802.0,<20230803.0a0"
libgcc-ng: ">=12"
- libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libstdcxx-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- openssl: ">=3.1.2,<4.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-h8c794c1_3.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda
hash:
- md5: 7de728789b0aba16018f726dc5ddbec2
- sha256: f021df4b9cfd1a54aac87a6c0bac604edc8ffb36d5b2c4aa20bf2d759ae04a11
+ md5: 96f3b11872ef6fad973eac856cd2624f
+ sha256: 41ec165704ccce2faa0437f4f53c03c06261a2cc9ff7614828e51427d9261f4b
category: main
optional: false
- - name: ukkonen
- version: 1.0.1
+ - name: giflib
+ version: 5.2.1
manager: conda
- platform: linux-64
- dependencies:
- cffi: ""
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h9547e67_4.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hb7f2c08_3.conda
hash:
- md5: 586da7df03b68640de14dc3e8bcbf76f
- sha256: c2d33e998f637b594632eba3727529171a06eb09896e36aa42f1ebcb03779472
+ md5: aca150b0186836f893ebac79019e5498
+ sha256: 47515e0874bcf67e438e1d5d093b074c1781f055067195f0d00a7790a56d446d
category: main
optional: false
- - name: uvicorn
- version: 0.24.0
+ - name: giflib
+ version: 5.2.1
manager: conda
- platform: linux-64
- dependencies:
- click: ">=7.0"
- h11: ">=0.8"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.24.0-py311h38be061_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.1-h1a8c8d9_3.conda
hash:
- md5: a6eb331b0b42251227dbdfb5838c287b
- sha256: df5269d01ba7ae8fa7cc0d822a63db7a646005c689e8a90083f145a707df6035
+ md5: f39a05d3dbb0e5024b7deabb2c0993f1
+ sha256: dbf1e431d3e5e03f8eeb77ec08a4c5d6d5d9af84dbef13d4365e397dd389beb8
category: main
optional: false
- - name: watchfiles
- version: 0.20.0
+ - name: gitdb
+ version: 4.0.11
manager: conda
platform: linux-64
dependencies:
- anyio: ">=3.0.0"
- libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.20.0-py311h46250e7_2.conda
+ python: ">=3.7"
+ smmap: ">=3.0.1,<6"
+ url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
hash:
- md5: 19667098320c065048a8e483ac860051
- sha256: 2ca7e2ebbc165401723801e9a366fb314726b375574ca635ab78527ae9363cf3
- category: dev
- optional: true
- - name: wcwidth
- version: 0.2.10
+ md5: 623b19f616f2ca0c261441067e18ae40
+ sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
+ category: main
+ optional: false
+ - name: gitdb
+ version: 4.0.11
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- backports.functools_lru_cache: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.10-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ smmap: ">=3.0.1,<6"
+ url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
hash:
- md5: 48978e4e99db7d1ee0d277f6dee20684
- sha256: e988673c05416073d0e776bac223b6c79fb5cc1207291c6c6f9e238624a135c0
+ md5: 623b19f616f2ca0c261441067e18ae40
+ sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
category: main
optional: false
- - name: aiohttp
- version: 3.8.6
+ - name: gitdb
+ version: 4.0.11
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- aiosignal: ">=1.1.2"
- async-timeout: <5.0,>=4.0.0a3
- attrs: ">=17.3.0"
- charset-normalizer: ">=2.0,<4.0"
- frozenlist: ">=1.1.1"
- libgcc-ng: ">=12"
- multidict: ">=4.5,<7.0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- yarl: ">=1.0,<2.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.6-py311h459d7ec_1.conda
- hash:
- md5: 7d4b63a745f293029b5689b0b5d8aa15
- sha256: 690f7ca719e99d47728c392ab0f5f362013852800db41702c29d219c8e380976
- category: main
- optional: false
- - name: alembic
- version: 1.12.1
- manager: conda
- platform: linux-64
- dependencies:
- importlib-metadata: ""
- importlib_resources: ""
- mako: ""
python: ">=3.7"
- sqlalchemy: ">=1.3.0"
- typing-extensions: ">=4"
- url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.1-pyhd8ed1ab_0.conda
+ smmap: ">=3.0.1,<6"
+ url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
hash:
- md5: 15de9992b4096a2a6656ca202fde6e4c
- sha256: 24019b1af4777e32843b230dd7a9bf7082943eb21bba03379ceed0bda50facf9
+ md5: 623b19f616f2ca0c261441067e18ae40
+ sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
category: main
optional: false
- - name: arelle-release
- version: 2.17.4
+ - name: gitpython
+ version: 3.1.40
manager: conda
platform: linux-64
dependencies:
- certifi: ""
- isodate: 0.*
- lxml: 4.*
- numpy: 1.*
- openpyxl: 3.*
- pyparsing: 3.*
- python: ">=3.8"
- python-dateutil: 2.*
- regex: ""
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.4-pyhd8ed1ab_0.conda
+ gitdb: ">=4.0.1,<5"
+ python: ">=3.7"
+ typing_extensions: ">=3.7.4.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda
hash:
- md5: 66972cbec7556aa94aba3da76b408f19
- sha256: a30a66c040021c396a99bf862ad78181a4888e67b2ac51ac7e21422c4165986c
+ md5: 6bf74c3b7c13079a91d4bd3da51cefcf
+ sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b
category: main
optional: false
- - name: argon2-cffi
- version: 23.1.0
+ - name: gitpython
+ version: 3.1.40
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- argon2-cffi-bindings: ""
python: ">=3.7"
- typing-extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda
+ typing_extensions: ">=3.7.4.3"
+ gitdb: ">=4.0.1,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda
hash:
- md5: 3afef1f55a1366b4d3b6a0d92e2235e4
- sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677
+ md5: 6bf74c3b7c13079a91d4bd3da51cefcf
+ sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b
category: main
optional: false
- - name: aws-crt-cpp
- version: 0.24.7
+ - name: gitpython
+ version: 3.1.40
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- aws-c-auth: ">=0.7.6,<0.7.7.0a0"
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-c-mqtt: ">=0.9.9,<0.9.10.0a0"
- aws-c-s3: ">=0.3.24,<0.3.25.0a0"
- aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.24.7-h4712614_1.conda
+ python: ">=3.7"
+ typing_extensions: ">=3.7.4.3"
+ gitdb: ">=4.0.1,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda
hash:
- md5: 25b0124936225427980b8b7ab65f1ce2
- sha256: 63ca05c2c38d1a7f691c7988c213669ecba16d17419f861e37011e668ba765ae
+ md5: 6bf74c3b7c13079a91d4bd3da51cefcf
+ sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b
category: main
optional: false
- - name: black
- version: 23.10.1
+ - name: glog
+ version: 0.6.0
manager: conda
platform: linux-64
dependencies:
- click: ">=8.0.0"
- mypy_extensions: ">=0.4.3"
- packaging: ">=22.0"
- pathspec: ">=0.9"
- platformdirs: ">=2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/black-23.10.1-py311h38be061_0.conda
+ gflags: ">=2.2.2,<2.3.0a0"
+ libgcc-ng: ">=10.3.0"
+ libstdcxx-ng: ">=10.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2
hash:
- md5: 17874858641cb402ad73b9adb0e11a27
- sha256: f2114740c055ca5d250e363eec69d0181c2ae5b6ead7597762cf766eaa40fe1d
+ md5: b31f3565cb84435407594e548a2fb7b2
+ sha256: 888cbcfb67f6e3d88a4c4ab9d26c9a406f620c4101a35dc6d2dbadb95f2221d4
category: main
optional: false
- - name: bottleneck
- version: 1.3.7
+ - name: glog
+ version: 0.6.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.3.7-py311h1f0f07a_1.conda
+ gflags: ">=2.2.2,<2.3.0a0"
+ libcxx: ">=12.0.1"
+ url: https://conda.anaconda.org/conda-forge/osx-64/glog-0.6.0-h8ac2a54_0.tar.bz2
hash:
- md5: f12c27e2cf84d2bd9f306d05f07cfc2b
- sha256: 1968e28f8c6e96643d9a863ea6b5146ab1bb710c4e66c737c3b628b0f0ba32b2
+ md5: 69eb97ca709a136c53fdca1f2fd33ddf
+ sha256: fdb38560094fb4a952346dc72a79b3cb09e23e4d0cae9ba4f524e6e88203d3c8
category: main
optional: false
- - name: cachecontrol
- version: 0.13.1
+ - name: glog
+ version: 0.6.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- msgpack-python: ">=0.5.2"
- python: ">=3.7"
- requests: ">=2.16.0"
- url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda
+ gflags: ">=2.2.2,<2.3.0a0"
+ libcxx: ">=12.0.1"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.6.0-h6da1cb0_0.tar.bz2
hash:
- md5: 174bd699bb5aa9e2622eb4b288276ff8
- sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60
+ md5: 5a570729c7709399cf8511aeeda6f989
+ sha256: 4d772c42477f64be708594ac45870feba3e838977871118eb25e00deb0e9a73c
category: main
optional: false
- - name: contourpy
- version: 1.2.0
+ - name: gmp
+ version: 6.3.0
manager: conda
platform: linux-64
dependencies:
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- numpy: ">=1.20,<2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py311h9547e67_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_0.conda
hash:
- md5: 40828c5b36ef52433e21f89943e09f33
- sha256: 2c76e2a970b74eef92ef9460aa705dbdc506dd59b7382bfbedce39d9c189d7f4
+ md5: 0e33ef437202db431aa5a928248cf2e8
+ sha256: 2a50495b6bbbacb03107ea0b752d8358d4a40b572d124a8cade068c147f344f5
category: main
optional: false
- - name: dask-core
- version: 2023.11.0
+ - name: google-api-core
+ version: 2.14.0
manager: conda
platform: linux-64
dependencies:
- click: ">=8.1"
- cloudpickle: ">=1.5.0"
- fsspec: ">=2021.09.0"
- importlib_metadata: ">=4.13.0"
- packaging: ">=20.0"
- partd: ">=1.2.0"
- python: ">=3.9"
- pyyaml: ">=5.3.1"
- toolz: ">=0.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.11.0-pyhd8ed1ab_0.conda
+ google-auth: ">=2.14.1,<3.0.dev0"
+ googleapis-common-protos: ">=1.56.2,<2.0.dev0"
+ protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
+ python: ">=3.7"
+ requests: ">=2.18.0,<3.0.0.dev0"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
hash:
- md5: 3bf8f5c3fbab9e0cfffdf5914f021854
- sha256: f23b4e5d8f118d9d7916d8def04dab9a299d73879216da72dd7168c1c30ecb9e
+ md5: cebe18c719a6818849b921748aa91750
+ sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
category: main
optional: false
- - name: dnspython
- version: 2.4.2
+ - name: google-api-core
+ version: 2.14.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- cryptography: ">=2.6,<42.0"
- httpcore: ">=0.17.3"
- idna: ">=2.1,<4.0"
- python: ">=3.8.0,<4.0.0"
- sniffio: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.4.2-pyhd8ed1ab_1.conda
+ python: ">=3.7"
+ google-auth: ">=2.14.1,<3.0.dev0"
+ googleapis-common-protos: ">=1.56.2,<2.0.dev0"
+ protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
+ requests: ">=2.18.0,<3.0.0.dev0"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
hash:
- md5: b9657eab1e69207feba4f21fa1207b03
- sha256: eb7de9ddc2c3a5aef78d6c74d2652ada0e1d47e11304953e65b3c7dfd8290f18
+ md5: cebe18c719a6818849b921748aa91750
+ sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
category: main
optional: false
- - name: ensureconda
- version: 1.4.3
+ - name: google-api-core
+ version: 2.14.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- appdirs: ""
- click: ">=5.1"
- filelock: ""
python: ">=3.7"
- requests: ">=2"
- url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2
+ google-auth: ">=2.14.1,<3.0.dev0"
+ googleapis-common-protos: ">=1.56.2,<2.0.dev0"
+ protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
+ requests: ">=2.18.0,<3.0.0.dev0"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
hash:
- md5: c99ae3abf501990769047b4b40a98f17
- sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6
+ md5: cebe18c719a6818849b921748aa91750
+ sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
category: main
optional: false
- - name: folium
- version: 0.15.0
+ - name: google-auth
+ version: 2.23.4
manager: conda
platform: linux-64
dependencies:
- branca: ">=0.7.0"
- jinja2: ">=2.9"
- numpy: ""
+ aiohttp: ">=3.6.2,<4.0.0"
+ cachetools: ">=2.0.0,<6.0"
+ cryptography: ">=38.0.3"
+ pyasn1-modules: ">=0.2.1"
+ pyopenssl: ">=20.0.0"
python: ">=3.7"
- requests: ""
- url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.0-pyhd8ed1ab_0.conda
+ pyu2f: ">=0.1.5"
+ requests: ">=2.20.0,<3.0.0"
+ rsa: ">=3.1.4,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
hash:
- md5: 25f5dbce4f946240dea7d2ee79d34254
- sha256: afe869f136fca1dbda8be0c342392fda99d951c4c4612f134a70efbf5449ef30
+ md5: 9ad01e23627db9def3104ba78fd19229
+ sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
category: main
optional: false
- - name: google-resumable-media
- version: 2.6.0
+ - name: google-auth
+ version: 2.23.4
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- google-crc32c: ">=1.0,<2.0.0dev"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
+ pyasn1-modules: ">=0.2.1"
+ rsa: ">=3.1.4,<5"
+ pyopenssl: ">=20.0.0"
+ pyu2f: ">=0.1.5"
+ requests: ">=2.20.0,<3.0.0"
+ cachetools: ">=2.0.0,<6.0"
+ aiohttp: ">=3.6.2,<4.0.0"
+ cryptography: ">=38.0.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
hash:
- md5: 74fd9d08866e60fc412abc8dd7c5486c
- sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
+ md5: 9ad01e23627db9def3104ba78fd19229
+ sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
category: main
optional: false
- - name: graphene
- version: "3.3"
+ - name: google-auth
+ version: 2.23.4
manager: conda
- platform: linux-64
- dependencies:
- aniso8601: ">=8,<10"
- graphql-core: ">=3.1,<3.3"
- graphql-relay: ">=3.1,<3.3"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/graphene-3.3-pyhd8ed1ab_0.conda
- hash:
- md5: ed2ae94977dfd96566e6eaf373216728
- sha256: 8b4e2c1d326849c0094f9e96a9833addb10f638be67bb0590836720879697ec6
- category: dev
- optional: true
- - name: grpcio-status
- version: 1.59.2
- manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- googleapis-common-protos: ">=1.5.5"
- grpcio: ">=1.59.2"
- protobuf: ">=4.21.6"
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.2-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ pyasn1-modules: ">=0.2.1"
+ rsa: ">=3.1.4,<5"
+ pyopenssl: ">=20.0.0"
+ pyu2f: ">=0.1.5"
+ requests: ">=2.20.0,<3.0.0"
+ cachetools: ">=2.0.0,<6.0"
+ aiohttp: ">=3.6.2,<4.0.0"
+ cryptography: ">=38.0.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
hash:
- md5: 5bed0b44f99ef55c0470d2c610fbbac6
- sha256: 9513c5dd0f7fbdba8dfe70ed4e1f7591fa1c49520e06f9f0202c514475dd4257
+ md5: 9ad01e23627db9def3104ba78fd19229
+ sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
category: main
optional: false
- - name: h3-py
- version: 3.7.6
+ - name: google-auth-oauthlib
+ version: 1.1.0
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- numpy: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/h3-py-3.7.6-py311hb755f60_1.conda
+ click: ">=6.0.0"
+ google-auth: ">=2.15.0"
+ python: ">=3.6"
+ requests-oauthlib: ">=0.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 9a688ad1ba707128952ab37ee99ad78d
- sha256: 3b1f22bae640b2769474e837ef750fca806a4ed6ceb1f096976d4c86ab30f47a
+ md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
+ sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
category: main
optional: false
- - name: httpx
- version: 0.25.1
+ - name: google-auth-oauthlib
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- anyio: ""
- certifi: ""
- httpcore: ""
- idna: ""
- python: ">=3.8"
- sniffio: ""
- url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.25.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ requests-oauthlib: ">=0.7.0"
+ click: ">=6.0.0"
+ google-auth: ">=2.15.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 3e00320730cb93fa4941a0cbea0db572
- sha256: fbf9e61459b65022eecbdbb19ec2dc83740374e7db981732d687456e5bcdff72
+ md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
+ sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
category: main
optional: false
- - name: identify
- version: 2.5.31
+ - name: google-auth-oauthlib
+ version: 1.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
python: ">=3.6"
- ukkonen: ""
- url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda
+ requests-oauthlib: ">=0.7.0"
+ click: ">=6.0.0"
+ google-auth: ">=2.15.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
hash:
- md5: fea10604a45e974b110ea15a88913ebc
- sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee
+ md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
+ sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
category: main
optional: false
- - name: isoduration
- version: 20.11.0
+ - name: google-cloud-core
+ version: 2.3.3
manager: conda
platform: linux-64
dependencies:
- arrow: ">=0.15.0"
+ google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
+ google-auth: ">=1.25.0,<3.0dev"
+ grpcio: ">=1.38.0,<2.0.0dev"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
hash:
- md5: 4cb68948e0b8429534380243d063a27a
- sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
+ md5: a26b1fa8555cc1d2f0f7ff9985303e66
+ sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
category: main
optional: false
- - name: jsonschema
- version: 4.20.0
+ - name: google-cloud-core
+ version: 2.3.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- attrs: ">=22.2.0"
- importlib_resources: ">=1.4.0"
- jsonschema-specifications: ">=2023.03.6"
- pkgutil-resolve-name: ">=1.3.10"
- python: ">=3.8"
- referencing: ">=0.28.4"
- rpds-py: ">=0.7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ google-auth: ">=1.25.0,<3.0dev"
+ google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
+ grpcio: ">=1.38.0,<2.0.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
hash:
- md5: 1116d79def5268414fb0917520b2bbf1
- sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296
+ md5: a26b1fa8555cc1d2f0f7ff9985303e66
+ sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
category: main
optional: false
- - name: jupyter_core
- version: 5.5.0
+ - name: google-cloud-core
+ version: 2.3.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- platformdirs: ">=2.5"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.5.0-py311h38be061_0.conda
+ python: ">=3.7"
+ google-auth: ">=1.25.0,<3.0dev"
+ google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
+ grpcio: ">=1.38.0,<2.0.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
hash:
- md5: cee83be29258275f75029125e186ab6d
- sha256: 60bfaec278b3ea4462abd8321b47412864c54bd63575e2698da81c5755e617c1
+ md5: a26b1fa8555cc1d2f0f7ff9985303e66
+ sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
category: main
optional: false
- - name: libgdal
- version: 3.8.0
+ - name: google-cloud-sdk
+ version: 455.0.0
manager: conda
platform: linux-64
dependencies:
- __glibc: ">=2.17,<3.0.a0"
- blosc: ">=1.21.5,<2.0a0"
- cfitsio: ">=4.3.0,<4.3.1.0a0"
- freexl: ">=2.0.0,<3.0a0"
- geos: ">=3.12.0,<3.12.1.0a0"
- geotiff: ">=1.7.1,<1.8.0a0"
- giflib: ">=5.2.1,<5.3.0a0"
- hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- json-c: ">=0.17,<0.18.0a0"
- kealib: ">=1.5.2,<1.6.0a0"
- lerc: ">=4.0.0,<5.0a0"
- libaec: ">=1.1.2,<2.0a0"
- libarchive: ">=3.7.2,<3.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libdeflate: ">=1.19,<1.20.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libgcc-ng: ">=12"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libkml: ">=1.3.0,<1.4.0a0"
- libnetcdf: ">=4.9.2,<4.9.3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libpq: ">=16.1,<17.0a0"
- libspatialite: ">=5.1.0,<5.2.0a0"
- libsqlite: ">=3.44.0,<4.0a0"
- libstdcxx-ng: ">=12"
- libtiff: ">=4.6.0,<4.7.0a0"
- libuuid: ">=2.38.1,<3.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- pcre2: ">=10.42,<10.43.0a0"
- poppler: ">=23.11.0,<23.12.0a0"
- postgresql: ""
- proj: ">=9.3.0,<9.3.1.0a0"
- tiledb: ">=2.16,<2.17.0a0"
- xerces-c: ">=3.2.4,<3.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.0-h12dd931_4.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/google-cloud-sdk-455.0.0-py311h38be061_0.conda
hash:
- md5: 6c55ed78178c9f6b49a5f69d2b39e1f4
- sha256: fb22df87932dae21ee78abfd09d1b1ff75e9649f69ebd58284e0e07ea938b717
+ md5: 1505ce6a9284c331e05de23b56d023ff
+ sha256: 17c439e5b01341a4aae55a2f1841878244d25b365cef52b39fb9bfd3e30c8315
category: main
optional: false
- - name: numba
- version: 0.58.1
+ - name: google-cloud-sdk
+ version: 455.0.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- _openmp_mutex: ">=4.5"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- llvmlite: ">=0.41.1,<0.42.0a0"
- numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/numba-0.58.1-py311h96b013e_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/google-cloud-sdk-455.0.0-py311h6eed73b_0.conda
hash:
- md5: 06a0313ff3d2ec956a25767ccaf7c9f6
- sha256: 9061328d0fa03fc0bf40136c366399107dcede6004dcabd4bf553f60f55b86bf
+ md5: 0a635aa75ccc84e4dd16e06b559d3d49
+ sha256: 8e133ed925ed75409a354b564ff2ebc2ebb3ebdd659f2d190b4c198b164c6f8e
category: main
optional: false
- - name: numexpr
- version: 2.8.7
+ - name: google-cloud-sdk
+ version: 455.0.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- nomkl: ""
- numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.8.7-py311h039bad6_104.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/google-cloud-sdk-455.0.0-py311h267d04e_0.conda
hash:
- md5: 525b0f41e7fcf20a17787be9e2896f49
- sha256: 2e20fd9d64638c8c8ca18bc14a075856da99ddfab7fb318ab51ca94486b5561d
+ md5: 2f60b4b18d39e85bdf3557f19bd407be
+ sha256: 9511a6c98a01a1e5013c73d8e7cb0d1200643e9d531cbc49ebebfb5cd9e71f27
category: main
optional: false
- - name: oauthlib
- version: 3.2.2
+ - name: google-cloud-storage
+ version: 2.13.0
manager: conda
platform: linux-64
dependencies:
- blinker: ""
- cryptography: ""
- pyjwt: ">=1.0.0"
+ google-api-core: ">=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
+ google-auth: ">=2.23.3,<3.0dev"
+ google-cloud-core: ">=2.3.0,<3.0dev"
+ google-crc32c: ">=1.0,<2.0dev"
+ google-resumable-media: ">=2.6.0"
+ protobuf: <5.0.0dev
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2
+ requests: ">=2.18.0,<3.0.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
hash:
- md5: 8f882b197fd9c4941a787926baea4868
- sha256: 0cfd5146a91d3974f4abfc2a45de890371d510a77238fe553e036ec8c031dc5b
+ md5: fa7d4b2576d98b63d8ca84c76052eb95
+ sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
category: main
optional: false
- - name: pandas
- version: 2.1.3
+ - name: google-cloud-storage
+ version: 2.13.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.8.1"
- python-tzdata: ">=2022a"
- python_abi: 3.11.*
- pytz: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py311h320fe9a_0.conda
+ python: ">=3.6"
+ requests: ">=2.18.0,<3.0.0dev"
+ google-api-core: ">=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
+ google-cloud-core: ">=2.3.0,<3.0dev"
+ google-crc32c: ">=1.0,<2.0dev"
+ protobuf: <5.0.0dev
+ google-resumable-media: ">=2.6.0"
+ google-auth: ">=2.23.3,<3.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
hash:
- md5: 3ea3486e16d559dfcb539070ed330a1e
- sha256: d69759f8e5f3dcae2562e177cdfde5a45e4cd38db732301812aa558c1c80db57
+ md5: fa7d4b2576d98b63d8ca84c76052eb95
+ sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
category: main
optional: false
- - name: pango
- version: 1.50.14
- manager: conda
- platform: linux-64
- dependencies:
- cairo: ">=1.16.0,<2.0a0"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- fribidi: ">=1.0.10,<2.0a0"
- harfbuzz: ">=8.1.1,<9.0a0"
- libgcc-ng: ">=12"
- libglib: ">=2.76.4,<3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda
- hash:
- md5: 1a66c10f6a0da3dbd2f3a68127e7f6a0
- sha256: 6ecce306b7ac4acf1184eb5b045e57e613e19e99c27d57f33eb255f8a9120a93
- category: dev
- optional: true
- - name: prompt-toolkit
- version: 3.0.41
+ - name: google-cloud-storage
+ version: 2.13.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- wcwidth: ""
- url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
+ python: ">=3.6"
+ requests: ">=2.18.0,<3.0.0dev"
+ google-api-core: ">=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
+ google-cloud-core: ">=2.3.0,<3.0dev"
+ google-crc32c: ">=1.0,<2.0dev"
+ protobuf: <5.0.0dev
+ google-resumable-media: ">=2.6.0"
+ google-auth: ">=2.23.3,<3.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
hash:
- md5: f511a993aa4336bef9dd874ee3403e67
- sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
+ md5: fa7d4b2576d98b63d8ca84c76052eb95
+ sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
category: main
optional: false
- - name: pybtex-docutils
- version: 1.0.3
+ - name: google-crc32c
+ version: 1.1.2
manager: conda
platform: linux-64
dependencies:
- docutils: ">=0.14"
- pybtex: ">=0.16"
+ cffi: ">=1.0.0"
+ libcrc32c: ">=1.1.2,<1.2.0a0"
+ libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/pybtex-docutils-1.0.3-py311h38be061_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.1.2-py311h9b08b9c_5.conda
hash:
- md5: 137a63bd93d3e1a2b6812119b671f44e
- sha256: 2b7057a1529e190689c141d4a76a7ae2f9f978870737d7e11c3a8e03ad5b27cb
+ md5: 59b908ae2a7e328eae0ccb03fa3fa0dd
+ sha256: bbd6d4a5d91b8a9e783a03240e906d3cb6fee85ca912f900c46ef027a9eaa289
category: main
optional: false
- - name: pyopenssl
- version: 23.3.0
+ - name: google-crc32c
+ version: 1.1.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- cryptography: ">=41.0.5,<42"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda
+ cffi: ">=1.0.0"
+ libcrc32c: ">=1.1.2,<1.2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.1.2-py311h0b57020_5.conda
hash:
- md5: 7819533e674dbbc51468f3228b9b1bb6
- sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010
+ md5: bc176084bd6ba0a97bfdead25850957a
+ sha256: 76bb1245e20a8e63d671fd6343cc87417156a66197d85d47e9d2288731ba784a
category: main
optional: false
- - name: readthedocs-sphinx-ext
- version: 2.2.3
+ - name: google-crc32c
+ version: 1.1.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- jinja2: ">=2.9"
- packaging: ""
- python: ">=3.6"
- requests: ""
- url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
+ cffi: ">=1.0.0"
+ libcrc32c: ">=1.1.2,<1.2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.1.2-py311h533d1a3_5.conda
hash:
- md5: 6bc1a00f5502f9ed13526e4c6bea6900
- sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
+ md5: b884d02272be40f69bff016a9214722c
+ sha256: 6bf42988b7d723a9a8742544ed2c85f58ce56802fe74f8dbf39bba3e97f167b8
category: main
optional: false
- - name: requests-toolbelt
- version: 0.10.1
- manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.6"
- requests: ">=2.0.1,<=3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.10.1-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: a4cd20af9711434f89d1ec0d2b3ae6ba
- sha256: 7f4c9c829add7a65a1f536c30539c541bb3c9dddbd03d7ba318f224b4add0d6d
- category: dev
- optional: true
- - name: responses
- version: 0.24.1
+ - name: google-resumable-media
+ version: 2.6.0
manager: conda
platform: linux-64
dependencies:
+ google-crc32c: ">=1.0,<2.0.0dev"
python: ">=3.7"
- pyyaml: ""
- requests: ">=2.30.0,<3.0"
- types-pyyaml: ""
- typing_extensions: ""
- urllib3: ">=1.25.10,<3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
hash:
- md5: b1b80aaa77d5e83183cd0c9e9025b1fa
- sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67
+ md5: 74fd9d08866e60fc412abc8dd7c5486c
+ sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
category: main
optional: false
- - name: s3transfer
- version: 0.7.0
+ - name: google-resumable-media
+ version: 2.6.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- botocore: ">=1.12.36,<2.0a.0"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda
+ google-crc32c: ">=1.0,<2.0.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
hash:
- md5: 5fe335cb1420d13a818fe01310af2b80
- sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d
+ md5: 74fd9d08866e60fc412abc8dd7c5486c
+ sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
category: main
optional: false
- - name: scipy
- version: 1.11.3
+ - name: google-resumable-media
+ version: 2.6.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libblas: ">=3.9.0,<4.0a0"
- libcblas: ">=3.9.0,<4.0a0"
- libgcc-ng: ">=12"
- libgfortran-ng: ""
- libgfortran5: ">=12.3.0"
- liblapack: ">=3.9.0,<4.0a0"
- libstdcxx-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.3-py311h64a7726_1.conda
+ python: ">=3.7"
+ google-crc32c: ">=1.0,<2.0.0dev"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
hash:
- md5: e4b4d3b764e2d029477d0db88248a8b5
- sha256: 13ea70afe49a3c92fb9b82a6efcfa23a05ca8f24ec2dff22597d651e0e2b4767
+ md5: 74fd9d08866e60fc412abc8dd7c5486c
+ sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
category: main
optional: false
- - name: secretstorage
- version: 3.3.3
+ - name: googleapis-common-protos
+ version: 1.61.0
manager: conda
platform: linux-64
dependencies:
- cryptography: ""
- dbus: ""
- jeepney: ">=0.6"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py311h38be061_2.conda
+ protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
hash:
- md5: 30a57eaa8e72cb0c2c84d6d7db32010c
- sha256: 45e7d85a3663993e8bffdb7c6040561923c848e3262228b163042663caa4485e
+ md5: f315d7fdc1905dcc2e18a1c7bed22fa9
+ sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
category: main
optional: false
- - name: shapely
- version: 2.0.2
+ - name: googleapis-common-protos
+ version: 1.61.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- geos: ">=3.12.0,<3.12.1.0a0"
- libgcc-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.2-py311he06c224_0.conda
+ python: ">=3.7"
+ protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
hash:
- md5: c90e2469d7512f3bba893533a82d7a02
- sha256: 2a02e516c57a2122cf9acaec54b75a821ad5f959a7702b17cb8df2c3fe31ef20
+ md5: f315d7fdc1905dcc2e18a1c7bed22fa9
+ sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
category: main
optional: false
- - name: stevedore
- version: 5.1.0
+ - name: googleapis-common-protos
+ version: 1.61.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- pbr: "!=2.1.0,>=2.0.0"
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/stevedore-5.1.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
hash:
- md5: 55864c50fd9354fd19f6a5078a068170
- sha256: 69b779f4cdb0b84f87067414bcccaffc83c6d734dac84523c40115c383a2e2d5
+ md5: f315d7fdc1905dcc2e18a1c7bed22fa9
+ sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
category: main
optional: false
- - name: typeguard
- version: 4.1.5
+ - name: gql
+ version: 3.4.1
manager: conda
platform: linux-64
dependencies:
- importlib_metadata: ">=3.6"
- python: ">=3.8"
- typing_extensions: ">=4.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda
+ backoff: ">=1.11.1,<3.0"
+ graphql-core: ">=3.2,<3.3"
+ python: ">=3.6"
+ yarl: ">=1.6,<2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/gql-3.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 59d22e0ca481b057b94d54fc9ebacb13
- sha256: df63f90625d2eaefcb6990437b941c1c90ec3c224bc65a2becac928542d0aa5f
- category: main
- optional: false
- - name: typer
- version: 0.9.0
+ md5: 6ad94588f33ddb97175c7f22feef7d2c
+ sha256: 6025dcd91083fe1d3f38172d18d041b0c1da4d9d86606a18312efd429c99b93e
+ category: dev
+ optional: true
+ - name: gql
+ version: 3.4.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- click: ">=7.1.1,<9"
- colorama: ">=0.4.3,<0.5.0"
python: ">=3.6"
- rich: ">=10.11.0,<14.0.0"
- shellingham: ">=1.3.0,<2.0.0"
- typing-extensions: ">=3.7.4.3"
- url: https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda
+ graphql-core: ">=3.2,<3.3"
+ yarl: ">=1.6,<2.0"
+ backoff: ">=1.11.1,<3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/gql-3.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 5030a13b2fe5e143d5956d4943d3018f
- sha256: d395e1e92281abb13e043220ecf8ea973ada8d38a1e8c683df14f46541c64bd2
- category: main
- optional: false
- - name: uvicorn-standard
- version: 0.24.0
- manager: conda
- platform: linux-64
- dependencies:
- httptools: ">=0.5.0"
- python-dotenv: ">=0.13"
- python_abi: 3.11.*
- pyyaml: ">=5.1"
- uvicorn: 0.24.0
- uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
- watchfiles: ">=0.13"
- websockets: ">=10.4"
- url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-standard-0.24.0-h38be061_0.conda
- hash:
- md5: e8143a99cadb40ba9542e6e9ff15d862
- sha256: dc23a3aff61791522ab1d924c0f6b67468c3c72772c5ca690158c160ae42ac33
+ md5: 6ad94588f33ddb97175c7f22feef7d2c
+ sha256: 6025dcd91083fe1d3f38172d18d041b0c1da4d9d86606a18312efd429c99b93e
category: dev
optional: true
- - name: virtualenv
- version: 20.24.6
- manager: conda
- platform: linux-64
- dependencies:
- distlib: <1,>=0.3.7
- filelock: <4,>=3.12.2
- platformdirs: <4,>=3.9.1
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda
- hash:
- md5: fb1fc875719e217ed799a7aae11d3be4
- sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde
- category: main
- optional: false
- - name: aws-sdk-cpp
- version: 1.11.182
- manager: conda
- platform: linux-64
- dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.182-h8beafcf_7.conda
- hash:
- md5: fe27868256b2d2a57d8136e08cdff2bb
- sha256: c71ca50ad5e4c806d76b3584a53b295db317ffa92bd8f28eacc2bf88a3877eee
- category: main
- optional: false
- - name: boto3
- version: 1.29.2
- manager: conda
- platform: linux-64
- dependencies:
- botocore: ">=1.32.2,<1.33.0"
- jmespath: ">=0.7.1,<2.0.0"
- python: ">=3.7"
- s3transfer: ">=0.7.0,<0.8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.29.2-pyhd8ed1ab_0.conda
- hash:
- md5: 7c73d1610c56a1d624c9ef470221d10c
- sha256: 92b63c85d2bbb85be1f406abb41e36ef87d692222c57a24a0d27c6027107b023
- category: main
- optional: false
- - name: cachecontrol-with-filecache
- version: 0.13.1
- manager: conda
- platform: linux-64
- dependencies:
- cachecontrol: 0.13.1
- filelock: ">=3.8.0"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda
- hash:
- md5: 8c4781ca0893cff3a64423954ce234a1
- sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85
- category: main
- optional: false
- - name: dagster
- version: 1.5.9
- manager: conda
- platform: linux-64
- dependencies:
- alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
- click: ">=5.0"
- coloredlogs: ">=6.1,<=14.0"
- croniter: ">=0.3.34"
- dagster-pipes: ">=1.5.9,<1.5.10.0a0"
- docstring_parser: ""
- grpcio: ">=1.44.0"
- grpcio-health-checking: ">=1.44.0"
- jinja2: ""
- packaging: ">=20.9"
- pendulum: <3
- protobuf: ">=3.20.0"
- psutil: ">=1.0"
- pydantic: ">1.10.0,!=1.10.7"
- python: ">=3.8"
- python-dateutil: ""
- python-dotenv: ""
- pytz: ""
- pywin32-on-windows: ""
- pyyaml: ">=5.1"
- requests: ""
- setuptools: ""
- sqlalchemy: ">=1.0"
- tabulate: ""
- tomli: ""
- toposort: ">=1.0"
- tqdm: ""
- typing_extensions: ">=4.4.0"
- universal_pathlib: ""
- watchdog: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
- hash:
- md5: d8ab27112f82687ffcd456a3b88092e5
- sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
- category: main
- optional: false
- - name: datasette
- version: 0.64.4
- manager: conda
- platform: linux-64
- dependencies:
- aiofiles: ">=0.4"
- asgi-csrf: ">=0.9"
- asgiref: ">=3.2.10"
- click: ">=7.1.1"
- click-default-group-wheel: ">=1.2.2"
- httpx: ">=0.20"
- hupper: ">=1.9"
- itsdangerous: ">=1.1"
- janus: ">=0.6.2"
- jinja2: ">=2.10.3"
- mergedeep: ">=1.1.1"
- pint: ">=0.9"
- pip: ""
- pluggy: ">=1.0"
- python: ">=3.7"
- pyyaml: ">=5.3"
- setuptools: ""
- uvicorn: ">=0.11"
- url: https://conda.anaconda.org/conda-forge/noarch/datasette-0.64.4-pyhd8ed1ab_1.conda
- hash:
- md5: cd1207af03052f6b81906e1a914ad3c5
- sha256: 8800f86ec23a31ad642a1467d0a8f343038c7e2237a1f9046493ad1868ceb441
- category: main
- optional: false
- - name: doc8
- version: 1.1.1
- manager: conda
- platform: linux-64
- dependencies:
- docutils: ">=0.19,<0.21"
- pygments: ""
- python: ">=3.8"
- restructuredtext_lint: ">=0.7"
- stevedore: ""
- tomli: ""
- url: https://conda.anaconda.org/conda-forge/noarch/doc8-1.1.1-pyhd8ed1ab_0.conda
- hash:
- md5: 5e9e17751f19d03c4034246de428582e
- sha256: 00691538e6289b7947cabc2024f08883b3e2ded00369c68de7d67677e9d4c250
- category: main
- optional: false
- - name: email-validator
- version: 2.1.0.post1
- manager: conda
- platform: linux-64
- dependencies:
- dnspython: ">=2.0.0"
- idna: ">=2.0.0"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.1.0.post1-pyhd8ed1ab_0.conda
- hash:
- md5: 192fe8f657c763c6120d9f8592055847
- sha256: 0b2e503da10648e2fa8d13035ddda174a549732c4f17476363882ebf67867283
- category: main
- optional: false
- - name: frictionless
- version: 4.40.8
+ - name: gql
+ version: 3.4.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- chardet: ">=3.0"
- isodate: ">=0.6"
- jinja2: ">=3.0.3"
- jsonschema: ">=2.5"
- marko: ">=1.0"
- petl: ">=1.6"
python: ">=3.6"
- python-dateutil: ">=2.8"
- python-slugify: ">=1.2"
- pyyaml: ">=5.3"
- requests: ">=2.10"
- rfc3986: ">=1.4"
- simpleeval: ">=0.9.11"
- stringcase: ">=1.2"
- tabulate: ">=0.8.10"
- typer: ">=0.5"
- validators: ">=0.18"
- url: https://conda.anaconda.org/conda-forge/noarch/frictionless-4.40.8-pyh6c4a22f_0.tar.bz2
- hash:
- md5: d2791ef8f6c1252aa8d2e2001a603815
- sha256: 0d7d669d92aa4ecf08effb64aea4c98aa65607bdb98e7b82627b7c43556dd9bc
- category: main
- optional: false
- - name: gdal
- version: 3.8.0
- manager: conda
- platform: linux-64
- dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libgcc-ng: ">=12"
- libgdal: 3.8.0
- libstdcxx-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
- numpy: ">=1.23.5,<2.0a0"
- openssl: ">=3.1.4,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.0-py311h815a124_4.conda
- hash:
- md5: 30805ad1da096924da69baecb1ebec0b
- sha256: 7f4828e93aefa5bda481e68ad1c8b1eb1dd045195dc71b4f09efbd7a7a795d91
- category: main
- optional: false
- - name: geopandas-base
- version: 0.14.1
- manager: conda
- platform: linux-64
- dependencies:
- packaging: ""
- pandas: ">=1.4.0"
- pyproj: ">=3.3.0"
- python: ">=3.9"
- shapely: ">=1.8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.1-pyha770c72_0.conda
- hash:
- md5: d65c6f458bfdaa181f388d91e858ea67
- sha256: c813004bb84e50de19f599b188719e40106c858c7da22e504b29ce66e5043361
- category: main
- optional: false
- - name: google-auth
- version: 2.23.4
- manager: conda
- platform: linux-64
- dependencies:
- aiohttp: ">=3.6.2,<4.0.0"
- cachetools: ">=2.0.0,<6.0"
- cryptography: ">=38.0.3"
- pyasn1-modules: ">=0.2.1"
- pyopenssl: ">=20.0.0"
- python: ">=3.7"
- pyu2f: ">=0.1.5"
- requests: ">=2.20.0,<3.0.0"
- rsa: ">=3.1.4,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
- hash:
- md5: 9ad01e23627db9def3104ba78fd19229
- sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
- category: main
- optional: false
+ graphql-core: ">=3.2,<3.3"
+ yarl: ">=1.6,<2.0"
+ backoff: ">=1.11.1,<3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/gql-3.4.1-pyhd8ed1ab_0.conda
+ hash:
+ md5: 6ad94588f33ddb97175c7f22feef7d2c
+ sha256: 6025dcd91083fe1d3f38172d18d041b0c1da4d9d86606a18312efd429c99b93e
+ category: dev
+ optional: true
- name: gql-with-requests
version: 3.4.1
manager: conda
@@ -6985,1435 +6900,1226 @@ package:
sha256: f11fb42542950f5e96ee252c9bebbd205bcbf1e20a3d8aeb056998bbdfef68f2
category: dev
optional: true
- - name: gtk2
- version: 2.24.33
+ - name: gql-with-requests
+ version: 3.4.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- atk-1.0: ">=2.36.0"
- cairo: ">=1.16.0,<2.0.0a0"
- gdk-pixbuf: ">=2.42.6,<3.0a0"
- gettext: ">=0.19.8.1,<1.0a0"
- libgcc-ng: ">=9.4.0"
- libglib: ">=2.70.2,<3.0a0"
- pango: ">=1.50.3,<1.51.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2
+ requests: ""
+ urllib3: ""
+ requests-toolbelt: ""
+ python: ">=3.6"
+ gql: 3.4.1
+ url: https://conda.anaconda.org/conda-forge/noarch/gql-with-requests-3.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 957a0255ab58aaf394a91725d73ab422
- sha256: 66d189ec36d67309fa3eb52d14d77b82359c10303c400eecc14f8eaca5939b87
+ md5: 1814ff1e969b01d3570027efcf4f163a
+ sha256: f11fb42542950f5e96ee252c9bebbd205bcbf1e20a3d8aeb056998bbdfef68f2
category: dev
optional: true
- - name: jsonschema-with-format-nongpl
- version: 4.20.0
- manager: conda
- platform: linux-64
- dependencies:
- fqdn: ""
- idna: ""
- isoduration: ""
- jsonpointer: ">1.13"
- jsonschema: ">=4.20.0,<4.20.1.0a0"
- python: ""
- rfc3339-validator: ""
- rfc3986-validator: ">0.1.0"
- uri-template: ""
- webcolors: ">=1.11"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.20.0-pyhd8ed1ab_0.conda
- hash:
- md5: a168c5f84010711f6d4ae650bc22b480
- sha256: 03558b25daa57137fdf98e92731ba50ff5506f265294ac2eef5ec465c76ecf57
- category: main
- optional: false
- - name: jupyter_client
- version: 8.6.0
- manager: conda
- platform: linux-64
- dependencies:
- importlib_metadata: ">=4.8.3"
- jupyter_core: ">=4.12,!=5.0.*"
- python: ">=3.8"
- python-dateutil: ">=2.8.2"
- pyzmq: ">=23.0"
- tornado: ">=6.2"
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda
- hash:
- md5: 6bd3f1069cdebb44c7ae9efb900e312d
- sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d
- category: main
- optional: false
- - name: keyring
- version: 24.3.0
- manager: conda
- platform: linux-64
- dependencies:
- importlib_metadata: ">=4.11.4"
- jaraco.classes: ""
- jeepney: ">=0.4.2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- secretstorage: ">=3.2"
- url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.3.0-py311h38be061_0.conda
- hash:
- md5: 09e27eb40c88f732a4e0ea5b70f63ae0
- sha256: 29909aa6935d34f46b9121bfb504e8305af525a27639bbf5d2692fce2935e9bc
- category: main
- optional: false
- - name: librsvg
- version: 2.56.3
+ - name: gql-with-requests
+ version: 3.4.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- gdk-pixbuf: ">=2.42.10,<3.0a0"
- gettext: ">=0.21.1,<1.0a0"
- libgcc-ng: ">=12"
- libglib: ">=2.76.4,<3.0a0"
- libxml2: ">=2.11.4,<2.12.0a0"
- pango: ">=1.50.14,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-h98fae49_0.conda
+ requests: ""
+ urllib3: ""
+ requests-toolbelt: ""
+ python: ">=3.6"
+ gql: 3.4.1
+ url: https://conda.anaconda.org/conda-forge/noarch/gql-with-requests-3.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 620e754f4344f4c27259ff460a2b9c50
- sha256: 4b2dd7745caadc425045dbe31a2300b3b8de4346873f04aa9b552c56f3b1e001
+ md5: 1814ff1e969b01d3570027efcf4f163a
+ sha256: f11fb42542950f5e96ee252c9bebbd205bcbf1e20a3d8aeb056998bbdfef68f2
category: dev
optional: true
- - name: matplotlib-base
- version: 3.8.1
- manager: conda
- platform: linux-64
- dependencies:
- certifi: ">=2020.06.20"
- contourpy: ">=1.0.1"
- cycler: ">=0.10"
- fonttools: ">=4.22.0"
- freetype: ">=2.12.1,<3.0a0"
- kiwisolver: ">=1.3.1"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- packaging: ">=20.0"
- pillow: ">=8"
- pyparsing: ">=2.3.1"
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.7"
- python_abi: 3.11.*
- tk: ">=8.6.13,<8.7.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.1-py311h54ef318_0.conda
- hash:
- md5: 201fdabdb86bb8fb6e99fa3f0dab8122
- sha256: 9340ef0ba720e550c702fd25611884c79bfc419a85027d69900be5aa2ddbe3a9
- category: main
- optional: false
- - name: nbformat
- version: 5.9.2
- manager: conda
- platform: linux-64
- dependencies:
- jsonschema: ">=2.6"
- jupyter_core: ""
- python: ">=3.8"
- python-fastjsonschema: ""
- traitlets: ">=5.1"
- url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda
- hash:
- md5: 61ba076de6530d9301a0053b02f093d2
- sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992
- category: main
- optional: false
- - name: pandera-core
- version: 0.17.2
- manager: conda
- platform: linux-64
- dependencies:
- multimethod: ""
- numpy: ""
- packaging: ""
- pandas: ""
- pydantic: ""
- python: ">=3.7"
- typeguard: ">=3.0.2"
- typing_extensions: ""
- typing_inspect: ">=0.6.0"
- wrapt: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pandera-core-0.17.2-pyhd8ed1ab_1.conda
- hash:
- md5: 5a1b3de3f435bc9d3c0ab52d45651a28
- sha256: 298bc0b877a366af0bbae2512ec1da47e215fc6333b8b0da7571a09084307331
- category: main
- optional: false
- - name: pre-commit
- version: 3.5.0
- manager: conda
- platform: linux-64
- dependencies:
- cfgv: ">=2.0.0"
- identify: ">=1.0.0"
- nodeenv: ">=0.11.1"
- python: ">=3.8"
- pyyaml: ">=5.1"
- virtualenv: ">=20.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
- hash:
- md5: 964e3d762e427661c59263435a14c492
- sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
- category: main
- optional: false
- - name: prompt_toolkit
- version: 3.0.41
+ - name: graphene
+ version: "3.3"
manager: conda
platform: linux-64
dependencies:
- prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
+ aniso8601: ">=8,<10"
+ graphql-core: ">=3.1,<3.3"
+ graphql-relay: ">=3.1,<3.3"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphene-3.3-pyhd8ed1ab_0.conda
hash:
- md5: b1387bd091fa0420557f801a78587678
- sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
- category: main
- optional: false
- - name: requests-oauthlib
- version: 1.3.1
+ md5: ed2ae94977dfd96566e6eaf373216728
+ sha256: 8b4e2c1d326849c0094f9e96a9833addb10f638be67bb0590836720879697ec6
+ category: dev
+ optional: true
+ - name: graphene
+ version: "3.3"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- oauthlib: ">=3.0.0"
- python: ">=3.4"
- requests: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ aniso8601: ">=8,<10"
+ graphql-core: ">=3.1,<3.3"
+ graphql-relay: ">=3.1,<3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphene-3.3-pyhd8ed1ab_0.conda
hash:
- md5: 61b279f051eef9c89d58f4d813e75e04
- sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0
- category: main
- optional: false
- - name: scikit-learn
- version: 1.3.2
+ md5: ed2ae94977dfd96566e6eaf373216728
+ sha256: 8b4e2c1d326849c0094f9e96a9833addb10f638be67bb0590836720879697ec6
+ category: dev
+ optional: true
+ - name: graphene
+ version: "3.3"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- _openmp_mutex: ">=4.5"
- joblib: ">=1.1.1"
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- scipy: ""
- threadpoolctl: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.2-py311hc009520_1.conda
- hash:
- md5: 6b92d3d0680eae9d1d9860a721f7fb51
- sha256: 638253cba17e44081674b2dd7bee2025c202e91b653182da511ca57de942689d
- category: main
- optional: false
- - name: timezonefinder
- version: 6.2.0
+ python: ">=3.6"
+ aniso8601: ">=8,<10"
+ graphql-core: ">=3.1,<3.3"
+ graphql-relay: ">=3.1,<3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphene-3.3-pyhd8ed1ab_0.conda
+ hash:
+ md5: ed2ae94977dfd96566e6eaf373216728
+ sha256: 8b4e2c1d326849c0094f9e96a9833addb10f638be67bb0590836720879697ec6
+ category: dev
+ optional: true
+ - name: graphite2
+ version: 1.3.13
manager: conda
platform: linux-64
dependencies:
- cffi: ">=1.15.1,<2"
- h3-py: ">=3.7.6,<4"
- libgcc-ng: ">=12"
- numpy: ">=1.18,<2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ">=65.5"
- url: https://conda.anaconda.org/conda-forge/linux-64/timezonefinder-6.2.0-py311h459d7ec_2.conda
+ libgcc-ng: ">=7.5.0"
+ libstdcxx-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2
hash:
- md5: f5beeea76fa273f90360990938885d59
- sha256: b6227b634ac8e8e255e089476b0f9634c9b9cf33cc9db4821e820b4746b98aa7
- category: main
- optional: false
- - name: catalystcoop.ferc_xbrl_extractor
- version: 1.2.1
+ md5: 8c54672728e8ec6aa6db90cf2806d220
+ sha256: 65da967f3101b737b08222de6a6a14e20e480e7d523a5d1e19ace7b960b5d6b1
+ category: dev
+ optional: true
+ - name: graphite2
+ version: 1.3.13
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- arelle-release: ">=2.3,<3"
- coloredlogs: ">=14.0,<15.1"
- frictionless: ">=4.4,<5"
- lxml: ">=4.9.1,<5"
- numpy: ">=1.16,<2"
- pandas: ">=1.5,<2.2"
- pydantic: ">=1.9,<3"
- python: ">=3.10,<3.13"
- sqlalchemy: ">=1.4,<3"
- stringcase: ">=1.2,<2"
- url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.ferc_xbrl_extractor-1.2.1-pyhd8ed1ab_0.conda
+ libcxx: ">=10.0.1"
+ url: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h2e338ed_1001.tar.bz2
hash:
- md5: 901c0be7848920eeaeb14bce747c589c
- sha256: f70614208da7b61b41ead6d2260ca3b0d6c0785388b09f7aa4615b56fbf3ce37
- category: main
- optional: false
- - name: conda-lock
- version: 2.4.2
+ md5: 5f6e7f98caddd0fc2d345b207531814c
+ sha256: 1dba68533e6888c5e2a7e37119a77d6f388fb82721c530ba3bd28d541828e59b
+ category: dev
+ optional: true
+ - name: graphite2
+ version: 1.3.13
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- cachecontrol-with-filecache: ">=0.12.9"
- cachy: ">=0.3.0"
- click: ">=8.0"
- click-default-group: ""
- clikit: ">=0.6.2"
- crashtest: ">=0.3.0"
- ensureconda: ">=1.3"
- gitpython: ">=3.1.30"
- html5lib: ">=1.0"
- jinja2: ""
- keyring: ">=21.2.0"
- packaging: ">=20.4"
- pkginfo: ">=1.4"
- pydantic: ">=1.10"
- python: ">=3.8"
- pyyaml: ">=5.1"
- requests: ">=2.18"
- ruamel.yaml: ""
- tomli: ""
- tomlkit: ">=0.7.0"
- toolz: ">=0.12.0,<1.0.0"
- typing_extensions: ""
- urllib3: ">=1.26.5,<2.0"
- virtualenv: ">=20.0.26"
- url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-2.4.2-pyhd8ed1ab_0.conda
+ libcxx: ">=11.0.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-h9f76cd9_1001.tar.bz2
hash:
- md5: 068b8ae6928d477a0d216254f6eacd34
- sha256: c3a684affc774d45e6bef61306d1005a3fab75862bbe4f2adceb995e14a07193
- category: main
- optional: false
- - name: dagster-graphql
- version: 1.5.9
+ md5: 288b591645cb9cb9c0af7309ac1114f5
+ sha256: 57db1e563cdfe469cd453a2988039118e96ce4b77c9219e2f1022be0e1c2b03f
+ category: dev
+ optional: true
+ - name: graphql-core
+ version: 3.2.3
manager: conda
platform: linux-64
dependencies:
- dagster: ">=1.5.9,<1.5.10.0a0"
- gql-with-requests: ">=3.0.0"
- graphene: ">=3"
- python: ">=3.8"
- requests: ""
- starlette: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ typing_extensions: ">=4,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7dcd105a5451f9800aa6de278d86db72
- sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ md5: 87cafe8c7638a5ac6fd8ec8fb01f1508
+ sha256: 6f7da913ecad98951cadfe512af2c3979fbff752bf714da66760701e5463dd29
category: dev
optional: true
- - name: dagster-postgres
- version: 0.21.9
+ - name: graphql-core
+ version: 3.2.3
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- dagster: 1.5.9.*
- psycopg2-binary: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ typing_extensions: ">=4,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 18c5dd009bd4d99ec38003583134c9fc
- sha256: 83ad5a4eca4698b1258398bcd405665bbd8e41464124221cf477bb78bdc22100
- category: main
- optional: false
- - name: fiona
- version: 1.9.5
+ md5: 87cafe8c7638a5ac6fd8ec8fb01f1508
+ sha256: 6f7da913ecad98951cadfe512af2c3979fbff752bf714da66760701e5463dd29
+ category: dev
+ optional: true
+ - name: graphql-core
+ version: 3.2.3
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- attrs: ">=17"
- click: ">=4.0"
- click-plugins: ">=1.0"
- cligj: ">=0.5"
- gdal: ""
- importlib-metadata: ""
- libgcc-ng: ">=12"
- libgdal: ">=3.8.0,<3.9.0a0"
- libstdcxx-ng: ">=12"
- munch: ""
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- shapely: ""
- six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hf8e0aa6_1.conda
+ python: ">=3.6"
+ typing_extensions: ">=4,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 961758d24e419de785e99b038033f9ae
- sha256: 5579deb516af98c167e11b0f9250ce53e1780eade803b03ad9507fb41b295a5c
- category: main
- optional: false
- - name: google-api-core
- version: 2.14.0
+ md5: 87cafe8c7638a5ac6fd8ec8fb01f1508
+ sha256: 6f7da913ecad98951cadfe512af2c3979fbff752bf714da66760701e5463dd29
+ category: dev
+ optional: true
+ - name: graphql-relay
+ version: 3.2.0
manager: conda
platform: linux-64
dependencies:
- google-auth: ">=2.14.1,<3.0.dev0"
- googleapis-common-protos: ">=1.56.2,<2.0.dev0"
- protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- python: ">=3.7"
- requests: ">=2.18.0,<3.0.0.dev0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
+ graphql-core: ">=3.2,<3.3"
+ python: ">=3.6"
+ typing_extensions: ">=4.1,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: cebe18c719a6818849b921748aa91750
- sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
- category: main
- optional: false
- - name: google-auth-oauthlib
- version: 1.1.0
+ md5: 1b2b83e3528f8fb83007161eff51073d
+ sha256: 04f2a3383e74421441e46eaed4c32940682c1de82036fd1b6f18663d6d5447c4
+ category: dev
+ optional: true
+ - name: graphql-relay
+ version: 3.2.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- click: ">=6.0.0"
- google-auth: ">=2.15.0"
python: ">=3.6"
- requests-oauthlib: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
+ graphql-core: ">=3.2,<3.3"
+ typing_extensions: ">=4.1,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
- sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
- category: main
- optional: false
+ md5: 1b2b83e3528f8fb83007161eff51073d
+ sha256: 04f2a3383e74421441e46eaed4c32940682c1de82036fd1b6f18663d6d5447c4
+ category: dev
+ optional: true
+ - name: graphql-relay
+ version: 3.2.0
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.6"
+ graphql-core: ">=3.2,<3.3"
+ typing_extensions: ">=4.1,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_0.tar.bz2
+ hash:
+ md5: 1b2b83e3528f8fb83007161eff51073d
+ sha256: 04f2a3383e74421441e46eaed4c32940682c1de82036fd1b6f18663d6d5447c4
+ category: dev
+ optional: true
- name: graphviz
- version: 8.1.0
+ version: 9.0.0
manager: conda
platform: linux-64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- expat: ""
- fontconfig: ">=2.14.2,<3.0a0"
+ cairo: ">=1.18.0,<2.0a0"
fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
gdk-pixbuf: ">=2.42.10,<3.0a0"
gtk2: ""
gts: ">=0.7.6,<0.8.0a0"
libexpat: ">=2.5.0,<3.0a0"
libgcc-ng: ">=12"
libgd: ">=2.3.3,<2.4.0a0"
- libglib: ">=2.76.4,<3.0a0"
- librsvg: ">=2.56.1,<3.0a0"
+ libglib: ">=2.78.1,<3.0a0"
+ librsvg: ">=2.56.3,<3.0a0"
libstdcxx-ng: ">=12"
- libtool: ""
- libwebp-base: ">=1.3.1,<2.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
pango: ">=1.50.14,<2.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-9.0.0-h78e8752_1.conda
hash:
- md5: 33628e0e3de7afd2c8172f76439894cb
- sha256: 62b8a8b3bc89bc9f8d94fe88d382628f884572dc50b8041853da0ba4acaf4257
+ md5: a3f4cd4a512ec5db35ffbf25ba11f537
+ sha256: 1813800d655c120a3941d543a6fc64e3c178c737f1c84f6b7ebe1f19f27fa4fb
category: dev
optional: true
- - name: ipython
- version: 8.17.2
+ - name: graphviz
+ version: 9.0.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- __linux: ""
- decorator: ""
- exceptiongroup: ""
- jedi: ">=0.16"
- matplotlib-inline: ""
- pexpect: ">4.3"
- pickleshare: ""
- prompt_toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
- pygments: ">=2.4.0"
- python: ">=3.9"
- stack_data: ""
- traitlets: ">=5"
- typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.17.2-pyh41d4057_0.conda
- hash:
- md5: f39d0b60e268fe547f1367edbab457d4
- sha256: 31322d58f412787f5beeb01db4d16f10f8ae4e0cc2ec99fafef1e690374fe298
- category: main
- optional: false
- - name: jupyter_events
- version: 0.9.0
+ __osx: ">=10.9"
+ cairo: ">=1.18.0,<2.0a0"
+ fonts-conda-ecosystem: ""
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gtk2: ""
+ gts: ">=0.7.6,<0.8.0a0"
+ libcxx: ">=16.0.6"
+ libexpat: ">=2.5.0,<3.0a0"
+ libgd: ">=2.3.3,<2.4.0a0"
+ libglib: ">=2.78.1,<3.0a0"
+ librsvg: ">=2.56.3,<3.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/graphviz-9.0.0-hee74176_1.conda
+ hash:
+ md5: 7cd479251093c332aa9fe93cfb8f698b
+ sha256: 3080dc2f9ea708af0ea94d49348cff05884a149214a5e225e9647eff4cdac849
+ category: dev
+ optional: true
+ - name: graphviz
+ version: 9.0.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- jsonschema-with-format-nongpl: ">=4.18.0"
- python: ">=3.8"
- python-json-logger: ">=2.0.4"
- pyyaml: ">=5.3"
- referencing: ""
- rfc3339-validator: ""
- rfc3986-validator: ">=0.1.1"
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ cairo: ">=1.18.0,<2.0a0"
+ fonts-conda-ecosystem: ""
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gtk2: ""
+ gts: ">=0.7.6,<0.8.0a0"
+ libcxx: ">=16.0.6"
+ libexpat: ">=2.5.0,<3.0a0"
+ libgd: ">=2.3.3,<2.4.0a0"
+ libglib: ">=2.78.1,<3.0a0"
+ librsvg: ">=2.56.3,<3.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-9.0.0-h3face73_1.conda
hash:
- md5: 00ba25993f0dba38cf72a7224e33289f
- sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3
- category: main
- optional: false
- - name: libarrow
- version: 14.0.1
+ md5: 0a0e14b01da92c28f763123d146168a6
+ sha256: af4c47cf50fa0b9dbe39a0dfdcd26e1b1127fcf6d3cdd37cbb860c5a276aa57e
+ category: dev
+ optional: true
+ - name: greenlet
+ version: 3.0.1
manager: conda
platform: linux-64
dependencies:
- aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
- aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
- bzip2: ">=1.0.8,<2.0a0"
- glog: ">=0.6.0,<0.7.0a0"
- libabseil: ">=20230802.1,<20230803.0a0"
- libbrotlidec: ">=1.1.0,<1.2.0a0"
- libbrotlienc: ">=1.1.0,<1.2.0a0"
libgcc-ng: ">=12"
- libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
libstdcxx-ng: ">=12"
- libutf8proc: ">=2.8.0,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- orc: ">=1.9.0,<1.9.1.0a0"
- re2: ""
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-14.0.1-h4df1b6a_3_cpu.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.1-py311hb755f60_0.conda
hash:
- md5: 8f95beca2cdede6329401193609f497a
- sha256: c6595ba12a12e8e8c518daeb1bd6cdc584c41d331be2738c136347af5a606519
+ md5: 7c82abd17036c6ca0f02f2a8935c5572
+ sha256: 8470a1c15889f4830df38966e29e3a7aa4473681b7b5997d916428c929544d74
category: main
optional: false
- - name: mapclassify
- version: 2.6.1
+ - name: greenlet
+ version: 3.0.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- networkx: ">=2.7"
- numpy: ">=1.23"
- pandas: ">=1.4,!=1.5.0"
- python: ">=3.9"
- scikit-learn: ">=1.0"
- scipy: ">=1.8"
- url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.1-py311hd39e593_0.conda
hash:
- md5: 6aceae1ad4f16cf7b73ee04189947f98
- sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64
+ md5: 447a2de59f80041e6f63c222d5a5e77f
+ sha256: 872e40b28dce3abf5d3df621a99247a79d3e642eaf1db284c8a43888e1c7f74b
category: main
optional: false
- - name: nbclient
- version: 0.8.0
+ - name: greenlet
+ version: 3.0.1
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- jupyter_client: ">=6.1.12"
- jupyter_core: ">=4.12,!=5.0.*"
- nbformat: ">=5.1"
- python: ">=3.8"
- traitlets: ">=5.4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.1-py311hbaf5611_0.conda
hash:
- md5: e78da91cf428faaf05701ce8cc8f2f9b
- sha256: 4ebd237cdf4bfa5226f92d2ae78fab8dba27696909391884dc6594ca6f9df5ff
+ md5: 9136cd518f65a952b2a37c80645ef610
+ sha256: 6c8e2e5024ee26099d396a95a55c49ffe3eb8985c764ce875e95f01711f4c2a7
category: main
optional: false
- - name: recordlinkage
- version: "0.16"
+ - name: grpcio
+ version: 1.59.2
manager: conda
platform: linux-64
dependencies:
- jellyfish: ">=1"
- joblib: ""
- numexpr: ""
- numpy: ">=1.13"
- pandas: ">=1,<3"
- python: ">=3.8"
- scikit-learn: ">=1"
- scipy: ">=1"
- url: https://conda.anaconda.org/conda-forge/noarch/recordlinkage-0.16-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libgrpc: 1.59.2
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.59.2-py311ha6695c7_0.conda
hash:
- md5: 948205d11a8b036e065c46462db0632a
- sha256: 3f3c03719d6bdef41f8a08f51fb3e58a80223a321ffca413eda0c332bfa75bf0
+ md5: cb3e3f8a2ed96ee4d5d945050e82b828
+ sha256: 131e0a411e1ebf536b5528a62c57e32fb54297eddd106e002c0411dcfe3e4ea0
category: main
optional: false
- - name: tabulator
- version: 1.53.5
+ - name: grpcio
+ version: 1.59.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- boto3: ">=1.9"
- chardet: ">=3.0"
- click: ">=6.0"
- ijson: ">=3.0.3"
- jsonlines: ">=1.1"
- linear-tsv: ">=1.0"
- openpyxl: ">=2.6"
- python: ">=3"
- requests: ">=2.8"
- six: ">=1.9"
- sqlalchemy: ">=0.9.6"
- unicodecsv: ">=0.14"
- xlrd: ">=1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/tabulator-1.53.5-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ libgrpc: 1.59.2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/grpcio-1.59.2-py311hfd95bfa_0.conda
hash:
- md5: c967687222ad29a74f68e99698d08d30
- sha256: b5fb89f1154cf6b5e620c18a9c4f73c7b79afa72a7e3e840a82e225a90955335
+ md5: 7a0f85ebc948f72e8b34eac28258de2a
+ sha256: 29d6b104362caa2d2d0ac9b4b4fa13610b3e4aec2d4e277aadf3ac5fec4c6be2
category: main
optional: false
- - name: dagster-webserver
- version: 1.5.9
+ - name: grpcio
+ version: 1.59.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- click: ">=7.0,<9.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- dagster-graphql: ">=1.5.9,<1.5.10.0a0"
- python: ">=3.8"
- starlette: ""
- uvicorn-standard: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ libgrpc: 1.59.2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.59.2-py311h79dd126_0.conda
hash:
- md5: 880fa7acdbf3494cef45759bb866bb63
- sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
- category: dev
- optional: true
- - name: geopandas
- version: 0.14.1
+ md5: d595e37cbcfc8c216b435d6785a45e76
+ sha256: cdd209d4762fb8b4f225e7fd8e946d463315b0d599559a3a3d88014c315d1a4f
+ category: main
+ optional: false
+ - name: grpcio-health-checking
+ version: 1.59.2
manager: conda
platform: linux-64
dependencies:
- fiona: ">=1.8.21"
- folium: ""
- geopandas-base: 0.14.1
- mapclassify: ">=2.4.0"
- matplotlib-base: ""
- python: ">=3.9"
- rtree: ""
- xyzservices: ""
- url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.1-pyhd8ed1ab_0.conda
+ grpcio: ">=1.59.2"
+ protobuf: ">=3.12.1"
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/grpcio-health-checking-1.59.2-pyhd8ed1ab_0.conda
hash:
- md5: 6ce5f89fb1e2aa7e04d12c0008b3a745
- sha256: f3563ad6f1a55587c097337ece863e583c796c9a9df3ecb396bbfeec4ec309fb
+ md5: 8b85dc4c1a577f1823b394d5071052de
+ sha256: b77ffee9cbd731caa6eca7487286bc65551729744a89ecb3335ca220fec4061d
category: main
optional: false
- - name: google-cloud-core
- version: 2.3.3
+ - name: grpcio-health-checking
+ version: 1.59.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
- google-auth: ">=1.25.0,<3.0dev"
- grpcio: ">=1.38.0,<2.0.0dev"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ protobuf: ">=3.12.1"
+ grpcio: ">=1.59.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/grpcio-health-checking-1.59.2-pyhd8ed1ab_0.conda
hash:
- md5: a26b1fa8555cc1d2f0f7ff9985303e66
- sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
+ md5: 8b85dc4c1a577f1823b394d5071052de
+ sha256: b77ffee9cbd731caa6eca7487286bc65551729744a89ecb3335ca220fec4061d
category: main
optional: false
- - name: ipykernel
- version: 6.26.0
+ - name: grpcio-health-checking
+ version: 1.59.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- __linux: ""
- comm: ">=0.1.1"
- debugpy: ">=1.6.5"
- ipython: ">=7.23.1"
- jupyter_client: ">=6.1.12"
- jupyter_core: ">=4.12,!=5.0.*"
- matplotlib-inline: ">=0.1"
- nest-asyncio: ""
- packaging: ""
- psutil: ""
- python: ">=3.8"
- pyzmq: ">=20"
- tornado: ">=6.1"
- traitlets: ">=5.4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.26.0-pyhf8b6a83_0.conda
+ python: ">=3.5"
+ protobuf: ">=3.12.1"
+ grpcio: ">=1.59.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/grpcio-health-checking-1.59.2-pyhd8ed1ab_0.conda
hash:
- md5: 2307f71f5f0896d4b91b93e6b468abff
- sha256: 9e647454f7572101657a07820ebed294df9a6a527b041cd5e4dd98b8aa3db625
+ md5: 8b85dc4c1a577f1823b394d5071052de
+ sha256: b77ffee9cbd731caa6eca7487286bc65551729744a89ecb3335ca220fec4061d
category: main
optional: false
- - name: ipywidgets
- version: 8.1.1
+ - name: grpcio-status
+ version: 1.59.2
manager: conda
platform: linux-64
dependencies:
- comm: ">=0.1.3"
- ipython: ">=6.1.0"
- jupyterlab_widgets: ">=3.0.9,<3.1.0"
- python: ">=3.7"
- traitlets: ">=4.3.1"
- widgetsnbextension: ">=4.0.9,<4.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda
+ googleapis-common-protos: ">=1.5.5"
+ grpcio: ">=1.59.2"
+ protobuf: ">=4.21.6"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.2-pyhd8ed1ab_0.conda
hash:
- md5: 2605fae5ee27100e5f10037baebf4d41
- sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02
+ md5: 5bed0b44f99ef55c0470d2c610fbbac6
+ sha256: 9513c5dd0f7fbdba8dfe70ed4e1f7591fa1c49520e06f9f0202c514475dd4257
category: main
optional: false
- - name: libarrow-acero
- version: 14.0.1
+ - name: grpcio-status
+ version: 1.59.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libarrow: 14.0.1
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-14.0.1-h59595ed_3_cpu.conda
+ python: ">=3.6"
+ googleapis-common-protos: ">=1.5.5"
+ protobuf: ">=4.21.6"
+ grpcio: ">=1.59.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.2-pyhd8ed1ab_0.conda
hash:
- md5: c76ae01767e94ee20c974a10e4f071a7
- sha256: 9b471ca984de6028add562c68135c050b66844c1597472c6162b53004793b843
+ md5: 5bed0b44f99ef55c0470d2c610fbbac6
+ sha256: 9513c5dd0f7fbdba8dfe70ed4e1f7591fa1c49520e06f9f0202c514475dd4257
category: main
optional: false
- - name: libarrow-flight
- version: 14.0.1
+ - name: grpcio-status
+ version: 1.59.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libabseil: ">=20230802.1,<20230803.0a0"
- libarrow: 14.0.1
- libgcc-ng: ">=12"
- libgrpc: ">=1.59.2,<1.60.0a0"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libstdcxx-ng: ">=12"
- ucx: ">=1.15.0,<1.16.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-14.0.1-h120cb0d_3_cpu.conda
+ python: ">=3.6"
+ googleapis-common-protos: ">=1.5.5"
+ protobuf: ">=4.21.6"
+ grpcio: ">=1.59.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.2-pyhd8ed1ab_0.conda
hash:
- md5: 3aaef593671fe31fb2e3cc3b7def5e6a
- sha256: 96d4f0ce2072e90c21a4d6a020c50fce74e1b0afdc578a5d32430fcf179ba1a9
+ md5: 5bed0b44f99ef55c0470d2c610fbbac6
+ sha256: 9513c5dd0f7fbdba8dfe70ed4e1f7591fa1c49520e06f9f0202c514475dd4257
category: main
optional: false
- - name: libarrow-gandiva
- version: 14.0.1
+ - name: gtk2
+ version: 2.24.33
manager: conda
platform: linux-64
dependencies:
- libarrow: 14.0.1
- libgcc-ng: ">=12"
- libllvm15: ">=15.0.7,<15.1.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libstdcxx-ng: ">=12"
- libutf8proc: ">=2.8.0,<3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- re2: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-gandiva-14.0.1-hacb8726_3_cpu.conda
+ atk-1.0: ">=2.36.0"
+ cairo: ">=1.16.0,<2.0.0a0"
+ gdk-pixbuf: ">=2.42.6,<3.0a0"
+ gettext: ">=0.19.8.1,<1.0a0"
+ libgcc-ng: ">=9.4.0"
+ libglib: ">=2.70.2,<3.0a0"
+ pango: ">=1.50.3,<1.51.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2
hash:
- md5: 0bd1c4aeb8a8386da85df4bc0b21efc1
- sha256: 9b5d9b9a4fed1171a92795b329bc26b106471877ff5f80942ff1ad84bff7f3e2
- category: main
- optional: false
- - name: libparquet
- version: 14.0.1
+ md5: 957a0255ab58aaf394a91725d73ab422
+ sha256: 66d189ec36d67309fa3eb52d14d77b82359c10303c400eecc14f8eaca5939b87
+ category: dev
+ optional: true
+ - name: gtk2
+ version: 2.24.33
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libarrow: 14.0.1
- libgcc-ng: ">=12"
- libstdcxx-ng: ">=12"
- libthrift: ">=0.19.0,<0.19.1.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-14.0.1-h352af49_3_cpu.conda
+ atk-1.0: ">=2.36.0"
+ cairo: ">=1.16.0,<2.0.0a0"
+ gdk-pixbuf: ">=2.42.6,<3.0a0"
+ gettext: ">=0.19.8.1,<1.0a0"
+ libglib: ">=2.70.2,<3.0a0"
+ pango: ">=1.50.3,<1.51.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h7c1209e_2.tar.bz2
hash:
- md5: 5e2f5615862bba1318a11e97d6a59d56
- sha256: 96e192584e790a8bc010084c829de0aaae357979aa3b80b50d36f72179d8029f
- category: main
- optional: false
- - name: nbconvert-core
- version: 7.11.0
+ md5: 307614630946527e302b7dd042a5cfa2
+ sha256: 4f5f5116c5c81a4bfcc01ea9eb9e489346a87d7248eb44963f6552ae0fb3a984
+ category: dev
+ optional: true
+ - name: gtk2
+ version: 2.24.33
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- beautifulsoup4: ""
- bleach: ""
- defusedxml: ""
- entrypoints: ">=0.2.2"
- jinja2: ">=3.0"
- jupyter_core: ">=4.7"
- jupyterlab_pygments: ""
- markupsafe: ">=2.0"
- mistune: ">=2.0.3,<4"
- nbclient: ">=0.5.0"
- nbformat: ">=5.1"
- packaging: ""
- pandocfilters: ">=1.4.1"
- pygments: ">=2.4.1"
- python: ">=3.8"
- tinycss2: ""
- traitlets: ">=5.0"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
+ atk-1.0: ">=2.36.0"
+ cairo: ">=1.16.0,<2.0.0a0"
+ gdk-pixbuf: ">=2.42.6,<3.0a0"
+ gettext: ">=0.19.8.1,<1.0a0"
+ libglib: ">=2.70.2,<3.0a0"
+ pango: ">=1.50.3,<1.51.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h57013de_2.tar.bz2
hash:
- md5: d59e0cb1ca993f8f910cfdf393232acf
- sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
- category: main
- optional: false
- - name: pygraphviz
- version: "1.11"
+ md5: 144fb77338d90012ebe80d3dd13fc725
+ sha256: 4bebd9809bb7e76b46af054f594eda5f280a796b7ec7f5870bd185ad5b3da338
+ category: dev
+ optional: true
+ - name: gts
+ version: 0.7.6
manager: conda
platform: linux-64
dependencies:
- graphviz: ">=8.1.0,<9.0a0"
libgcc-ng: ">=12"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.11-py311h72a77b7_1.conda
+ libglib: ">=2.76.3,<3.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda
hash:
- md5: 7044cd923985abb6e3b976e5ac0542b8
- sha256: 8c7f3a59935089169920f052a53d7a732034967ef46c81dc7385dff47985bc2c
+ md5: 4d8df0b0db060d33c9a702ada998a8fe
+ sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b
category: dev
optional: true
- - name: tableschema
- version: 1.19.3
+ - name: gts
+ version: 0.7.6
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- cached-property: ">=1.5"
- click: ">=3.3"
- isodate: ">=0.5.4"
- jsonschema: ">=2.5"
- python: ""
- python-dateutil: ">=2.4"
- requests: ">=2.5"
- rfc3986: ">=1.1.0"
- six: ">=1.9"
- tabulator: ">=1.29"
- unicodecsv: ">=0.14"
- url: https://conda.anaconda.org/conda-forge/noarch/tableschema-1.19.3-pyh9f0ad1d_0.tar.bz2
+ libcxx: ">=15.0.7"
+ libglib: ">=2.76.3,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda
hash:
- md5: 57f70b39e74b4af667775c0a07f35cc3
- sha256: bc96dd4ee4d7ee5d6753158ba50aacd08c80a657847d6771cc4c56da538437e7
- category: main
- optional: false
- - name: datapackage
- version: 1.15.2
+ md5: 848cc963fcfbd063c7a023024aa3bec0
+ sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314
+ category: dev
+ optional: true
+ - name: gts
+ version: 0.7.6
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ libcxx: ">=15.0.7"
+ libglib: ">=2.76.3,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda
+ hash:
+ md5: 21b4dd3098f63a74cf2aa9159cbef57d
+ sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba
+ category: dev
+ optional: true
+ - name: h11
+ version: 0.14.0
manager: conda
platform: linux-64
dependencies:
- cchardet: ">=1.0"
- click: ">=6.7"
- jsonpointer: ">=1.10"
- jsonschema: ">=2.5"
- python: ""
- requests: ">=2.8"
- six: ">=1.10"
- tableschema: ">=1.1.0"
- tabulator: ">=1.24.2"
- unicodecsv: ">=0.14"
- url: https://conda.anaconda.org/conda-forge/noarch/datapackage-1.15.2-pyh44b312d_0.tar.bz2
+ python: ">=3"
+ typing_extensions: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3f1a6895ab9c423cf59de7c46e56a824
- sha256: 3344e3c1ea6a1925504f7cbfba6f4be6521465baa2de6bac86769528ea1c3d0d
+ md5: b21ed0883505ba1910994f1df031a428
+ sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085
category: main
optional: false
- - name: google-cloud-storage
- version: 2.13.0
+ - name: h11
+ version: 0.14.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- google-api-core: ">=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
- google-auth: ">=2.23.3,<3.0dev"
- google-cloud-core: ">=2.3.0,<3.0dev"
- google-crc32c: ">=1.0,<2.0dev"
- google-resumable-media: ">=2.6.0"
- protobuf: <5.0.0dev
- python: ">=3.6"
- requests: ">=2.18.0,<3.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
+ typing_extensions: ""
+ python: ">=3"
+ url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2
+ hash:
+ md5: b21ed0883505ba1910994f1df031a428
+ sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085
+ category: main
+ optional: false
+ - name: h11
+ version: 0.14.0
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ typing_extensions: ""
+ python: ">=3"
+ url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: fa7d4b2576d98b63d8ca84c76052eb95
- sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
+ md5: b21ed0883505ba1910994f1df031a428
+ sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085
category: main
optional: false
- - name: jupyter_console
- version: 6.6.3
+ - name: h2
+ version: 4.1.0
manager: conda
platform: linux-64
dependencies:
- ipykernel: ">=6.14"
- ipython: ""
- jupyter_client: ">=7.0.0"
- jupyter_core: ">=4.12,!=5.0.*"
- prompt_toolkit: ">=3.0.30"
- pygments: ""
- python: ">=3.7"
- pyzmq: ">=17"
- traitlets: ">=5.4"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda
+ hpack: ">=4.0,<5"
+ hyperframe: ">=6.0,<7"
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7cf6f52a66f8e3cd9d8b6c231262dcab
- sha256: 4e51764d5fe2f6e43d83bcfbcf8b4da6569721bf82eaf4d647be8717cd6be75a
+ md5: b748fbf7060927a6e82df7cb5ee8f097
+ sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
category: main
optional: false
- - name: jupyter_server
- version: 2.10.1
+ - name: h2
+ version: 4.1.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- anyio: ">=3.1.0"
- argon2-cffi: ""
- jinja2: ""
- jupyter_client: ">=7.4.4"
- jupyter_core: ">=4.12,!=5.0.*"
- jupyter_events: ">=0.9.0"
- jupyter_server_terminals: ""
- nbconvert-core: ">=6.4.4"
- nbformat: ">=5.3.0"
- overrides: ""
- packaging: ""
- prometheus_client: ""
- python: ">=3.8"
- pyzmq: ">=24"
- send2trash: ">=1.8.2"
- terminado: ">=0.8.3"
- tornado: ">=6.2.0"
- traitlets: ">=5.6.0"
- websocket-client: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.1-pyhd8ed1ab_0.conda
+ python: ">=3.6.1"
+ hpack: ">=4.0,<5"
+ hyperframe: ">=6.0,<7"
+ url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7d15498584d83de3b357425e37086397
- sha256: b8b55ee57785b39a9096884bfd1da3858da8f27764572321d51a3dd0a990de86
+ md5: b748fbf7060927a6e82df7cb5ee8f097
+ sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
category: main
optional: false
- - name: libarrow-dataset
- version: 14.0.1
+ - name: h2
+ version: 4.1.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libgcc-ng: ">=12"
- libparquet: 14.0.1
- libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-14.0.1-h59595ed_3_cpu.conda
+ python: ">=3.6.1"
+ hpack: ">=4.0,<5"
+ hyperframe: ">=6.0,<7"
+ url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 39b1db7f15fb88394e57caf9ffc653f5
- sha256: 86aefe875eb8110a774a6ad6da94e868ed837ae054e630adec391eab7c559af4
+ md5: b748fbf7060927a6e82df7cb5ee8f097
+ sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
category: main
optional: false
- - name: libarrow-flight-sql
- version: 14.0.1
+ - name: h3-py
+ version: 3.7.6
manager: conda
platform: linux-64
dependencies:
- libarrow: 14.0.1
- libarrow-flight: 14.0.1
libgcc-ng: ">=12"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-sql-14.0.1-h61ff412_3_cpu.conda
+ numpy: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/h3-py-3.7.6-py311hb755f60_1.conda
hash:
- md5: bee925cf81e536f064c5fb58e770c102
- sha256: da8646f41e41d0808e28059e660fcac9048c8f0e1055bdcef6ccbd2c24036eb1
+ md5: 9a688ad1ba707128952ab37ee99ad78d
+ sha256: 3b1f22bae640b2769474e837ef750fca806a4ed6ceb1f096976d4c86ab30f47a
category: main
optional: false
- - name: nbconvert-pandoc
- version: 7.11.0
+ - name: h3-py
+ version: 3.7.6
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- nbconvert-core: 7.11.0
- pandoc: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ numpy: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/h3-py-3.7.6-py311hdf8f085_1.conda
hash:
- md5: 51bd005efab7e5c5c2af2570327bd213
- sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ md5: 491ef24fdb3c14d9c8d22efc62a181fb
+ sha256: 4803456649a538b04b0860e69c3222dead62c364c4af2ccd4ae89d78368f2a2f
category: main
optional: false
- - name: qtconsole-base
- version: 5.5.1
+ - name: h3-py
+ version: 3.7.6
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- ipykernel: ">=4.1"
- jupyter_client: ">=4.1"
- jupyter_core: ""
- packaging: ""
- pygments: ""
- python: ">=3.8"
- qtpy: ">=2.4.0"
- traitlets: ""
- url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda
+ libcxx: ">=15.0.7"
+ numpy: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/h3-py-3.7.6-py311ha891d26_1.conda
hash:
- md5: 5528a3eda283b421055c89bface19a1c
- sha256: e81a294941a598aabfd9462cf9aaa3b3e2c04996420f82494bdc13233de8ca70
+ md5: 07e907cca837e6a36842206cc249d5a2
+ sha256: 78435b66669f58d828ce390efaf36adc6845ce3c4e04fe1376c0b58d6b92377a
category: main
optional: false
- - name: gcsfs
- version: 2023.10.0
+ - name: harfbuzz
+ version: 8.3.0
manager: conda
platform: linux-64
dependencies:
- aiohttp: ""
- decorator: ">4.1.2"
- fsspec: 2023.10.0
- google-auth: ">=1.2"
- google-auth-oauthlib: ""
- google-cloud-storage: ">1.40"
- python: ">=3.7"
- requests: ""
- url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.10.0-pyhd8ed1ab_0.conda
+ cairo: ">=1.18.0,<2.0a0"
+ freetype: ">=2.12.1,<3.0a0"
+ graphite2: ""
+ icu: ">=73.2,<74.0a0"
+ libgcc-ng: ">=12"
+ libglib: ">=2.78.1,<3.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda
hash:
- md5: 500521931bdcc0f6d19c1c2e2ab4a5d9
- sha256: dd7559c5297359e475a125742e9cb30938579e93a17ce7537af64a04c98407a5
- category: main
- optional: false
- - name: jupyter-lsp
- version: 2.2.0
+ md5: 5a6f6c00ef982a9bc83558d9ac8f64a0
+ sha256: 4b55aea03b18a4084b750eee531ad978d4a3690f63019132c26c6ad26bbe3aed
+ category: dev
+ optional: true
+ - name: harfbuzz
+ version: 8.3.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- importlib-metadata: ">=4.8.3"
- jupyter_server: ">=1.1.2"
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ cairo: ">=1.18.0,<2.0a0"
+ freetype: ">=2.12.1,<3.0a0"
+ graphite2: ""
+ icu: ">=73.2,<74.0a0"
+ libcxx: ">=16.0.6"
+ libglib: ">=2.78.1,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-8.3.0-hf45c392_0.conda
hash:
- md5: 38589f4104d11f2a59ff01a9f4e3bfb3
- sha256: 16fc7b40024adece716ba7227e5c123a2deccc13f946a10d9a3270493908d11c
- category: main
- optional: false
- - name: jupyter-resource-usage
- version: 1.0.1
+ md5: 41d890485f909e4ecdc608741718c75e
+ sha256: c6ea14e4f4869bc78b27276c09832af845dfa415585362ed6064e37a1b5fe9c5
+ category: dev
+ optional: true
+ - name: harfbuzz
+ version: 8.3.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- jupyter_server: ">=2.0.0,<3"
- psutil: ">=5.6.0,<6"
- python: ">=3.8"
- pyzmq: ">=19"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-1.0.1-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ cairo: ">=1.18.0,<2.0a0"
+ freetype: ">=2.12.1,<3.0a0"
+ graphite2: ""
+ icu: ">=73.2,<74.0a0"
+ libcxx: ">=16.0.6"
+ libglib: ">=2.78.1,<3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-8.3.0-h8f0ba13_0.conda
hash:
- md5: b079fd1b0ee75199a042537d036b496f
- sha256: 076d6cc25e0338e725a653eb0bb468ba920e49449143335696581fe98f86853b
+ md5: 71e7f9ba27feae122733bb9f1bfe594c
+ sha256: 55e95aee9e5be7ada5a1cccedf1bb74c1362a7504cb0251fb48bcfa8bbd7cae3
category: dev
optional: true
- - name: jupyterlab_server
- version: 2.25.1
+ - name: hdf4
+ version: 4.2.15
manager: conda
platform: linux-64
dependencies:
- babel: ">=2.10"
- importlib-metadata: ">=4.8.3"
- jinja2: ">=3.0.3"
- json5: ">=0.9.0"
- jsonschema: ">=4.18"
- jupyter_server: ">=1.21,<3"
- packaging: ">=21.3"
- python: ">=3.8"
- requests: ">=2.31"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda
+ hash:
+ md5: bd77f8da987968ec3927990495dc22e4
+ sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684
+ category: main
+ optional: false
+ - name: hdf4
+ version: 4.2.15
+ manager: conda
+ platform: osx-64
+ dependencies:
+ libcxx: ">=15.0.7"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda
+ hash:
+ md5: 7ce543bf38dbfae0de9af112ee178af2
+ sha256: 8c767cc71226e9eb62649c903c68ba73c5f5e7e3696ec0319d1f90586cebec7d
+ category: main
+ optional: false
+ - name: hdf4
+ version: 4.2.15
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ libcxx: ">=15.0.7"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
hash:
- md5: 5cf15f8fd42c77af4eb1611fe614df2f
- sha256: 5f373d9adc11b6d49bee06a4c6bea9623fff1d2a0b798edc2e3f594680aa18f3
+ md5: ff5d749fd711dc7759e127db38005924
+ sha256: c3b01e3c3fe4ca1c4d28c287eaa5168a4f2fd3ffd76690082ac919244c22fa90
category: main
optional: false
- - name: libarrow-substrait
- version: 14.0.1
+ - name: hdf5
+ version: 1.14.2
manager: conda
platform: linux-64
dependencies:
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libarrow-dataset: 14.0.1
+ libaec: ">=1.0.6,<2.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
libgcc-ng: ">=12"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libgfortran-ng: ""
+ libgfortran5: ">=12.3.0"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-14.0.1-h61ff412_3_cpu.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.2-nompi_h4f84152_100.conda
hash:
- md5: d7f6d75fd346c05c0c836326b72a8500
- sha256: 6ac78ba3f3fcb5128dc3c0cc907d418f9edd74456b4712c2af843b35fe11585c
+ md5: 2de6a9bc8083b49f09b2f6eb28d3ba3c
+ sha256: f70f18291f912ba019cbb736bb87b6487021154733cd109147a6d9672790b6b8
category: main
optional: false
- - name: nbconvert
- version: 7.11.0
+ - name: hdf5
+ version: 1.14.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- nbconvert-core: 7.11.0
- nbconvert-pandoc: 7.11.0
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
+ libaec: ">=1.0.6,<2.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
+ libcxx: ">=15.0.7"
+ libgfortran: 5.*
+ libgfortran5: ">=12.3.0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.2-nompi_hedada53_100.conda
hash:
- md5: e492b36cbea1c83d1663fa73a8abff9b
- sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
+ md5: 2b1d4f355b60eb10c5cb435b9f0e664f
+ sha256: 08ab97d63ab4be60c92d3f5931effc565ae6ee0cd686eba81b9d20daf5f181ff
category: main
optional: false
- - name: notebook-shim
- version: 0.2.3
+ - name: hdf5
+ version: 1.14.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- jupyter_server: ">=1.8,<3"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
+ libaec: ">=1.0.6,<2.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
+ libcxx: ">=15.0.7"
+ libgfortran: 5.*
+ libgfortran5: ">=12.3.0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.2-nompi_h3aba7b3_100.conda
hash:
- md5: 67e0fe74c156267d9159e9133df7fd37
- sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538
+ md5: 842c5b010b219058098ebfe5aa5891b9
+ sha256: 2749910e21a7d1f88a81dc4709fc3565a4a3954eadb4409e7a5be1fc13a5b7ca
category: main
optional: false
- - name: jupyterlab
- version: 4.0.8
+ - name: hpack
+ version: 4.0.0
manager: conda
platform: linux-64
dependencies:
- async-lru: ">=1.0.0"
- importlib_metadata: ">=4.8.3"
- importlib_resources: ">=1.4"
- ipykernel: ""
- jinja2: ">=3.0.3"
- jupyter-lsp: ">=2.0.0"
- jupyter_core: ""
- jupyter_server: ">=2.4.0,<3"
- jupyterlab_server: ">=2.19.0,<3"
- notebook-shim: ">=0.2"
- packaging: ""
- python: ">=3.8"
- tomli: ""
- tornado: ">=6.2.0"
- traitlets: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.8-pyhd8ed1ab_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 299796efa08ad91c602fa4d0c5ecc86f
- sha256: fe5ca6c8bbda69af332593d7f9592aa19d9ab98d34c647ed0d8fbbae88b29a95
- category: dev
- optional: true
- - name: pyarrow
- version: 14.0.1
+ md5: 914d6646c4dbb1fd3ff539830a12fd71
+ sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
+ category: main
+ optional: false
+ - name: hpack
+ version: 4.0.0
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libarrow-dataset: 14.0.1
- libarrow-flight: 14.0.1
- libarrow-flight-sql: 14.0.1
- libarrow-gandiva: 14.0.1
- libarrow-substrait: 14.0.1
- libgcc-ng: ">=12"
- libparquet: 14.0.1
- libstdcxx-ng: ">=12"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-14.0.1-py311h39c9aba_3_cpu.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
hash:
- md5: b5aa577bb166417b14e9beba61816680
- sha256: 2e9686e59b87f519409ab726dbfaa08a641e8a6186f97b4a0b1a6d0175c2761d
+ md5: 914d6646c4dbb1fd3ff539830a12fd71
+ sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
category: main
optional: false
- - name: notebook
- version: 7.0.6
+ - name: hpack
+ version: 4.0.0
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- jupyter_server: ">=2.4.0,<3"
- jupyterlab: ">=4.0.7,<5"
- jupyterlab_server: ">=2.22.1,<3"
- notebook-shim: ">=0.2,<0.3"
- python: ">=3.8"
- tornado: ">=6.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.6-pyhd8ed1ab_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
hash:
- md5: d60881c78a54cbf8042ae719f1f77a50
- sha256: 5259ad2fb47300407dafa6ea5e78085a2c8de8dcdbfbaa58592bf2677d7187a9
+ md5: 914d6646c4dbb1fd3ff539830a12fd71
+ sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
category: main
optional: false
- - name: jupyter
- version: 1.0.0
+ - name: html5lib
+ version: "1.1"
manager: conda
platform: linux-64
dependencies:
- ipykernel: ""
- ipywidgets: ""
- jupyter_console: ""
- nbconvert: ""
- notebook: ""
- python: ">=3.6"
- qtconsole-base: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda
+ python: ""
+ six: ">=1.9"
+ webencodings: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 056b8cc3d9b03f54fc49e6d70d7dc359
- sha256: 308b521b149e7a1739f717538b929bc2d87b9001b94f13ee8baa939632a86150
+ md5: b2355343d6315c892543200231d7154a
+ sha256: 9ad06446fe9847e86cb20d220bf11614afcd2cbe9f58096f08d5d4018877bee4
category: main
optional: false
- - name: sphinx-autoapi
- version: 3.0.0
+ - name: html5lib
+ version: "1.1"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- anyascii: ""
- astroid: ">=2.7"
- jinja2: ""
- python: ">=3.8"
- pyyaml: ""
- sphinx: ">=6.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-3.0.0-pyhd8ed1ab_0.conda
+ python: ""
+ webencodings: ""
+ six: ">=1.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 736b53813c2b9582b1345462d8ca66e7
- sha256: 61d127c9e32176ac75a24b85c4d1ba3e8cf7e638884331429752a2da6a3ac63a
+ md5: b2355343d6315c892543200231d7154a
+ sha256: 9ad06446fe9847e86cb20d220bf11614afcd2cbe9f58096f08d5d4018877bee4
category: main
optional: false
- - name: sphinx-basic-ng
- version: 1.0.0b2
+ - name: html5lib
+ version: "1.1"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- sphinx: ">=4.0,<8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_1.conda
+ python: ""
+ webencodings: ""
+ six: ">=1.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: a631f5c7b7f5045448f966ad71aa2881
- sha256: 3c7a6a8bb6c9921741ef940cd61ff1694beac3c95ca7e9ad4b0ea32e2f6ac2fa
+ md5: b2355343d6315c892543200231d7154a
+ sha256: 9ad06446fe9847e86cb20d220bf11614afcd2cbe9f58096f08d5d4018877bee4
category: main
optional: false
- - name: furo
- version: 2023.9.10
+ - name: httpcore
+ version: 1.0.2
manager: conda
platform: linux-64
dependencies:
- beautifulsoup4: ""
- pygments: ">=2.7"
- python: ">=3.7"
- sphinx: ">=6.0,<8.0"
- sphinx-basic-ng: ""
- url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.9.10-pyhd8ed1ab_0.conda
+ anyio: ">=3.0,<5.0"
+ certifi: ""
+ h11: ">=0.13,<0.15"
+ h2: ">=3,<5"
+ python: ">=3.8"
+ sniffio: 1.*
+ url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.2-pyhd8ed1ab_0.conda
hash:
- md5: 0dcfacf6d3e49f2957c69c81356cf892
- sha256: 95f69e36078dd598f5b28b2e0d7ff94946170af9f990b7474ee5501378203bc3
+ md5: 48995b2157996a94f50fa483d884e0a3
+ sha256: b9a2ec0ecdaf54d67caf73d8a94c8ddba62f482093a5adbfb89c2ce020d64475
category: main
optional: false
- - name: sphinx-issues
- version: 1.2.0
+ - name: httpcore
+ version: 1.0.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ""
- sphinx: ""
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-issues-1.2.0-py_0.tar.bz2
+ certifi: ""
+ python: ">=3.8"
+ sniffio: 1.*
+ h2: ">=3,<5"
+ anyio: ">=3.0,<5.0"
+ h11: ">=0.13,<0.15"
+ url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.2-pyhd8ed1ab_0.conda
+ hash:
+ md5: 48995b2157996a94f50fa483d884e0a3
+ sha256: b9a2ec0ecdaf54d67caf73d8a94c8ddba62f482093a5adbfb89c2ce020d64475
+ category: main
+ optional: false
+ - name: httpcore
+ version: 1.0.2
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ certifi: ""
+ python: ">=3.8"
+ sniffio: 1.*
+ h2: ">=3,<5"
+ anyio: ">=3.0,<5.0"
+ h11: ">=0.13,<0.15"
+ url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.2-pyhd8ed1ab_0.conda
hash:
- md5: 2d5c0dddca9bb724dcf5a3fb295a2266
- sha256: 9d98392bff12194c45c6f13c6c93d0b15b2fe489de5746654e732009fce41a86
+ md5: 48995b2157996a94f50fa483d884e0a3
+ sha256: b9a2ec0ecdaf54d67caf73d8a94c8ddba62f482093a5adbfb89c2ce020d64475
category: main
optional: false
- - name: sphinx-reredirects
- version: 0.1.2
+ - name: httptools
+ version: 0.6.1
manager: conda
platform: linux-64
dependencies:
- python: ">=3.6"
- sphinx: ""
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-reredirects-0.1.2-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py311h459d7ec_0.conda
hash:
- md5: 30e618adaaf11aa4a98912913c62a12b
- sha256: bcc792d6fbfc06298d23e98216d1aeca95eb69005ce8176094128990aed1f11c
- category: main
- optional: false
- - name: sphinxcontrib-applehelp
- version: 1.0.7
+ md5: 97b41332ad07a69a1ebb06e26aed50c8
+ sha256: 32dc1c03971727098847564d7be589d16d48df233ccee79d369bb79f4e2fee9c
+ category: dev
+ optional: true
+ - name: httptools
+ version: 0.6.1
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/httptools-0.6.1-py311he705e18_0.conda
hash:
- md5: aebfabcb60c33a89c1f9290cab49bc93
- sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3
- category: main
- optional: false
- - name: sphinxcontrib-bibtex
- version: 2.6.1
+ md5: 18bfe027e8c0a8a54aeb6794359c977e
+ sha256: ed33c069ccfb3b1bdf396bbb2280aabeb36273054e9d5ad249639ba4e6820822
+ category: dev
+ optional: true
+ - name: httptools
+ version: 0.6.1
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py311h05b510d_0.conda
+ hash:
+ md5: be46012a5eafd7944c8e72dc129464c7
+ sha256: 7fa4b77928382b5d187380a437435f8c6726253387742a1944db03407b8c7a67
+ category: dev
+ optional: true
+ - name: httpx
+ version: 0.25.2
manager: conda
platform: linux-64
dependencies:
- dataclasses: ""
- docutils: ">=0.8,!=0.18.*,!=0.19.*"
- importlib_metadata: ">=3.6"
- pybtex: ">=0.24"
- pybtex-docutils: ">=1"
- python: ">=3.7"
- sphinx: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.1-pyhd8ed1ab_1.conda
+ anyio: ""
+ certifi: ""
+ httpcore: 1.*
+ idna: ""
+ python: ">=3.8"
+ sniffio: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.25.2-pyhd8ed1ab_0.conda
hash:
- md5: 109cf3a7c844834267057e80b4f4eae3
- sha256: 2d04d3e165c0959d995faab5ccd5fa3581016c02fb94df4eb5d0e0a89fe9ff50
+ md5: 80e638907ed5b5c5109c44660464d1e4
+ sha256: 511f591643f9e67470d9217698a78dd40f3e6178798e79060c2142807e1d4861
category: main
optional: false
- - name: sphinxcontrib-devhelp
- version: 1.0.5
+ - name: httpx
+ version: 0.25.2
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda
+ certifi: ""
+ idna: ""
+ anyio: ""
+ sniffio: ""
+ python: ">=3.8"
+ httpcore: 1.*
+ url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.25.2-pyhd8ed1ab_0.conda
hash:
- md5: ebf08f5184d8eaa486697bc060031953
- sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672
+ md5: 80e638907ed5b5c5109c44660464d1e4
+ sha256: 511f591643f9e67470d9217698a78dd40f3e6178798e79060c2142807e1d4861
category: main
optional: false
- - name: sphinxcontrib-htmlhelp
- version: 2.0.4
+ - name: httpx
+ version: 0.25.2
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda
+ certifi: ""
+ idna: ""
+ anyio: ""
+ sniffio: ""
+ python: ">=3.8"
+ httpcore: 1.*
+ url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.25.2-pyhd8ed1ab_0.conda
hash:
- md5: a9a89000dfd19656ad004b937eeb6828
- sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5
+ md5: 80e638907ed5b5c5109c44660464d1e4
+ sha256: 511f591643f9e67470d9217698a78dd40f3e6178798e79060c2142807e1d4861
category: main
optional: false
- - name: sphinxcontrib-qthelp
- version: 1.0.6
+ - name: humanfriendly
+ version: "10.0"
manager: conda
platform: linux-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda
hash:
- md5: cf5c9649272c677a964a7313279e3a9b
- sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471
+ md5: 2ed1fe4b9079da97c44cfe9c2e5078fd
+ sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1
category: main
optional: false
- - name: sphinx
- version: 7.2.6
+ - name: humanfriendly
+ version: "10.0"
manager: conda
- platform: linux-64
+ platform: osx-64
dependencies:
- alabaster: ">=0.7,<0.8"
- babel: ">=2.9"
- colorama: ">=0.4.5"
- docutils: ">=0.18.1,<0.21"
- imagesize: ">=1.3"
- importlib-metadata: ">=4.8"
- jinja2: ">=3.0"
- packaging: ">=21.0"
- pygments: ">=2.14"
- python: ">=3.9"
- requests: ">=2.25.0"
- snowballstemmer: ">=2.0"
- sphinxcontrib-applehelp: ""
- sphinxcontrib-devhelp: ""
- sphinxcontrib-htmlhelp: ">=2.0.0"
- sphinxcontrib-jsmath: ""
- sphinxcontrib-qthelp: ""
- sphinxcontrib-serializinghtml: ">=1.1.9"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda
hash:
- md5: bbfd1120d1824d2d073bc65935f0e4c0
- sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42
+ md5: 2ed1fe4b9079da97c44cfe9c2e5078fd
+ sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1
category: main
optional: false
- - name: sphinxcontrib-serializinghtml
- version: 1.1.9
+ - name: humanfriendly
+ version: "10.0"
manager: conda
- platform: linux-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda
hash:
- md5: 0612e497d7860728f2cda421ea2aec09
- sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d
+ md5: 2ed1fe4b9079da97c44cfe9c2e5078fd
+ sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1
category: main
optional: false
- - name: aws-c-common
- version: 0.9.8
+ - name: hupper
+ version: "1.12"
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.8-h10d778d_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/hupper-1.12-pyhd8ed1ab_0.conda
hash:
- md5: 1835ae87bcb96111220344774a930f02
- sha256: 4aac7a22b208c13707297d8e08c62569186f4dcc2ed3cd01ffa79af4576e3dcc
+ md5: 2654ff96e839bc699e5c3780689a596b
+ sha256: 0b172391000a008029f32e4a34d37d79b114d4ea3b6948d2be72a78568fdadcd
category: main
optional: false
- - name: bzip2
- version: 1.0.8
+ - name: hupper
+ version: "1.12"
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h10d778d_5.conda
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/hupper-1.12-pyhd8ed1ab_0.conda
hash:
- md5: 6097a6ca9ada32699b5fc4312dd6ef18
- sha256: 61fb2b488928a54d9472113e1280b468a309561caa54f33825a3593da390b242
+ md5: 2654ff96e839bc699e5c3780689a596b
+ sha256: 0b172391000a008029f32e4a34d37d79b114d4ea3b6948d2be72a78568fdadcd
category: main
optional: false
- - name: c-ares
- version: 1.21.0
+ - name: hupper
+ version: "1.12"
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.21.0-h10d778d_0.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/hupper-1.12-pyhd8ed1ab_0.conda
hash:
- md5: 88426162f781739069a6bd178841ed5d
- sha256: 7450d861c07e74b10dfcf3ba680b384cf22f1c2dd34c3eba763ab5920376bf79
+ md5: 2654ff96e839bc699e5c3780689a596b
+ sha256: 0b172391000a008029f32e4a34d37d79b114d4ea3b6948d2be72a78568fdadcd
category: main
optional: false
- - name: ca-certificates
- version: 2023.7.22
+ - name: hyperframe
+ version: 6.0.1
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2023.7.22-h8857fd0_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: bf2c54c18997bf3542af074c10191771
- sha256: 27de15e18a12117e83ac1eb8a8e52eb65731cc7f0b607a7922206a15e2460c7b
+ md5: 9f765cbfab6870c8435b9eefecd7a1f4
+ sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
category: main
optional: false
- - name: font-ttf-dejavu-sans-mono
- version: "2.37"
+ - name: hyperframe
+ version: 6.0.1
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 0c96522c6bdaed4b1566d11387caaf45
- sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
+ md5: 9f765cbfab6870c8435b9eefecd7a1f4
+ sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
category: main
optional: false
- - name: font-ttf-inconsolata
- version: "3.000"
+ - name: hyperframe
+ version: 6.0.1
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 34893075a5c9e55cdafac56607368fc6
- sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
+ md5: 9f765cbfab6870c8435b9eefecd7a1f4
+ sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
category: main
optional: false
- - name: font-ttf-source-code-pro
- version: "2.038"
+ - name: hypothesis
+ version: 6.91.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ platform: linux-64
+ dependencies:
+ attrs: ">=19.2.0"
+ backports.zoneinfo: ">=0.2.1"
+ click: ">=7.0"
+ exceptiongroup: ">=1.0.0rc8"
+ python: ">=3.8"
+ setuptools: ""
+ sortedcontainers: ">=2.1.0,<3.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda
hash:
- md5: 4d59c254e01d9cde7957100457e2d5fb
- sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
+ md5: 06da22edc102acb39fcf951b4872f754
+ sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117
category: main
optional: false
- - name: font-ttf-ubuntu
- version: "0.83"
+ - name: hypothesis
+ version: 6.91.0
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2
+ dependencies:
+ setuptools: ""
+ python: ">=3.8"
+ click: ">=7.0"
+ attrs: ">=19.2.0"
+ sortedcontainers: ">=2.1.0,<3.0.0"
+ backports.zoneinfo: ">=0.2.1"
+ exceptiongroup: ">=1.0.0rc8"
+ url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda
hash:
- md5: 19410c3df09dfb12d1206132a1d357c5
- sha256: 470d5db54102bd51dbb0c5990324a2f4a0bc976faa493b22193338adb9882e2e
+ md5: 06da22edc102acb39fcf951b4872f754
+ sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117
category: main
optional: false
- - name: fribidi
- version: 1.0.10
+ - name: hypothesis
+ version: 6.91.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2
+ platform: osx-arm64
+ dependencies:
+ setuptools: ""
+ python: ">=3.8"
+ click: ">=7.0"
+ attrs: ">=19.2.0"
+ sortedcontainers: ">=2.1.0,<3.0.0"
+ backports.zoneinfo: ">=0.2.1"
+ exceptiongroup: ">=1.0.0rc8"
+ url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda
hash:
- md5: f1c6b41e0f56998ecd9a3e210faa1dc0
- sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5
- category: dev
- optional: true
- - name: giflib
- version: 5.2.1
+ md5: 06da22edc102acb39fcf951b4872f754
+ sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117
+ category: main
+ optional: false
+ - name: icu
+ version: "73.2"
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hb7f2c08_3.conda
+ platform: linux-64
+ dependencies:
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda
hash:
- md5: aca150b0186836f893ebac79019e5498
- sha256: 47515e0874bcf67e438e1d5d093b074c1781f055067195f0d00a7790a56d446d
+ md5: cc47e1facc155f91abd89b11e48e72ff
+ sha256: e12fd90ef6601da2875ebc432452590bc82a893041473bc1c13ef29001a73ea8
category: main
optional: false
- name: icu
@@ -8427,10744 +8133,11376 @@ package:
sha256: f66362dc36178ac9b7c7a9b012948a9d2d050b3debec24bbd94aadbc44854185
category: main
optional: false
- - name: json-c
- version: "0.17"
+ - name: icu
+ version: "73.2"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.17-h8e11ae5_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
hash:
- md5: 266d2e4ebbf37091c8322937392bb540
- sha256: 2a493095fe1292108ff1799a1b47ababe82d844bfa3abcf2252676c1017a1e04
+ md5: 8521bd47c0e11c5902535bb1a17c565f
+ sha256: ff9cd0c6cd1349954c801fb443c94192b637e1b414514539f3c49c56a39f51b1
category: main
optional: false
- - name: libboost-headers
- version: 1.82.0
+ - name: identify
+ version: 2.5.32
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.82.0-h694c41f_6.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ ukkonen: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda
hash:
- md5: 26a7214f82c75126cbd6d6a8e6792b31
- sha256: 84dae029e113178efa697fbbe6ff7aa270974f316fbf208a24242d35295e96a6
+ md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c
+ sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546
category: main
optional: false
- - name: libbrotlicommon
- version: 1.1.0
+ - name: identify
+ version: 2.5.32
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda
+ dependencies:
+ ukkonen: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda
hash:
- md5: 9e6c31441c9aa24e41ace40d6151aab6
- sha256: f57c57c442ef371982619f82af8735f93a4f50293022cfd1ffaf2ff89c2e0b2a
+ md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c
+ sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546
category: main
optional: false
- - name: libcxx
- version: 16.0.6
+ - name: identify
+ version: 2.5.32
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-16.0.6-hd57cbcb_0.conda
+ platform: osx-arm64
+ dependencies:
+ ukkonen: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda
hash:
- md5: 7d6972792161077908b62971802f289a
- sha256: 9063271847cf05f3a6cc6cae3e7f0ced032ab5f3a3c9d3f943f876f39c5c2549
+ md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c
+ sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546
category: main
optional: false
- - name: libdeflate
- version: "1.19"
+ - name: idna
+ version: "3.6"
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.19-ha4e1b8e_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda
hash:
- md5: 6a45f543c2beb40023df5ee7e3cedfbd
- sha256: d0f789120fedd0881b129aba9993ec5dcf0ecca67a71ea20c74394e41adcb503
+ md5: 1a76f09108576397c41c0b0c5bd84134
+ sha256: 6ee4c986d69ce61e60a20b2459b6f2027baeba153f0a64995fd3cb47c2cc7e07
category: main
optional: false
- - name: libev
- version: "4.33"
+ - name: idna
+ version: "3.6"
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-haf1e3a3_1.tar.bz2
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda
hash:
- md5: 79dc2be110b2a3d1e97ec21f691c50ad
- sha256: c4154d424431898d84d6afb8b32e3ba749fe5d270d322bb0af74571a3cb09c6b
+ md5: 1a76f09108576397c41c0b0c5bd84134
+ sha256: 6ee4c986d69ce61e60a20b2459b6f2027baeba153f0a64995fd3cb47c2cc7e07
category: main
optional: false
- - name: libexpat
- version: 2.5.0
+ - name: idna
+ version: "3.6"
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.5.0-hf0c8a7f_1.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda
hash:
- md5: 6c81cb022780ee33435cca0127dd43c9
- sha256: 80024bd9f44d096c4cc07fb2bac76b5f1f7553390112dab3ad6acb16a05f0b96
+ md5: 1a76f09108576397c41c0b0c5bd84134
+ sha256: 6ee4c986d69ce61e60a20b2459b6f2027baeba153f0a64995fd3cb47c2cc7e07
category: main
optional: false
- - name: libffi
- version: 3.4.2
+ - name: ijson
+ version: 3.2.3
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2
+ platform: linux-64
+ dependencies:
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/ijson-3.2.3-pyhd8ed1ab_0.conda
hash:
- md5: ccb34fb14960ad8b125962d3d79b31a9
- sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f
+ md5: 6b1e4cb33f797d6487efd3ebad39d103
+ sha256: 133fb51b4c638c453ef7de37cc4d412b9a4442839a9c7ad986b9bf473234b585
category: main
optional: false
- - name: libiconv
- version: "1.17"
+ - name: ijson
+ version: 3.2.3
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hac89ed1_0.tar.bz2
+ dependencies:
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/ijson-3.2.3-pyhd8ed1ab_0.conda
hash:
- md5: 691d103d11180486154af49c037b7ed9
- sha256: 4a3294037d595754f7da7c11a41f3922f995aaa333f3cb66f02d8afa032a7bc2
+ md5: 6b1e4cb33f797d6487efd3ebad39d103
+ sha256: 133fb51b4c638c453ef7de37cc4d412b9a4442839a9c7ad986b9bf473234b585
category: main
optional: false
- - name: libjpeg-turbo
- version: 3.0.0
+ - name: ijson
+ version: 3.2.3
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/ijson-3.2.3-pyhd8ed1ab_0.conda
hash:
- md5: 72507f8e3961bc968af17435060b6dd6
- sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f
+ md5: 6b1e4cb33f797d6487efd3ebad39d103
+ sha256: 133fb51b4c638c453ef7de37cc4d412b9a4442839a9c7ad986b9bf473234b585
category: main
optional: false
- - name: libsodium
- version: 1.0.18
+ - name: imagesize
+ version: 1.4.1
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2
+ platform: linux-64
+ dependencies:
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 24632c09ed931af617fe6d5292919cab
- sha256: 2da45f14e3d383b4b9e3a8bacc95cd2832aac2dbf9fbc70d255d384a310c5660
+ md5: 7de5386c8fea29e76b303f37dde4c352
+ sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460
category: main
optional: false
- - name: libtool
- version: 2.4.7
- manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libtool-2.4.7-hf0c8a7f_0.conda
- hash:
- md5: 1f87b8f56ae1210c77f6133705ef24af
- sha256: 0827bcf84a243ca6dd47901caa607262a0184d6048a7cf444b26aa8ee80eb066
- category: dev
- optional: true
- - name: libutf8proc
- version: 2.8.0
+ - name: imagesize
+ version: 1.4.1
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2
+ dependencies:
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: db98dc3e58cbc11583180609c429c17d
- sha256: 55a7f96b2802e94def207fdfe92bc52c24d705d139bb6cdb3d936cbe85e1c505
+ md5: 7de5386c8fea29e76b303f37dde4c352
+ sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460
category: main
optional: false
- - name: libuv
- version: 1.46.0
+ - name: imagesize
+ version: 1.4.1
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.46.0-h0c2f820_0.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 27664a5d39d9c32ae38880fec2b33b36
- sha256: e51667c756f15580d3ce131d6157f0238d931c05af118c89f019854f2a7c125e
+ md5: 7de5386c8fea29e76b303f37dde4c352
+ sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460
category: main
optional: false
- - name: libwebp-base
- version: 1.3.2
+ - name: importlib-metadata
+ version: 6.8.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.3.2-h0dc2134_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.8"
+ zipp: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda
hash:
- md5: 4e7e9d244e87d66c18d36894fd6a8ae5
- sha256: fa7580f26fec4c28321ec2ece1257f3293e0c646c635e9904679f4a8369be401
+ md5: 4e9f59a060c3be52bc4ddc46ee9b6946
+ sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf
category: main
optional: false
- - name: libzlib
- version: 1.2.13
+ - name: importlib-metadata
+ version: 6.8.0
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.13-h8a1eda9_5.conda
+ dependencies:
+ python: ">=3.8"
+ zipp: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda
hash:
- md5: 4a3ad23f6e16f99c04e166767193d700
- sha256: fc58ad7f47ffea10df1f2165369978fba0a1cc32594aad778f5eec725f334867
+ md5: 4e9f59a060c3be52bc4ddc46ee9b6946
+ sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf
category: main
optional: false
- - name: llvm-openmp
- version: 17.0.5
+ - name: importlib-metadata
+ version: 6.8.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-17.0.5-hb6ac08f_0.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.8"
+ zipp: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda
hash:
- md5: 8ca3784280b7cb54163a46e8a918fb43
- sha256: 8ad5acab5d5fb38785c6f41e17e5e1729f305f4838cc3a4470688c6cf942c0da
+ md5: 4e9f59a060c3be52bc4ddc46ee9b6946
+ sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf
category: main
optional: false
- - name: lzo
- version: "2.10"
+ - name: importlib_metadata
+ version: 6.8.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-haf1e3a3_1000.tar.bz2
+ platform: linux-64
+ dependencies:
+ importlib-metadata: ">=6.8.0,<6.8.1.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda
hash:
- md5: 0b6bca372a95d6c602c7a922e928ce79
- sha256: c8a9401eff2efbbcc6da03d0066ee85d72402f7658c240e7968c64052a0d0493
+ md5: b279b07ce18058034e5b3606ba103a8b
+ sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f
category: main
optional: false
- - name: poppler-data
- version: 0.4.12
+ - name: importlib_metadata
+ version: 6.8.0
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda
+ dependencies:
+ importlib-metadata: ">=6.8.0,<6.8.1.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda
hash:
- md5: d8d7293c5b37f39b2ac32940621c6592
- sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf
+ md5: b279b07ce18058034e5b3606ba103a8b
+ sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f
category: main
optional: false
- - name: pthread-stubs
- version: "0.4"
+ - name: importlib_metadata
+ version: 6.8.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2
+ platform: osx-arm64
+ dependencies:
+ importlib-metadata: ">=6.8.0,<6.8.1.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda
hash:
- md5: addd19059de62181cd11ae8f4ef26084
- sha256: 6e3900bb241bcdec513d4e7180fe9a19186c1a38f0b4080ed619d26014222c53
+ md5: b279b07ce18058034e5b3606ba103a8b
+ sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f
category: main
optional: false
- - name: python_abi
- version: "3.11"
+ - name: importlib_resources
+ version: 6.1.1
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-4_cp311.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.8"
+ zipp: ">=3.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda
hash:
- md5: fef7a52f0eca6bae9e8e2e255bc86394
- sha256: f56dfe2a57b3b27bad3f9527f943548e8b2526e949d9d6fc0a383020d9359afe
+ md5: 3d5fa25cf42f3f32a12b2d874ace8574
+ sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed
category: main
optional: false
- - name: tzcode
- version: 2023c
+ - name: importlib_resources
+ version: 6.1.1
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/tzcode-2023c-hb7f2c08_0.conda
+ dependencies:
+ python: ">=3.8"
+ zipp: ">=3.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda
hash:
- md5: a7ba8e96323b9d8ce4f0edc4f4dab27f
- sha256: 0d4b111314bea267454f48691debc1ff4c0ce8cb91491d2be30381de498ac59e
+ md5: 3d5fa25cf42f3f32a12b2d874ace8574
+ sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed
category: main
optional: false
- - name: tzdata
- version: 2023c
+ - name: importlib_resources
+ version: 6.1.1
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.8"
+ zipp: ">=3.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 939e3e74d8be4dac89ce83b20de2492a
- sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55
+ md5: 3d5fa25cf42f3f32a12b2d874ace8574
+ sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed
category: main
optional: false
- - name: xorg-libxau
- version: 1.0.11
+ - name: iniconfig
+ version: 2.0.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 9566b4c29274125b0266d0177b5eb97b
- sha256: 8a2e398c4f06f10c64e69f56bcf3ddfa30b432201446a0893505e735b346619a
+ md5: f800d2da156d08e289b14e87e43c1ae5
+ sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
category: main
optional: false
- - name: xorg-libxdmcp
- version: 1.1.3
+ - name: iniconfig
+ version: 2.0.0
manager: conda
platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 86ac76d6bf1cbb9621943eb3bd9ae36e
- sha256: 485421c16f03a01b8ed09984e0b2ababdbb3527e1abf354ff7646f8329be905f
+ md5: f800d2da156d08e289b14e87e43c1ae5
+ sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
category: main
optional: false
- - name: xz
- version: 5.2.6
+ - name: iniconfig
+ version: 2.0.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
hash:
- md5: a72f9d4ea13d55d745ff1ed594747f10
- sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8
+ md5: f800d2da156d08e289b14e87e43c1ae5
+ sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
category: main
optional: false
- - name: yaml
- version: 0.2.5
+ - name: ipykernel
+ version: 6.26.0
manager: conda
- platform: osx-64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
+ platform: linux-64
+ dependencies:
+ __linux: ""
+ comm: ">=0.1.1"
+ debugpy: ">=1.6.5"
+ ipython: ">=7.23.1"
+ jupyter_client: ">=6.1.12"
+ jupyter_core: ">=4.12,!=5.0.*"
+ matplotlib-inline: ">=0.1"
+ nest-asyncio: ""
+ packaging: ""
+ psutil: ""
+ python: ">=3.8"
+ pyzmq: ">=20"
+ tornado: ">=6.1"
+ traitlets: ">=5.4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.26.0-pyhf8b6a83_0.conda
hash:
- md5: d7e08fcf8259d742156188e8762b4d20
- sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148
+ md5: 2307f71f5f0896d4b91b93e6b468abff
+ sha256: 9e647454f7572101657a07820ebed294df9a6a527b041cd5e4dd98b8aa3db625
category: main
optional: false
- - name: aws-c-cal
- version: 0.6.9
+ - name: ipykernel
+ version: 6.26.0
manager: conda
platform: osx-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.6.9-h49e9720_1.conda
+ packaging: ""
+ psutil: ""
+ nest-asyncio: ""
+ __osx: ""
+ appnope: ""
+ python: ">=3.8"
+ tornado: ">=6.1"
+ jupyter_client: ">=6.1.12"
+ ipython: ">=7.23.1"
+ matplotlib-inline: ">=0.1"
+ jupyter_core: ">=4.12,!=5.0.*"
+ debugpy: ">=1.6.5"
+ comm: ">=0.1.1"
+ pyzmq: ">=20"
+ traitlets: ">=5.4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.26.0-pyh3cd1d5f_0.conda
hash:
- md5: a1fc363f4bcbc029a096df632e1b06ab
- sha256: 4f7f92067ecf18696a40fedacdc189ffa045020ebd0948ad094624d7c5a8e5a2
+ md5: 3c6e2148d30e6a762d8327a433ebfb5a
+ sha256: be9927d47fe23cc4d2a09d252e37e1e56ffb137767d2c0577ed882ead16f75fa
category: main
optional: false
- - name: aws-c-compression
- version: 0.2.17
+ - name: ipykernel
+ version: 6.26.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.17-hff1f2c8_6.conda
+ packaging: ""
+ psutil: ""
+ nest-asyncio: ""
+ __osx: ""
+ appnope: ""
+ python: ">=3.8"
+ tornado: ">=6.1"
+ jupyter_client: ">=6.1.12"
+ ipython: ">=7.23.1"
+ matplotlib-inline: ">=0.1"
+ jupyter_core: ">=4.12,!=5.0.*"
+ debugpy: ">=1.6.5"
+ comm: ">=0.1.1"
+ pyzmq: ">=20"
+ traitlets: ">=5.4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.26.0-pyh3cd1d5f_0.conda
hash:
- md5: d44348239e6be8e1a418cfeda24bc1b5
- sha256: b82eae800be7a26fb0a8d39c009c39f3b8f474d05dcb636b7b8e225ca7c7da2b
+ md5: 3c6e2148d30e6a762d8327a433ebfb5a
+ sha256: be9927d47fe23cc4d2a09d252e37e1e56ffb137767d2c0577ed882ead16f75fa
category: main
optional: false
- - name: aws-c-sdkutils
- version: 0.1.12
+ - name: ipython
+ version: 8.18.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.12-hff1f2c8_5.conda
+ __unix: ""
+ decorator: ""
+ exceptiongroup: ""
+ jedi: ">=0.16"
+ matplotlib-inline: ""
+ pexpect: ">4.3"
+ pickleshare: ""
+ prompt-toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
+ pygments: ">=2.4.0"
+ python: ">=3.9"
+ stack_data: ""
+ traitlets: ">=5"
+ typing_extensions: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_1.conda
hash:
- md5: 12164ac8e33917c5d6aeb25ab82c2771
- sha256: 6953db4c9d56a367f921efaac18cf310985bc57ebd7ed50757c916912a99eeed
+ md5: ac2f9c2e10c2e90e8d135cef51f9753a
+ sha256: 67490e640faa372d663a5c5cd2d61f417cce22a019a4de82a9e5ddb1cf2ee181
category: main
optional: false
- - name: aws-checksums
- version: 0.1.17
+ - name: ipython
+ version: 8.18.1
manager: conda
platform: osx-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.17-hff1f2c8_5.conda
+ typing_extensions: ""
+ __unix: ""
+ decorator: ""
+ exceptiongroup: ""
+ stack_data: ""
+ matplotlib-inline: ""
+ pickleshare: ""
+ python: ">=3.9"
+ pygments: ">=2.4.0"
+ traitlets: ">=5"
+ jedi: ">=0.16"
+ pexpect: ">4.3"
+ prompt-toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_1.conda
hash:
- md5: 8b47ddfddaf30b4de34ea9d660c919c7
- sha256: 8ebb4ac6617f87405b6966a23dc4a37bdc96d4627f990e72abf1dff136179579
+ md5: ac2f9c2e10c2e90e8d135cef51f9753a
+ sha256: 67490e640faa372d663a5c5cd2d61f417cce22a019a4de82a9e5ddb1cf2ee181
category: main
optional: false
- - name: expat
- version: 2.5.0
+ - name: ipython
+ version: 8.18.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libexpat: 2.5.0
- url: https://conda.anaconda.org/conda-forge/osx-64/expat-2.5.0-hf0c8a7f_1.conda
+ typing_extensions: ""
+ __unix: ""
+ decorator: ""
+ exceptiongroup: ""
+ stack_data: ""
+ matplotlib-inline: ""
+ pickleshare: ""
+ python: ">=3.9"
+ pygments: ">=2.4.0"
+ traitlets: ">=5"
+ jedi: ">=0.16"
+ pexpect: ">4.3"
+ prompt-toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_1.conda
hash:
- md5: e12630038077877cbb6c7851e139c17c
- sha256: 15c04a5a690b337b50fb7550cce057d843cf94dd0109d576ec9bc3448a8571d0
+ md5: ac2f9c2e10c2e90e8d135cef51f9753a
+ sha256: 67490e640faa372d663a5c5cd2d61f417cce22a019a4de82a9e5ddb1cf2ee181
category: main
optional: false
- - name: fonts-conda-forge
- version: "1"
+ - name: ipywidgets
+ version: 8.1.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- font-ttf-inconsolata: ""
- font-ttf-source-code-pro: ""
- font-ttf-dejavu-sans-mono: ""
- font-ttf-ubuntu: ""
- url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ comm: ">=0.1.3"
+ ipython: ">=6.1.0"
+ jupyterlab_widgets: ">=3.0.9,<3.1.0"
+ python: ">=3.7"
+ traitlets: ">=4.3.1"
+ widgetsnbextension: ">=4.0.9,<4.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda
hash:
- md5: f766549260d6815b0c52253f1fb1bb29
- sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
+ md5: 2605fae5ee27100e5f10037baebf4d41
+ sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02
category: main
optional: false
- - name: geos
- version: 3.12.0
+ - name: ipywidgets
+ version: 8.1.1
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/geos-3.12.0-he965462_0.conda
+ python: ">=3.7"
+ traitlets: ">=4.3.1"
+ ipython: ">=6.1.0"
+ comm: ">=0.1.3"
+ jupyterlab_widgets: ">=3.0.9,<3.1.0"
+ widgetsnbextension: ">=4.0.9,<4.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 264a53af0fb378e81b44e45e5ab5aff1
- sha256: e84ff98270717ae49aeba6788476d3569ad33993a46d33d727ee528fb3386a58
+ md5: 2605fae5ee27100e5f10037baebf4d41
+ sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02
category: main
optional: false
- - name: gettext
- version: 0.21.1
+ - name: ipywidgets
+ version: 8.1.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libiconv: ">=1.17,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.21.1-h8a4c099_0.tar.bz2
+ python: ">=3.7"
+ traitlets: ">=4.3.1"
+ ipython: ">=6.1.0"
+ comm: ">=0.1.3"
+ jupyterlab_widgets: ">=3.0.9,<3.1.0"
+ widgetsnbextension: ">=4.0.9,<4.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 1e3aff29ce703d421c43f371ad676cc5
- sha256: 915d3cd2d777b9b3fc2e87a25901b8e4a6aa1b2b33cf2ba54e9e9ed4f6b67d94
+ md5: 2605fae5ee27100e5f10037baebf4d41
+ sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02
category: main
optional: false
- - name: gflags
- version: 2.2.2
+ - name: isodate
+ version: 0.6.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=10.0.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2
+ python: ">=3.6"
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3f59cc77a929537e42120faf104e0d16
- sha256: 39540f879057ae529cad131644af111a8c3c48b384ec6212de6a5381e0863948
+ md5: 4a62c93c1b5c0b920508ae3fd285eaf5
+ sha256: af8f801e093da52a50ca0ea0510dfaf6898fea37e66d08d335e370235dede9fc
category: main
optional: false
- - name: graphite2
- version: 1.3.13
- manager: conda
- platform: osx-64
- dependencies:
- libcxx: ">=10.0.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h2e338ed_1001.tar.bz2
- hash:
- md5: 5f6e7f98caddd0fc2d345b207531814c
- sha256: 1dba68533e6888c5e2a7e37119a77d6f388fb82721c530ba3bd28d541828e59b
- category: dev
- optional: true
- - name: hdf4
- version: 4.2.15
+ - name: isodate
+ version: 0.6.1
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda
+ six: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7ce543bf38dbfae0de9af112ee178af2
- sha256: 8c767cc71226e9eb62649c903c68ba73c5f5e7e3696ec0319d1f90586cebec7d
+ md5: 4a62c93c1b5c0b920508ae3fd285eaf5
+ sha256: af8f801e093da52a50ca0ea0510dfaf6898fea37e66d08d335e370235dede9fc
category: main
optional: false
- - name: lerc
- version: 4.0.0
+ - name: isodate
+ version: 0.6.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=13.0.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2
+ six: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f9d6a4c82889d5ecedec1d90eb673c55
- sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497
+ md5: 4a62c93c1b5c0b920508ae3fd285eaf5
+ sha256: af8f801e093da52a50ca0ea0510dfaf6898fea37e66d08d335e370235dede9fc
category: main
optional: false
- - name: libabseil
- version: "20230802.1"
+ - name: isoduration
+ version: 20.11.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20230802.1-cxx17_h048a20a_0.conda
+ arrow: ">=0.15.0"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 6554f5fb47c025273268bcdb7bf3cd48
- sha256: 05431a6adb376a865e10d4ae673399d7890083c06f61cf18edb7c6629e75f39e
+ md5: 4cb68948e0b8429534380243d063a27a
+ sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
category: main
optional: false
- - name: libaec
- version: 1.1.2
+ - name: isoduration
+ version: 20.11.0
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.2-he965462_1.conda
+ python: ">=3.7"
+ arrow: ">=0.15.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: faa179050abc6af1385e0fe9dd074f91
- sha256: 1b0a0b9b67e8f155ebdc7205a7421c7aff4850a740fc9f88b3fa23282c98ed72
+ md5: 4cb68948e0b8429534380243d063a27a
+ sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
category: main
optional: false
- - name: libbrotlidec
- version: 1.1.0
+ - name: isoduration
+ version: 20.11.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libbrotlicommon: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda
+ python: ">=3.7"
+ arrow: ">=0.15.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 9ee0bab91b2ca579e10353738be36063
- sha256: b11939c4c93c29448660ab5f63273216969d1f2f315dd9be60f3c43c4e61a50c
+ md5: 4cb68948e0b8429534380243d063a27a
+ sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
category: main
optional: false
- - name: libbrotlienc
- version: 1.1.0
+ - name: itsdangerous
+ version: 2.1.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libbrotlicommon: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 8a421fe09c6187f0eb5e2338a8a8be6d
- sha256: bc964c23e1a60ca1afe7bac38a9c1f2af3db4a8072c9f2eac4e4de537a844ac7
+ md5: 3c3de74912f11d2b590184f03c7cd09b
+ sha256: 31e3492686b4e92b53db9b48bc0eb03873b1caaf28629fee7d2d47627a2c56d3
category: main
optional: false
- - name: libcrc32c
- version: 1.1.2
+ - name: itsdangerous
+ version: 2.1.2
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=11.1.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 23d6d5a69918a438355d7cbc4c3d54c9
- sha256: 3043869ac1ee84554f177695e92f2f3c2c507b260edad38a0bf3981fce1632ff
+ md5: 3c3de74912f11d2b590184f03c7cd09b
+ sha256: 31e3492686b4e92b53db9b48bc0eb03873b1caaf28629fee7d2d47627a2c56d3
category: main
optional: false
- - name: libgfortran5
- version: 13.2.0
+ - name: itsdangerous
+ version: 2.1.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- llvm-openmp: ">=8.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3af564516b5163cd8cc08820413854bc
- sha256: 44de8930eef3b14d4d9fdfe419e6c909c13b7c859617d3616d5a5e964f3fcf63
+ md5: 3c3de74912f11d2b590184f03c7cd09b
+ sha256: 31e3492686b4e92b53db9b48bc0eb03873b1caaf28629fee7d2d47627a2c56d3
category: main
optional: false
- - name: libllvm14
- version: 14.0.6
+ - name: janus
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=15"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libllvm14-14.0.6-hc8e404f_4.conda
+ python: ">=3.7"
+ typing_extensions: ">=3.7.4.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/janus-1.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ed06753e2ba7c66ed0ca7f19578fcb68
- sha256: 0df3902a300cfe092425f86144d5e00ef67be3cd1cc89fd63084d45262a772ad
+ md5: 304b5bce5a9b3590d825ffd85ac63471
+ sha256: b702ef1e280249065d69aef7b0a7b3920903d2de68283bb5282cb57a4ed54d19
category: main
optional: false
- - name: libpng
- version: 1.6.39
+ - name: janus
+ version: 1.0.0
manager: conda
platform: osx-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.39-ha978bb4_0.conda
+ python: ">=3.7"
+ typing_extensions: ">=3.7.4.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/janus-1.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 35e4928794c5391aec14ffdf1deaaee5
- sha256: 5ad9f5e96e6770bfc8b0a826f48835e7f337c2d2e9512d76027a62f9c120b2a3
+ md5: 304b5bce5a9b3590d825ffd85ac63471
+ sha256: b702ef1e280249065d69aef7b0a7b3920903d2de68283bb5282cb57a4ed54d19
category: main
optional: false
- - name: libspatialindex
- version: 1.9.3
+ - name: janus
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=11.1.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libspatialindex-1.9.3-he49afe7_4.tar.bz2
+ python: ">=3.7"
+ typing_extensions: ">=3.7.4.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/janus-1.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b1c13764417c32fa87fac733caa82a64
- sha256: 443db45215e08fbf134a019486c20540d9903c1d9b14ac28ba299f8a730069da
+ md5: 304b5bce5a9b3590d825ffd85ac63471
+ sha256: b702ef1e280249065d69aef7b0a7b3920903d2de68283bb5282cb57a4ed54d19
category: main
optional: false
- - name: libsqlite
- version: 3.44.0
+ - name: jaraco.classes
+ version: 3.3.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.44.0-h92b6c6a_0.conda
+ more-itertools: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 5dd5e957ebfee02720c30e0e2d127bbe
- sha256: 0832dc9cf18e811d2b41f8f4951d5ab608678e3459b1a4f36347097d8a9abf68
+ md5: e9f79248d30e942f7c358ff21a1790f5
+ sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891
category: main
optional: false
- - name: libxcb
- version: "1.15"
+ - name: jaraco.classes
+ version: 3.3.0
manager: conda
platform: osx-64
dependencies:
- pthread-stubs: ""
- xorg-libxau: ""
- xorg-libxdmcp: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda
+ more-itertools: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 5513f57e0238c87c12dffedbcc9c1a4a
- sha256: f41904f466acc8b3197f37f2dd3a08da75720c7f7464d9267635debc4ac1902b
+ md5: e9f79248d30e942f7c358ff21a1790f5
+ sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891
category: main
optional: false
- - name: libxml2
- version: 2.11.6
+ - name: jaraco.classes
+ version: 3.3.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- icu: ">=73.2,<74.0a0"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.11.6-hc0ae0f7_0.conda
+ more-itertools: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 2b6ec8c6366ea74db4b910469addad1d
- sha256: b5b1c3df3e6d0d294764938e79d7f413191cc5b1af2ede49f42b1df04d068a18
+ md5: e9f79248d30e942f7c358ff21a1790f5
+ sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891
category: main
optional: false
- - name: lz4-c
- version: 1.9.4
+ - name: jedi
+ version: 0.19.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda
+ parso: ">=0.8.3,<0.9.0"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda
hash:
- md5: aa04f7143228308662696ac24023f991
- sha256: 39aa0c01696e4e202bf5e337413de09dfeec061d89acd5f28e9968b4e93c3f48
+ md5: 81a3be0b2023e1ea8555781f0ad904a2
+ sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a
category: main
optional: false
- - name: ncurses
- version: "6.4"
+ - name: jedi
+ version: 0.19.1
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.4-h93d8f39_2.conda
+ python: ">=3.6"
+ parso: ">=0.8.3,<0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda
hash:
- md5: e58f366bd4d767e9ab97ab8b272e7670
- sha256: ea0fca66bbb52a1ef0687d466518fe120b5f279684effd6fd336a7b0dddc423a
+ md5: 81a3be0b2023e1ea8555781f0ad904a2
+ sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a
category: main
optional: false
- - name: nspr
- version: "4.35"
+ - name: jedi
+ version: 0.19.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/nspr-4.35-hea0b92c_0.conda
+ python: ">=3.6"
+ parso: ">=0.8.3,<0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda
hash:
- md5: a9e56c98d13d8b7ce72bf4357317c29b
- sha256: da6e19bd0ff31e219760e647cfe1cc499a8cdfaff305f06c56d495ca062b86de
+ md5: 81a3be0b2023e1ea8555781f0ad904a2
+ sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a
category: main
optional: false
- - name: openssl
- version: 3.1.4
+ - name: jeepney
+ version: 0.8.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- ca-certificates: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.1.4-hd75f5a5_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: bc9201da6eb1e0df4107901df5371347
- sha256: 1c436103a8de0dc82c9c56974badaa1b8b8f8cd9f37c2766bd50cd9899720f6b
+ md5: 9800ad1699b42612478755a2d26c722d
+ sha256: 16639759b811866d63315fe1391f6fb45f5478b823972f4d3d9f0392b7dd80b8
category: main
optional: false
- - name: pandoc
- version: 3.1.3
+ - name: jellyfish
+ version: 1.0.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.1.3-h9d075a6_0.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/jellyfish-1.0.3-py311h46250e7_0.conda
hash:
- md5: e86a3d5c966a09b6129354114483f7a7
- sha256: 3bc6bc31b96338c65c8f6e222bd8c65d47227ba4b59b2587157c3a29499123cc
+ md5: de10f4eb49991618d3c97123d5ecd70d
+ sha256: 3cb4412f397490b3905bbf49f952bfd70be155ba63dcc1972c4a4e0e0cd5a437
category: main
optional: false
- - name: pcre2
- version: "10.42"
+ - name: jellyfish
+ version: 1.0.3
manager: conda
platform: osx-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.42-h0ad2156_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/jellyfish-1.0.3-py311h5e0f0e4_0.conda
hash:
- md5: 41de8bab2d5e5cd6daaba1896e81d366
- sha256: 689559d94b64914e503d2ced53b78afc19562ed1ccfb284040797a6d41bb564c
+ md5: 6229bd3463f162abe20e7d12148f59f5
+ sha256: 6ba0f5f9fba8b231520a595cfc86a3f05ab0613ced553d3e5fa45187475eec23
category: main
optional: false
- - name: pixman
- version: 0.42.2
+ - name: jellyfish
+ version: 1.0.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.42.2-he965462_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/jellyfish-1.0.3-py311h94f323b_0.conda
hash:
- md5: e4180dcfd3e3621560fe1ad522997520
- sha256: d9181736d4b3260a03443e8fd1c47c491e189b2344913eaf5dead27947a274e4
+ md5: e93dd373d5a02f378d9ff392627572a1
+ sha256: fb44932ed3a86e55503f4c0216eff59e47a409e1d18fab4714130692d4f8a9af
category: main
optional: false
- - name: snappy
- version: 1.1.10
+ - name: jinja2
+ version: 3.1.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.1.10-h225ccf5_0.conda
+ markupsafe: ">=2.0"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 4320a8781f14cd959689b86e349f3b73
- sha256: 575915dc13152e446a84e2f88de70a14f8b6af1a870e708f9370bd4be105583b
+ md5: c8490ed5c70966d232fdd389d0dbed37
+ sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5
category: main
optional: false
- - name: tk
- version: 8.6.13
+ - name: jinja2
+ version: 3.1.2
manager: conda
platform: osx-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda
+ python: ">=3.7"
+ markupsafe: ">=2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2
hash:
- md5: bf830ba5afc507c6232d4ef0fb1a882d
- sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5
+ md5: c8490ed5c70966d232fdd389d0dbed37
+ sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5
category: main
optional: false
- - name: uriparser
- version: 0.9.7
+ - name: jinja2
+ version: 3.1.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/uriparser-0.9.7-hf0c8a7f_1.conda
+ python: ">=3.7"
+ markupsafe: ">=2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 998073b0ccb5f99d07d2089cf06363b3
- sha256: faf0f7919851960bbb1d18d977f62082c0e4dc8f26e348d702e8a2dba53a4c37
+ md5: c8490ed5c70966d232fdd389d0dbed37
+ sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5
category: main
optional: false
- - name: zeromq
- version: 4.3.5
+ - name: jmespath
+ version: 1.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- libsodium: ">=1.0.18,<1.0.19.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h93d8f39_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 4c055e46b394be36681fe476c1e2ee6e
- sha256: 19be553b3cc8352b6e842134b8de66ae39fcae80bc575c203076370faab6009c
+ md5: 2cfa3e1cf3fb51bb9b17acc5b5e9ea11
+ sha256: 95ac5f9ee95fd4e34dc051746fc86016d3d4f6abefed113e2ede049d59ec2991
category: main
optional: false
- - name: zlib
- version: 1.2.13
+ - name: jmespath
+ version: 1.0.1
manager: conda
platform: osx-64
dependencies:
- libzlib: 1.2.13
- url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.13-h8a1eda9_5.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 75a8a98b1c4671c5d2897975731da42d
- sha256: d1f4c82fd7bd240a78ce8905e931e68dca5f523c7da237b6b63c87d5625c5b35
+ md5: 2cfa3e1cf3fb51bb9b17acc5b5e9ea11
+ sha256: 95ac5f9ee95fd4e34dc051746fc86016d3d4f6abefed113e2ede049d59ec2991
category: main
optional: false
- - name: zstd
- version: 1.5.5
+ - name: jmespath
+ version: 1.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.5-h829000d_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 80abc41d0c48b82fe0f04e7f42f5cb7e
- sha256: d54e31d3d8de5e254c0804abd984807b8ae5cd3708d758a8bf1adff1f5df166c
+ md5: 2cfa3e1cf3fb51bb9b17acc5b5e9ea11
+ sha256: 95ac5f9ee95fd4e34dc051746fc86016d3d4f6abefed113e2ede049d59ec2991
category: main
optional: false
- - name: aws-c-io
- version: 0.13.35
+ - name: joblib
+ version: 1.3.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.13.35-hb98174f_8.conda
+ python: ">=3.7"
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda
hash:
- md5: c7b0ed5a258d3a8bb991bdc935b3703a
- sha256: f44243ab77bef1475565cfd2c432608d530d70f3b7d690effa8e1c47b3bb2d90
+ md5: 4da50d410f553db77e62ab62ffaa1abc
+ sha256: 31e05d47970d956206188480b038829d24ac11fe8216409d8584d93d40233878
category: main
optional: false
- - name: blosc
- version: 1.21.5
+ - name: joblib
+ version: 1.3.2
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.5-heccf04b_0.conda
+ setuptools: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda
hash:
- md5: 3003fa6dd18769db1a616982dcee5b40
- sha256: db629047f1721d5a6e3bd41b07c1a3bacd0dee70f4063b61db2aa46f19a0b8b4
+ md5: 4da50d410f553db77e62ab62ffaa1abc
+ sha256: 31e05d47970d956206188480b038829d24ac11fe8216409d8584d93d40233878
category: main
optional: false
- - name: brotli-bin
- version: 1.1.0
+ - name: joblib
+ version: 1.3.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libbrotlidec: 1.1.0
- libbrotlienc: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h0dc2134_1.conda
+ setuptools: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda
hash:
- md5: ece565c215adcc47fc1db4e651ee094b
- sha256: 7ca3cfb4c5df314ed481301335387ab2b2ee651e2c74fbb15bacc795c664a5f1
+ md5: 4da50d410f553db77e62ab62ffaa1abc
+ sha256: 31e05d47970d956206188480b038829d24ac11fe8216409d8584d93d40233878
category: main
optional: false
- - name: fonts-conda-ecosystem
- version: "1"
+ - name: json-c
+ version: "0.17"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- fonts-conda-forge: ""
- url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.17-h7ab15ed_0.conda
hash:
- md5: fee5683a3f04bd15cbd8318b096a27ab
- sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
+ md5: 9961b1f100c3b6852bd97c9233d06979
+ sha256: 5646496ca07dfa1486d27ed07282967007811dfc63d6394652e87f94166ecae3
category: main
optional: false
- - name: freetype
- version: 2.12.1
+ - name: json-c
+ version: "0.17"
manager: conda
platform: osx-64
- dependencies:
- libpng: ">=1.6.39,<1.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.17-h8e11ae5_0.conda
hash:
- md5: 25152fce119320c980e5470e64834b50
- sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e
+ md5: 266d2e4ebbf37091c8322937392bb540
+ sha256: 2a493095fe1292108ff1799a1b47ababe82d844bfa3abcf2252676c1017a1e04
category: main
optional: false
- - name: glog
- version: 0.6.0
+ - name: json-c
+ version: "0.17"
manager: conda
- platform: osx-64
- dependencies:
- gflags: ">=2.2.2,<2.3.0a0"
- libcxx: ">=12.0.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/glog-0.6.0-h8ac2a54_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.17-h40ed0f5_0.conda
hash:
- md5: 69eb97ca709a136c53fdca1f2fd33ddf
- sha256: fdb38560094fb4a952346dc72a79b3cb09e23e4d0cae9ba4f524e6e88203d3c8
+ md5: 7de5604deb99090c8e8c4863f60568d1
+ sha256: d47138a2829ce47d2e9ec1dbe108d1a6fe58c5d8724ea904985a420ad760f93f
category: main
optional: false
- - name: libarchive
- version: 3.7.2
+ - name: json5
+ version: 0.9.14
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libiconv: ">=1.17,<2.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- lzo: ">=2.10,<3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.7.2-h0b5dc4a_0.conda
+ python: ">=3.7,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
hash:
- md5: 0f8458c98eaf403501e7e699d93594e7
- sha256: 77669122d52073078d55310cf21fdfc35c283243cd47a064d6dbab38d8e6ab02
+ md5: dac1dabba2b5a9d1aee175c5fcc7b436
+ sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
category: main
optional: false
- - name: libedit
- version: 3.1.20191231
+ - name: json5
+ version: 0.9.14
manager: conda
platform: osx-64
dependencies:
- ncurses: ">=6.2,<7.0.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2
+ python: ">=3.7,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
hash:
- md5: 6016a8a1d0e63cac3de2c352cd40208b
- sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095
+ md5: dac1dabba2b5a9d1aee175c5fcc7b436
+ sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
category: main
optional: false
- - name: libevent
- version: 2.1.12
+ - name: json5
+ version: 0.9.14
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- openssl: ">=3.1.1,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda
+ python: ">=3.7,<4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
hash:
- md5: e38e467e577bd193a7d5de7c2c540b04
- sha256: e0bd9af2a29f8dd74309c0ae4f17a7c2b8c4b89f875ff1d6540c941eefbd07fb
+ md5: dac1dabba2b5a9d1aee175c5fcc7b436
+ sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
category: main
optional: false
- - name: libgfortran
- version: 5.0.0
+ - name: jsonlines
+ version: 4.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libgfortran5: 13.2.0
- url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_1.conda
+ attrs: ">=19.2.0"
+ python: ">=3.6"
+ typing_extensions: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: b55fd11ab6318a6e67ac191309701d5a
- sha256: 5be1a59316e5063f4e6492ea86d692600a7b8e32caa25269f8a3b386a028e5f3
+ md5: df32eb56c2a48a5ca9465aef29dd46bc
+ sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c
category: main
optional: false
- - name: libglib
- version: 2.78.1
+ - name: jsonlines
+ version: 4.0.0
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- gettext: ">=0.21.1,<1.0a0"
- libcxx: ">=16.0.6"
- libffi: ">=3.4,<4.0a0"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- pcre2: ">=10.42,<10.43.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.78.1-h198397b_1.conda
+ typing_extensions: ""
+ python: ">=3.6"
+ attrs: ">=19.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: fb318c3fed632cf2de190fb10496fbd1
- sha256: 73bcb4ea07af4291221271aa7aaa0795d59d851a6f43d6e0df22601f61725e4b
+ md5: df32eb56c2a48a5ca9465aef29dd46bc
+ sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c
category: main
optional: false
- - name: libkml
- version: 1.3.0
+ - name: jsonlines
+ version: 4.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libboost-headers: ""
- libcxx: ">=15.0.7"
- libexpat: ">=2.5.0,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- uriparser: ">=0.9.7,<1.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-hab3ca0e_1018.conda
+ typing_extensions: ""
+ python: ">=3.6"
+ attrs: ">=19.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 535b1bb4896b113c14dfa64141370a12
- sha256: f546750a59b85a4b721f69e34e797ceddb93c438ee384db285e3344490d6a9b5
+ md5: df32eb56c2a48a5ca9465aef29dd46bc
+ sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c
category: main
optional: false
- - name: libllvm15
- version: 15.0.7
+ - name: jsonpointer
+ version: "2.4"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=15"
- libxml2: ">=2.11.4,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- zstd: ">=1.5.2,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libllvm15-15.0.7-he4b1e75_3.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py311h38be061_3.conda
hash:
- md5: ecc6df80c4b0445ac0de9cabae189db3
- sha256: 02c7f5fe1ae9cdf4b0152cc76fef0ccb26137075054bdd9336ebf956fd22d8c9
+ md5: 41d52d822edf991bf0e6b08c1921a8ec
+ sha256: 976f7bf3c3a49c3066f36b67c12ae06b31542e53b843bb4362f31c9e449c6c46
category: main
optional: false
- - name: libnghttp2
- version: 1.58.0
+ - name: jsonpointer
+ version: "2.4"
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- c-ares: ">=1.21.0,<2.0a0"
- libcxx: ">=16.0.6"
- libev: ">=4.33,<4.34.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-2.4-py311h6eed73b_3.conda
hash:
- md5: 864e23fba3678000154f53bbf6d476a2
- sha256: b2b94cdaffa0d4fddd73c04262fdb1d1bcd6f8783979281ccfdb832e159cac4e
+ md5: ed1c23d0e55abd27d8b9e31c58105140
+ sha256: b0ba738e1dbf3b69558557cd1e63310364e045b8c8e7f73fdce7e71928b5f22a
category: main
optional: false
- - name: libprotobuf
- version: 4.24.4
+ - name: jsonpointer
+ version: "2.4"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.24.4-h0ee05dc_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-2.4-py311h267d04e_3.conda
hash:
- md5: c0f2660a38d96e55c6aae15a06ee277b
- sha256: 4c0cd48fa2b0ac5cad6204d686bcb8e51bc5906c25180919ecf8f3000c0eade5
+ md5: b6008a5b9180e58a235f5e45432dfe2e
+ sha256: 807d6c44f3e34139bfd25db4409381a6ce37fad2902c58f10fa7e1c30a64333d
category: main
optional: false
- - name: libre2-11
- version: 2023.06.02
+ - name: jsonschema
+ version: 4.20.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.06.02-h4694dbf_0.conda
+ attrs: ">=22.2.0"
+ importlib_resources: ">=1.4.0"
+ jsonschema-specifications: ">=2023.03.6"
+ pkgutil-resolve-name: ">=1.3.10"
+ python: ">=3.8"
+ referencing: ">=0.28.4"
+ rpds-py: ">=0.7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda
hash:
- md5: d7c00395eaf2446eec6ce0f34cfd5b78
- sha256: 73acd1ade87762c3f1aacf2a7c6271dd1e1c972d46ea7c44d8781595bca9218e
+ md5: 1116d79def5268414fb0917520b2bbf1
+ sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296
category: main
optional: false
- - name: librttopo
- version: 1.1.0
+ - name: jsonschema
+ version: 4.20.0
manager: conda
platform: osx-64
dependencies:
- geos: ">=3.12.0,<3.12.1.0a0"
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h23f359d_14.conda
+ python: ">=3.8"
+ attrs: ">=22.2.0"
+ importlib_resources: ">=1.4.0"
+ pkgutil-resolve-name: ">=1.3.10"
+ jsonschema-specifications: ">=2023.03.6"
+ referencing: ">=0.28.4"
+ rpds-py: ">=0.7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda
hash:
- md5: 4cec4e76f3d1cd6ec739ca40e7e12847
- sha256: df61f3c42651fd02d2e5fbb3cd6a225df29dc91ec6c5a57d0d717dc14ee8e2dc
+ md5: 1116d79def5268414fb0917520b2bbf1
+ sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296
category: main
optional: false
- - name: libssh2
- version: 1.11.0
+ - name: jsonschema
+ version: 4.20.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.1,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda
+ python: ">=3.8"
+ attrs: ">=22.2.0"
+ importlib_resources: ">=1.4.0"
+ pkgutil-resolve-name: ">=1.3.10"
+ jsonschema-specifications: ">=2023.03.6"
+ referencing: ">=0.28.4"
+ rpds-py: ">=0.7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda
hash:
- md5: ca3a72efba692c59a90d4b9fc0dfe774
- sha256: f3886763b88f4b24265db6036535ef77b7b77ce91b1cbe588c0fbdd861eec515
+ md5: 1116d79def5268414fb0917520b2bbf1
+ sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296
category: main
optional: false
- - name: libtiff
- version: 4.6.0
+ - name: jsonschema-specifications
+ version: 2023.11.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- lerc: ">=4.0.0,<5.0a0"
- libcxx: ">=15.0.7"
- libdeflate: ">=1.19,<1.20.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h684deea_2.conda
+ importlib_resources: ">=1.4.0"
+ python: ">=3.8"
+ referencing: ">=0.31.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 2ca10a325063e000ad6d2a5900061e0d
- sha256: 1ef5bd7295f4316b111f70ad21356fb9f0de50b85a341cac9e3a61ac6487fdf1
+ md5: 094ff9cf36957f95bb74cee42ab140b2
+ sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
category: main
optional: false
- - name: libxslt
- version: 1.1.37
+ - name: jsonschema-specifications
+ version: 2023.11.1
manager: conda
platform: osx-64
dependencies:
- libxml2: ">=2.11.3,<2.12.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.37-h20bfa82_1.conda
+ python: ">=3.8"
+ importlib_resources: ">=1.4.0"
+ referencing: ">=0.31.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 177817e2ba32a7d5ffdfbcb876fd4f10
- sha256: 588c2b16f9f09e5cd86765d0e3ae83d9078cd89416f7453e939d22898280c009
+ md5: 094ff9cf36957f95bb74cee42ab140b2
+ sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
category: main
optional: false
- - name: libzip
- version: 1.10.1
+ - name: jsonschema-specifications
+ version: 2023.11.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.10.1-hc158999_3.conda
+ python: ">=3.8"
+ importlib_resources: ">=1.4.0"
+ referencing: ">=0.31.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 6112b3173f3aa2f12a8f40d07a77cc35
- sha256: 0689e4a6e67e80027e43eefb8a365273405a01f5ab2ece97319155b8be5d64f6
+ md5: 094ff9cf36957f95bb74cee42ab140b2
+ sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
category: main
optional: false
- - name: minizip
- version: 4.0.3
+ - name: jsonschema-with-format-nongpl
+ version: 4.20.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- bzip2: ">=1.0.8,<2.0a0"
- libcxx: ">=16.0.6"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/minizip-4.0.3-h23f18a7_0.conda
+ fqdn: ""
+ idna: ""
+ isoduration: ""
+ jsonpointer: ">1.13"
+ jsonschema: ">=4.20.0,<4.20.1.0a0"
+ python: ""
+ rfc3339-validator: ""
+ rfc3986-validator: ">0.1.0"
+ uri-template: ""
+ webcolors: ">=1.11"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.20.0-pyhd8ed1ab_0.conda
hash:
- md5: 2facac17555d3078a0abfbe20a331086
- sha256: 779cdb3ee14c653b6094414c251164b2398e50b825ba44455c67e7deeb6e48e1
+ md5: a168c5f84010711f6d4ae650bc22b480
+ sha256: 03558b25daa57137fdf98e92731ba50ff5506f265294ac2eef5ec465c76ecf57
category: main
optional: false
- - name: nodejs
- version: 20.8.1
+ - name: jsonschema-with-format-nongpl
+ version: 4.20.0
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- icu: ">=73.2,<74.0a0"
- libcxx: ">=16.0.6"
- libuv: ">=1.46.0,<1.47.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/nodejs-20.8.1-h9adec40_0.conda
+ python: ""
+ idna: ""
+ rfc3339-validator: ""
+ uri-template: ""
+ fqdn: ""
+ isoduration: ""
+ jsonpointer: ">1.13"
+ webcolors: ">=1.11"
+ rfc3986-validator: ">0.1.0"
+ jsonschema: ">=4.20.0,<4.20.1.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.20.0-pyhd8ed1ab_0.conda
hash:
- md5: d653802cf7edab59398a6896c62c4b9b
- sha256: 8c749285d3f3c09dd4d4fd3009a3a55bca400b306541a64d62af25ca5bc5bab2
+ md5: a168c5f84010711f6d4ae650bc22b480
+ sha256: 03558b25daa57137fdf98e92731ba50ff5506f265294ac2eef5ec465c76ecf57
category: main
optional: false
- - name: nss
- version: "3.94"
+ - name: jsonschema-with-format-nongpl
+ version: 4.20.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- libsqlite: ">=3.43.0,<4.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- nspr: ">=4.35,<5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/nss-3.94-hd6ac835_0.conda
+ python: ""
+ idna: ""
+ rfc3339-validator: ""
+ uri-template: ""
+ fqdn: ""
+ isoduration: ""
+ jsonpointer: ">1.13"
+ webcolors: ">=1.11"
+ rfc3986-validator: ">0.1.0"
+ jsonschema: ">=4.20.0,<4.20.1.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.20.0-pyhd8ed1ab_0.conda
hash:
- md5: 10c69224110baa4d7d4f1bdb03d4f383
- sha256: aafb8b2a51beaa407d4e712d11e2a34fc010c7727d8a5573fb0c7ae53f2fff75
+ md5: a168c5f84010711f6d4ae650bc22b480
+ sha256: 03558b25daa57137fdf98e92731ba50ff5506f265294ac2eef5ec465c76ecf57
category: main
optional: false
- - name: readline
- version: "8.2"
+ - name: jupyter
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- ncurses: ">=6.3,<7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda
+ ipykernel: ""
+ ipywidgets: ""
+ jupyter_console: ""
+ nbconvert: ""
+ notebook: ""
+ python: ">=3.6"
+ qtconsole-base: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda
hash:
- md5: f17f77f2acf4d344734bda76829ce14e
- sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568
+ md5: 056b8cc3d9b03f54fc49e6d70d7dc359
+ sha256: 308b521b149e7a1739f717538b929bc2d87b9001b94f13ee8baa939632a86150
category: main
optional: false
- - name: atk-1.0
- version: 2.38.0
- manager: conda
- platform: osx-64
- dependencies:
- libcxx: ">=14.0.4"
- libglib: ">=2.74.1,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h1d18e73_1.tar.bz2
- hash:
- md5: 5a538295f97a484ee332aacc131718b5
- sha256: 7af1f86cfc85b1e57547e2a81c069095545ff6a52f3f8e15184df954dce446dd
- category: dev
- optional: true
- - name: aws-c-event-stream
- version: 0.3.2
+ - name: jupyter
+ version: 1.0.0
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.3.2-hb6e475e_6.conda
+ ipywidgets: ""
+ notebook: ""
+ ipykernel: ""
+ nbconvert: ""
+ qtconsole-base: ""
+ jupyter_console: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda
hash:
- md5: 19b99f3797acdd59e95a8c1e9cc648df
- sha256: 24f9fe6ad0f22c36d1dc49280fcbe90a157c3ba65664f27746aa6e67d6cbbb63
+ md5: 056b8cc3d9b03f54fc49e6d70d7dc359
+ sha256: 308b521b149e7a1739f717538b929bc2d87b9001b94f13ee8baa939632a86150
category: main
optional: false
- - name: aws-c-http
- version: 0.7.14
+ - name: jupyter
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-compression: ">=0.2.17,<0.2.18.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.7.14-h950a07a_1.conda
+ ipywidgets: ""
+ notebook: ""
+ ipykernel: ""
+ nbconvert: ""
+ qtconsole-base: ""
+ jupyter_console: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda
hash:
- md5: 0827fb5a8c4a4d209fa44088f3046b40
- sha256: 9fe20e7a79f7a66dec9b4c4eccc56db3e820b7cc380689fff53f19e0b1c05b72
+ md5: 056b8cc3d9b03f54fc49e6d70d7dc359
+ sha256: 308b521b149e7a1739f717538b929bc2d87b9001b94f13ee8baa939632a86150
category: main
optional: false
- - name: brotli
- version: 1.1.0
+ - name: jupyter-lsp
+ version: 2.2.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- brotli-bin: 1.1.0
- libbrotlidec: 1.1.0
- libbrotlienc: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h0dc2134_1.conda
+ importlib-metadata: ">=4.8.3"
+ jupyter_server: ">=1.1.2"
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 9272dd3b19c4e8212f8542cefd5c3d67
- sha256: 4bf66d450be5d3f9ebe029b50f818d088b1ef9666b1f19e90c85479c77bbdcde
+ md5: d1a5efc65bfabc3bfebf4d3a204da897
+ sha256: 0f995f60609fb50db74bed3637165ad202cf091ec0804519c11b6cffce901e88
category: main
optional: false
- - name: fontconfig
- version: 2.14.2
+ - name: jupyter-lsp
+ version: 2.2.1
manager: conda
platform: osx-64
dependencies:
- expat: ">=2.5.0,<3.0a0"
- freetype: ">=2.12.1,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda
+ python: ">=3.8"
+ importlib-metadata: ">=4.8.3"
+ jupyter_server: ">=1.1.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 86cc5867dfbee4178118392bae4a3c89
- sha256: f63e6d1d6aef8ba6de4fc54d3d7898a153479888d40ffdf2e4cfad6f92679d34
+ md5: d1a5efc65bfabc3bfebf4d3a204da897
+ sha256: 0f995f60609fb50db74bed3637165ad202cf091ec0804519c11b6cffce901e88
category: main
optional: false
- - name: freexl
- version: 2.0.0
+ - name: jupyter-lsp
+ version: 2.2.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libexpat: ">=2.5.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- minizip: ">=4.0.1,<5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/freexl-2.0.0-h3ec172f_0.conda
+ python: ">=3.8"
+ importlib-metadata: ">=4.8.3"
+ jupyter_server: ">=1.1.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 640c34a8084e2a812bcee5b804597fc9
- sha256: 9d59f1894c3b526e6806e376e979b81d0df23a836415122b86458aef72cda24a
+ md5: d1a5efc65bfabc3bfebf4d3a204da897
+ sha256: 0f995f60609fb50db74bed3637165ad202cf091ec0804519c11b6cffce901e88
category: main
optional: false
- - name: gdk-pixbuf
- version: 2.42.10
+ - name: jupyter-resource-usage
+ version: 1.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libglib: ">=2.78.0,<3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.10-hbb5a27d_4.conda
+ jupyter_server: ">=2.0.0,<3"
+ psutil: ">=5.6.0,<6"
+ python: ">=3.8"
+ pyzmq: ">=19"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-1.0.1-pyhd8ed1ab_0.conda
hash:
- md5: 72c45a278f6250c087c2389bcdcc9fd4
- sha256: b19b3bda07c97d7b550d2fd45c813a1af15ed21d274aa280debf81d07f6edf11
+ md5: b079fd1b0ee75199a042537d036b496f
+ sha256: 076d6cc25e0338e725a653eb0bb468ba920e49449143335696581fe98f86853b
category: dev
optional: true
- - name: gts
- version: 0.7.6
+ - name: jupyter-resource-usage
+ version: 1.0.1
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libglib: ">=2.76.3,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda
+ python: ">=3.8"
+ jupyter_server: ">=2.0.0,<3"
+ psutil: ">=5.6.0,<6"
+ pyzmq: ">=19"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-1.0.1-pyhd8ed1ab_0.conda
hash:
- md5: 848cc963fcfbd063c7a023024aa3bec0
- sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314
+ md5: b079fd1b0ee75199a042537d036b496f
+ sha256: 076d6cc25e0338e725a653eb0bb468ba920e49449143335696581fe98f86853b
category: dev
optional: true
- - name: krb5
- version: 1.21.2
- manager: conda
- platform: osx-64
- dependencies:
- libcxx: ">=15.0.7"
- libedit: ">=3.1.20191231,<4.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.2-hb884880_0.conda
- hash:
- md5: 80505a68783f01dc8d7308c075261b2f
- sha256: 081ae2008a21edf57c048f331a17c65d1ccb52d6ca2f87ee031a73eff4dc0fc6
- category: main
- optional: false
- - name: lcms2
- version: "2.15"
+ - name: jupyter-resource-usage
+ version: 1.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.15-hd6ba6f3_3.conda
+ python: ">=3.8"
+ jupyter_server: ">=2.0.0,<3"
+ psutil: ">=5.6.0,<6"
+ pyzmq: ">=19"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-1.0.1-pyhd8ed1ab_0.conda
hash:
- md5: 8059507d52f477fbd4b81841e085e25b
- sha256: b2234f24e3b0030762430ec3414410119d1129804a95ef65af50ad36cabd9bd5
- category: main
- optional: false
- - name: libopenblas
- version: 0.3.24
+ md5: b079fd1b0ee75199a042537d036b496f
+ sha256: 076d6cc25e0338e725a653eb0bb468ba920e49449143335696581fe98f86853b
+ category: dev
+ optional: true
+ - name: jupyter_client
+ version: 8.6.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libgfortran: 5.*
- libgfortran5: ">=12.3.0"
- llvm-openmp: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.24-openmp_h48a4ad5_0.conda
+ importlib_metadata: ">=4.8.3"
+ jupyter_core: ">=4.12,!=5.0.*"
+ python: ">=3.8"
+ python-dateutil: ">=2.8.2"
+ pyzmq: ">=23.0"
+ tornado: ">=6.2"
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda
hash:
- md5: 077718837dd06cf0c3089070108869f6
- sha256: ff2c14f7ed121f1df3ad06bea353288eade77c12fb891212a27af88a61483490
+ md5: 6bd3f1069cdebb44c7ae9efb900e312d
+ sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d
category: main
optional: false
- - name: libthrift
- version: 0.19.0
+ - name: jupyter_client
+ version: 8.6.0
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libevent: ">=2.1.12,<2.1.13.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda
+ python: ">=3.8"
+ python-dateutil: ">=2.8.2"
+ jupyter_core: ">=4.12,!=5.0.*"
+ traitlets: ">=5.3"
+ importlib_metadata: ">=4.8.3"
+ pyzmq: ">=23.0"
+ tornado: ">=6.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda
hash:
- md5: b152655bfad7c2374ff03be0596052b6
- sha256: 4346c25ef6e2ff3d0fc93074238508531188ecd0dbea6414f6cb93a7775072c4
+ md5: 6bd3f1069cdebb44c7ae9efb900e312d
+ sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d
category: main
optional: false
- - name: libwebp
- version: 1.3.2
- manager: conda
- platform: osx-64
- dependencies:
- giflib: ">=5.2.1,<5.3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.3.2-h44782d1_1.conda
- hash:
- md5: 46d48ff2cd600a82db18d7b83471aa86
- sha256: 4d7e1efb76e398f578c5a3d0905c5eca1e4a93298aed6e2f7a10854f6671dfe8
- category: dev
- optional: true
- - name: openjpeg
- version: 2.5.0
+ - name: jupyter_client
+ version: 8.6.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.0-ha4da562_3.conda
+ python: ">=3.8"
+ python-dateutil: ">=2.8.2"
+ jupyter_core: ">=4.12,!=5.0.*"
+ traitlets: ">=5.3"
+ importlib_metadata: ">=4.8.3"
+ pyzmq: ">=23.0"
+ tornado: ">=6.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda
hash:
- md5: 40a36f8e9a6fdf6a78c6428ee6c44188
- sha256: fdccd9668b85bf6e798b628bceed5ff764e1114cfc4e6a4dee551cafbe549e74
+ md5: 6bd3f1069cdebb44c7ae9efb900e312d
+ sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d
category: main
optional: false
- - name: orc
- version: 1.9.0
+ - name: jupyter_console
+ version: 6.6.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/orc-1.9.0-hd1092d7_4.conda
+ ipykernel: ">=6.14"
+ ipython: ""
+ jupyter_client: ">=7.0.0"
+ jupyter_core: ">=4.12,!=5.0.*"
+ prompt_toolkit: ">=3.0.30"
+ pygments: ""
+ python: ">=3.7"
+ pyzmq: ">=17"
+ traitlets: ">=5.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda
hash:
- md5: f6c7cd7734b3caa6d5549086590121af
- sha256: 6a7e6835c81157ca7545917412d9d4e9bb51357d71a2e63454fe406783a55c76
+ md5: 7cf6f52a66f8e3cd9d8b6c231262dcab
+ sha256: 4e51764d5fe2f6e43d83bcfbcf8b4da6569721bf82eaf4d647be8717cd6be75a
category: main
optional: false
- - name: prettier
- version: 3.1.0
+ - name: jupyter_console
+ version: 6.6.3
manager: conda
platform: osx-64
dependencies:
- nodejs: ">=20.8.1,<21.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.1.0-hbd11d21_0.conda
+ ipython: ""
+ pygments: ""
+ python: ">=3.7"
+ pyzmq: ">=17"
+ jupyter_core: ">=4.12,!=5.0.*"
+ jupyter_client: ">=7.0.0"
+ ipykernel: ">=6.14"
+ traitlets: ">=5.4"
+ prompt_toolkit: ">=3.0.30"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda
hash:
- md5: 0f2d6f2c329df13e0ff0bd3748b2f74f
- sha256: 9dfd2b3d2d4c3cbdeb341263d5107b7018197ad167633387832def6f68154e55
+ md5: 7cf6f52a66f8e3cd9d8b6c231262dcab
+ sha256: 4e51764d5fe2f6e43d83bcfbcf8b4da6569721bf82eaf4d647be8717cd6be75a
category: main
optional: false
- - name: python
- version: 3.11.6
+ - name: jupyter_console
+ version: 6.6.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libffi: ">=3.4,<4.0a0"
- libsqlite: ">=3.43.0,<4.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- ncurses: ">=6.4,<7.0a0"
- openssl: ">=3.1.3,<4.0a0"
- readline: ">=8.2,<9.0a0"
- tk: ">=8.6.13,<8.7.0a0"
- tzdata: ""
- xz: ">=5.2.6,<6.0a0"
- pip: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.6-h30d4d87_0_cpython.conda
+ ipython: ""
+ pygments: ""
+ python: ">=3.7"
+ pyzmq: ">=17"
+ jupyter_core: ">=4.12,!=5.0.*"
+ jupyter_client: ">=7.0.0"
+ ipykernel: ">=6.14"
+ traitlets: ">=5.4"
+ prompt_toolkit: ">=3.0.30"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda
hash:
- md5: 4d66c5fc01e9be526afe5d828d4de24d
- sha256: e3ed331204fbeb03a9a2c2fa834e74997ad4f732ba2124b36f327d38b0cded93
+ md5: 7cf6f52a66f8e3cd9d8b6c231262dcab
+ sha256: 4e51764d5fe2f6e43d83bcfbcf8b4da6569721bf82eaf4d647be8717cd6be75a
category: main
optional: false
- - name: re2
- version: 2023.06.02
+ - name: jupyter_core
+ version: 5.5.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libre2-11: 2023.06.02
- url: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.06.02-hd34609a_0.conda
+ platformdirs: ">=2.5"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.5.0-py311h38be061_0.conda
hash:
- md5: e498042c254db56d398b6ee858888b9d
- sha256: dd749346b868ac9a8765cd18e102f808103330b3fc1fac5d267fbf4257ea31c9
+ md5: cee83be29258275f75029125e186ab6d
+ sha256: 60bfaec278b3ea4462abd8321b47412864c54bd63575e2698da81c5755e617c1
category: main
optional: false
- - name: sqlite
- version: 3.44.0
+ - name: jupyter_core
+ version: 5.5.0
manager: conda
platform: osx-64
dependencies:
- libsqlite: 3.44.0
- libzlib: ">=1.2.13,<1.3.0a0"
- ncurses: ">=6.4,<7.0a0"
- readline: ">=8.2,<9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.44.0-h7461747_0.conda
+ platformdirs: ">=2.5"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.5.0-py311h6eed73b_0.conda
hash:
- md5: 4c125fcbf57aa07682468a1e9d202cfa
- sha256: a222b2686f7e62c27ec2aaa64e7f2d927a883e5ef62e4ea060b6bd53c032cfca
+ md5: d7ee59df3fd2eec8dd60c1fcfa29a73d
+ sha256: d570b1554e3fd90085db1eb23ba61d595f1e588865b603ab193c73a2db50b64d
category: main
optional: false
- - name: aiofiles
- version: 23.2.1
+ - name: jupyter_core
+ version: 5.5.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda
+ platformdirs: ">=2.5"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.5.0-py311h267d04e_0.conda
hash:
- md5: a2ee5b45771a700cf442a2edb151594e
- sha256: 98c9b4480dba1ae72c9a187cee7164ed1704f03c82576940311b5c3b55118ee5
+ md5: e8e88dea6f85c4efad941afd8c972376
+ sha256: 447426241b1d8dc1a468ecd4501469f39e2f6967a9c8698edbe20615ba8735ad
category: main
optional: false
- - name: alabaster
- version: 0.7.13
+ - name: jupyter_events
+ version: 0.9.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda
+ jsonschema-with-format-nongpl: ">=4.18.0"
+ python: ">=3.8"
+ python-json-logger: ">=2.0.4"
+ pyyaml: ">=5.3"
+ referencing: ""
+ rfc3339-validator: ""
+ rfc3986-validator: ">=0.1.1"
+ traitlets: ">=5.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: 06006184e203b61d3525f90de394471e
- sha256: b2d160a050996950434c6e87a174fc01c4a937cbeffbdd20d1b46126b4478a95
+ md5: 00ba25993f0dba38cf72a7224e33289f
+ sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3
category: main
optional: false
- - name: anyascii
- version: 0.3.2
+ - name: jupyter_events
+ version: 0.9.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/anyascii-0.3.2-pyhd8ed1ab_0.conda
+ rfc3339-validator: ""
+ referencing: ""
+ python: ">=3.8"
+ pyyaml: ">=5.3"
+ rfc3986-validator: ">=0.1.1"
+ traitlets: ">=5.3"
+ python-json-logger: ">=2.0.4"
+ jsonschema-with-format-nongpl: ">=4.18.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: 70b6fc71d80ea6176f5302ebbeb13d8a
- sha256: 8ad0591c262e63f3a66fe093886a4b5d00d3ad6223560fc2a88da441c672fddc
+ md5: 00ba25993f0dba38cf72a7224e33289f
+ sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3
category: main
optional: false
- - name: appdirs
- version: 1.4.4
+ - name: jupyter_events
+ version: 0.9.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
+ rfc3339-validator: ""
+ referencing: ""
+ python: ">=3.8"
+ pyyaml: ">=5.3"
+ rfc3986-validator: ">=0.1.1"
+ traitlets: ">=5.3"
+ python-json-logger: ">=2.0.4"
+ jsonschema-with-format-nongpl: ">=4.18.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: 5f095bc6454094e96f146491fd03633b
- sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111
+ md5: 00ba25993f0dba38cf72a7224e33289f
+ sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3
category: main
optional: false
- - name: appnope
- version: 0.1.3
+ - name: jupyter_server
+ version: 2.11.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2
+ anyio: ">=3.1.0"
+ argon2-cffi: ""
+ jinja2: ""
+ jupyter_client: ">=7.4.4"
+ jupyter_core: ">=4.12,!=5.0.*"
+ jupyter_events: ">=0.9.0"
+ jupyter_server_terminals: ""
+ nbconvert-core: ">=6.4.4"
+ nbformat: ">=5.3.0"
+ overrides: ""
+ packaging: ""
+ prometheus_client: ""
+ python: ">=3.8"
+ pyzmq: ">=24"
+ send2trash: ">=1.8.2"
+ terminado: ">=0.8.3"
+ tornado: ">=6.2.0"
+ traitlets: ">=5.6.0"
+ websocket-client: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 54ac328d703bff191256ffa1183126d1
- sha256: b209a68ac55eb9ecad7042f0d4eedef5da924699f6cdf54ac1826869cfdae742
+ md5: 0699b715659c026f7f81c27d0e744205
+ sha256: 605825c0e2d5af7935b37319b9a46ff39e081e7a0f4dc973f0dd583f41c69ce5
category: main
optional: false
- - name: astroid
- version: 3.0.1
+ - name: jupyter_server
+ version: 2.11.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/astroid-3.0.1-py311h6eed73b_0.conda
+ packaging: ""
+ jinja2: ""
+ prometheus_client: ""
+ websocket-client: ""
+ argon2-cffi: ""
+ overrides: ""
+ jupyter_server_terminals: ""
+ python: ">=3.8"
+ terminado: ">=0.8.3"
+ jupyter_core: ">=4.12,!=5.0.*"
+ nbconvert-core: ">=6.4.4"
+ tornado: ">=6.2.0"
+ jupyter_client: ">=7.4.4"
+ nbformat: ">=5.3.0"
+ pyzmq: ">=24"
+ traitlets: ">=5.6.0"
+ anyio: ">=3.1.0"
+ send2trash: ">=1.8.2"
+ jupyter_events: ">=0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 39aff7722673b4083e5b0d9aa7e33681
- sha256: 9b3233dda23466616bdab742c890062ec757e985f9314c93b5244d5c624b3c1f
+ md5: 0699b715659c026f7f81c27d0e744205
+ sha256: 605825c0e2d5af7935b37319b9a46ff39e081e7a0f4dc973f0dd583f41c69ce5
category: main
optional: false
- - name: attrs
- version: 23.1.0
+ - name: jupyter_server
+ version: 2.11.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda
+ packaging: ""
+ jinja2: ""
+ prometheus_client: ""
+ websocket-client: ""
+ argon2-cffi: ""
+ overrides: ""
+ jupyter_server_terminals: ""
+ python: ">=3.8"
+ terminado: ">=0.8.3"
+ jupyter_core: ">=4.12,!=5.0.*"
+ nbconvert-core: ">=6.4.4"
+ tornado: ">=6.2.0"
+ jupyter_client: ">=7.4.4"
+ nbformat: ">=5.3.0"
+ pyzmq: ">=24"
+ traitlets: ">=5.6.0"
+ anyio: ">=3.1.0"
+ send2trash: ">=1.8.2"
+ jupyter_events: ">=0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.1-pyhd8ed1ab_0.conda
hash:
- md5: 3edfead7cedd1ab4400a6c588f3e75f8
- sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821
+ md5: 0699b715659c026f7f81c27d0e744205
+ sha256: 605825c0e2d5af7935b37319b9a46ff39e081e7a0f4dc973f0dd583f41c69ce5
category: main
optional: false
- - name: aws-c-auth
- version: 0.7.6
+ - name: jupyter_server_terminals
+ version: 0.4.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.6-hc3630cc_0.conda
+ python: ">=3.8"
+ terminado: ">=0.8.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
hash:
- md5: 1d23f626932e996892200295251d3f21
- sha256: c377f6d42e895409fef51d868f0061b4a99cbf728030abcde318a37a12c0518a
+ md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
+ sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
category: main
optional: false
- - name: aws-c-mqtt
- version: 0.9.9
+ - name: jupyter_server_terminals
+ version: 0.4.4
manager: conda
platform: osx-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.9.9-h5e4a26e_0.conda
+ python: ">=3.8"
+ terminado: ">=0.8.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
hash:
- md5: 61eba6810125f2214ad6863bf8941c4e
- sha256: e1812608ca7587561a7c8584c9c202404bfdf2d6f2e8f135fda92f5abf1556a4
+ md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
+ sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
category: main
optional: false
- - name: backoff
- version: 2.2.1
- manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: 4600709bd85664d8606ae0c76642f8db
- sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de
- category: dev
- optional: true
- - name: backports
- version: "1.0"
+ - name: jupyter_server_terminals
+ version: 0.4.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda
+ python: ">=3.8"
+ terminado: ">=0.8.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
hash:
- md5: 54ca2e08b3220c148a1d8329c2678e02
- sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd
+ md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
+ sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
category: main
optional: false
- - name: backports.zoneinfo
- version: 0.2.1
+ - name: jupyterlab
+ version: 4.0.9
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/backports.zoneinfo-0.2.1-py311h6eed73b_8.conda
+ async-lru: ">=1.0.0"
+ importlib_metadata: ">=4.8.3"
+ importlib_resources: ">=1.4"
+ ipykernel: ""
+ jinja2: ">=3.0.3"
+ jupyter-lsp: ">=2.0.0"
+ jupyter_core: ""
+ jupyter_server: ">=2.4.0,<3"
+ jupyterlab_server: ">=2.19.0,<3"
+ notebook-shim: ">=0.2"
+ packaging: ""
+ python: ">=3.8"
+ tomli: ""
+ tornado: ">=6.2.0"
+ traitlets: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.9-pyhd8ed1ab_0.conda
hash:
- md5: 82f37234dbc0254423c109e9e21ce332
- sha256: f6064fc69833fed6d02738d29132bc87a6195098ec74257f53044de306694ff3
- category: main
- optional: false
- - name: blinker
- version: 1.7.0
+ md5: 7da6e874b0904e411ec2fd8e6082841e
+ sha256: 1c55e63e4b84810796c8827370ebd597ad3f45bcd0c1fa9975a363bc6a895f23
+ category: dev
+ optional: true
+ - name: jupyterlab
+ version: 4.0.9
manager: conda
platform: osx-64
dependencies:
+ packaging: ""
+ traitlets: ""
+ tomli: ""
+ ipykernel: ""
+ jupyter_core: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda
+ jinja2: ">=3.0.3"
+ tornado: ">=6.2.0"
+ importlib_metadata: ">=4.8.3"
+ jupyter_server: ">=2.4.0,<3"
+ importlib_resources: ">=1.4"
+ jupyter-lsp: ">=2.0.0"
+ async-lru: ">=1.0.0"
+ jupyterlab_server: ">=2.19.0,<3"
+ notebook-shim: ">=0.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.9-pyhd8ed1ab_0.conda
hash:
- md5: 550da20b2c2e38be9cc44bb819fda5d5
- sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177
- category: main
- optional: false
- - name: brotli-python
- version: 1.1.0
+ md5: 7da6e874b0904e411ec2fd8e6082841e
+ sha256: 1c55e63e4b84810796c8827370ebd597ad3f45bcd0c1fa9975a363bc6a895f23
+ category: dev
+ optional: true
+ - name: jupyterlab
+ version: 4.0.9
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py311hdf8f085_1.conda
+ packaging: ""
+ traitlets: ""
+ tomli: ""
+ ipykernel: ""
+ jupyter_core: ""
+ python: ">=3.8"
+ jinja2: ">=3.0.3"
+ tornado: ">=6.2.0"
+ importlib_metadata: ">=4.8.3"
+ jupyter_server: ">=2.4.0,<3"
+ importlib_resources: ">=1.4"
+ jupyter-lsp: ">=2.0.0"
+ async-lru: ">=1.0.0"
+ jupyterlab_server: ">=2.19.0,<3"
+ notebook-shim: ">=0.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.9-pyhd8ed1ab_0.conda
hash:
- md5: 546fdccabb90492fbaf2da4ffb78f352
- sha256: 0f5e0a7de58006f349220365e32db521a1fe494c37ee455e5ecf05b8fe567dcc
+ md5: 7da6e874b0904e411ec2fd8e6082841e
+ sha256: 1c55e63e4b84810796c8827370ebd597ad3f45bcd0c1fa9975a363bc6a895f23
+ category: dev
+ optional: true
+ - name: jupyterlab_pygments
+ version: 0.3.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ pygments: ">=2.4.1,<3"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: 3f0915b1fb2252ab73686a533c5f9d3f
+ sha256: 6ee596138a778a841261476408435da78e3000661f3ee025fb6c3ed17d28c8b3
category: main
optional: false
- - name: cached_property
- version: 1.5.2
+ - name: jupyterlab_pygments
+ version: 0.3.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ python: ">=3.7"
+ pygments: ">=2.4.1,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 576d629e47797577ab0f1b351297ef4a
- sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
+ md5: 3f0915b1fb2252ab73686a533c5f9d3f
+ sha256: 6ee596138a778a841261476408435da78e3000661f3ee025fb6c3ed17d28c8b3
category: main
optional: false
- - name: cachetools
- version: 5.3.2
+ - name: jupyterlab_pygments
+ version: 0.3.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda
+ pygments: ">=2.4.1,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 185cc1bf1d5af90020292888a3c7eb5d
- sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad
+ md5: 3f0915b1fb2252ab73686a533c5f9d3f
+ sha256: 6ee596138a778a841261476408435da78e3000661f3ee025fb6c3ed17d28c8b3
category: main
optional: false
- - name: cachy
- version: 0.3.0
+ - name: jupyterlab_server
+ version: 2.25.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-pyhd8ed1ab_1.tar.bz2
+ babel: ">=2.10"
+ importlib-metadata: ">=4.8.3"
+ jinja2: ">=3.0.3"
+ json5: ">=0.9.0"
+ jsonschema: ">=4.18"
+ jupyter_server: ">=1.21,<3"
+ packaging: ">=21.3"
+ python: ">=3.8"
+ requests: ">=2.31"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.2-pyhd8ed1ab_0.conda
hash:
- md5: 5dfee17f24e2dfd18d7392b48c9351e2
- sha256: 9b193a4e483c4d0004bc5b88fac7a02516b6311137ab61b8db85aa9741422e35
+ md5: f45557d5551b54dc2a74133a310bc1ba
+ sha256: 51c13a87072a64df1a0ae14fbb470bc4e36becf4d50693ffab53174199ca4f4b
category: main
optional: false
- - name: cairo
- version: 1.18.0
+ - name: jupyterlab_server
+ version: 2.25.2
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- icu: ">=73.2,<74.0a0"
- libcxx: ">=16.0.6"
- libglib: ">=2.78.0,<3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- pixman: ">=0.42.2,<1.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h99e66fa_0.conda
+ python: ">=3.8"
+ packaging: ">=21.3"
+ jinja2: ">=3.0.3"
+ importlib-metadata: ">=4.8.3"
+ jupyter_server: ">=1.21,<3"
+ babel: ">=2.10"
+ json5: ">=0.9.0"
+ requests: ">=2.31"
+ jsonschema: ">=4.18"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.2-pyhd8ed1ab_0.conda
hash:
- md5: 13f830b1bf46018f7062d1b798d53eca
- sha256: f8d1142cf244eadcbc44e8ca2266aa61a05b6cda5571f9b745ba32c7ebbfdfba
+ md5: f45557d5551b54dc2a74133a310bc1ba
+ sha256: 51c13a87072a64df1a0ae14fbb470bc4e36becf4d50693ffab53174199ca4f4b
category: main
optional: false
- - name: catalystcoop.dbfread
- version: 3.0.0
+ - name: jupyterlab_server
+ version: 2.25.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.dbfread-3.0.0-py_0.tar.bz2
+ python: ">=3.8"
+ packaging: ">=21.3"
+ jinja2: ">=3.0.3"
+ importlib-metadata: ">=4.8.3"
+ jupyter_server: ">=1.21,<3"
+ babel: ">=2.10"
+ json5: ">=0.9.0"
+ requests: ">=2.31"
+ jsonschema: ">=4.18"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.2-pyhd8ed1ab_0.conda
hash:
- md5: 301d8b0d49e76f6bd586d2c96c2e259e
- sha256: bfba35085bcf84c3368b38ed0c5e6f03aeadf0712e866cb9e89283d6ff5292d7
+ md5: f45557d5551b54dc2a74133a310bc1ba
+ sha256: 51c13a87072a64df1a0ae14fbb470bc4e36becf4d50693ffab53174199ca4f4b
category: main
optional: false
- - name: cchardet
- version: 2.1.7
+ - name: jupyterlab_widgets
+ version: 3.0.9
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/cchardet-2.1.7-py311hdf8f085_5.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda
hash:
- md5: db8be41b81fe09437c5f1bfef4949609
- sha256: 98784ac0cca2b0b6149d8239d5bda9ff28ba9d115cf010d9e365bcd7b2db9206
+ md5: 8370e0a9dc443f9b45a23fd30e7a6b3b
+ sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3
category: main
optional: false
- - name: certifi
- version: 2023.7.22
+ - name: jupyterlab_widgets
+ version: 3.0.9
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda
hash:
- md5: 7f3dbc9179b4dde7da98dfb151d0ad22
- sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31
+ md5: 8370e0a9dc443f9b45a23fd30e7a6b3b
+ sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3
category: main
optional: false
- - name: cfgv
- version: 3.3.1
+ - name: jupyterlab_widgets
+ version: 3.0.9
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda
hash:
- md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
- sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
+ md5: 8370e0a9dc443f9b45a23fd30e7a6b3b
+ sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3
category: main
optional: false
- - name: chardet
- version: 5.2.0
+ - name: kealib
+ version: 1.5.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/chardet-5.2.0-py311h6eed73b_1.conda
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.2-hcd42e92_1.conda
hash:
- md5: dd58f7f16513cea1fea710651e4df728
- sha256: 5826e13627594bafa2f0b4074d9233b0de74227835d249641f216423b3dc8dfc
+ md5: b04c039f0bd511533a0d8bc8a7b6835e
+ sha256: 1278aaba7bfd9a143a58a2d5e13296702b6bd77f7b43f6ecace555a55579bdad
category: main
optional: false
- - name: charset-normalizer
- version: 3.3.2
+ - name: kealib
+ version: 1.5.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-64/kealib-1.5.2-h052fcf7_1.conda
hash:
- md5: 7f4a9e3fcff3f6356ae99244a014da6a
- sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
+ md5: 346aec056b5619302c4aa538fbee4bdf
+ sha256: b3982fad0bcbe07a8129d93b1977f3a8a26ea96aa5aae7ee1395917a2cac2db2
category: main
optional: false
- - name: click
- version: 8.1.7
+ - name: kealib
+ version: 1.5.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/kealib-1.5.2-h47b5e36_1.conda
hash:
- md5: f3ad426304898027fc619827ff428eca
- sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
+ md5: 88abe34211296bbc0ba1871fd2b13962
+ sha256: 93e9b03cd9035766c43e5f7f851fc07a4f68b79fd48c1306280f17093a8ae746
category: main
optional: false
- - name: cloudpickle
- version: 3.0.0
+ - name: keyring
+ version: 24.3.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda
+ importlib_metadata: ">=4.11.4"
+ jaraco.classes: ""
+ jeepney: ">=0.4.2"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ secretstorage: ">=3.2"
+ url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.3.0-py311h38be061_0.conda
hash:
- md5: 753d29fe41bb881e4b9c004f0abf973f
- sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754
+ md5: 09e27eb40c88f732a4e0ea5b70f63ae0
+ sha256: 29909aa6935d34f46b9121bfb504e8305af525a27639bbf5d2692fce2935e9bc
category: main
optional: false
- - name: colorama
- version: 0.4.6
+ - name: keyring
+ version: 24.3.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: 3faab06a954c2a04039983f2c4a50d99
- sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
+ importlib_metadata: ">=4.11.4"
+ jaraco.classes: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/keyring-24.3.0-py311h6eed73b_0.conda
+ hash:
+ md5: 2477bfca2a6eae7d1b72530225febae6
+ sha256: 1cafeae8549f6f04da024dd2863f027b587018c7a1a570399e366053bc2cf16c
category: main
optional: false
- - name: crashtest
- version: 0.4.1
+ - name: keyring
+ version: 24.3.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/crashtest-0.4.1-pyhd8ed1ab_0.tar.bz2
+ importlib_metadata: ">=4.11.4"
+ jaraco.classes: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/keyring-24.3.0-py311h267d04e_0.conda
hash:
- md5: 709a2295dd907bb34afb57d54320642f
- sha256: 2f05954a3faf0700c14c1deddc085385160ee32abe111699c78d9cb277e915cc
+ md5: 3ef01ab147d3d43bb0990eba7a1fcaec
+ sha256: f7791c4a77253a2278eaa3dad298f578af5af4f5e8e69e46c6dca23259dd949a
category: main
optional: false
- - name: cycler
- version: 0.12.1
+ - name: keyutils
+ version: 1.6.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=10.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2
hash:
- md5: 5cd86562580f274031ede6aa6aa24441
- sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8
+ md5: 30186d27e2c9fa62b45fb1476b7200e3
+ sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb
category: main
optional: false
- - name: dagster-pipes
- version: 1.5.9
+ - name: kiwisolver
+ version: 1.4.5
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda
hash:
- md5: 0a9787859365c4d2425e589ac53c462b
- sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
+ md5: 2c65bdf442b0d37aad080c8a4e0d452f
+ sha256: 723b0894d2d2b05a38f9c5a285d5a0a5baa27235ceab6531dbf262ba7c6955c1
category: main
optional: false
- - name: dataclasses
- version: "0.8"
+ - name: kiwisolver
+ version: 1.4.5
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.5-py311h5fe6e05_1.conda
hash:
- md5: a362b2124b06aad102e2ee4581acee7d
- sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92
+ md5: 24305b23f7995de72bbd53b7c01242a2
+ sha256: 586a4d0a17e6cfd9f8fdee56106d263ee40ca156832774d6e899f82ad68ac8d0
category: main
optional: false
- - name: debugpy
- version: 1.8.0
+ - name: kiwisolver
+ version: 1.4.5
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
libcxx: ">=15.0.7"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.0-py311hdf8f085_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.5-py311he4fd1f5_1.conda
hash:
- md5: 7f20ef8a63be62d1bcdaa8136ec09647
- sha256: 93e94c9077b13f3dde47794bb6ca02f9c3174c794edf889158306a54764a075c
+ md5: 4c871d65040b8c7bbb914df7f8f11492
+ sha256: 907af50734789d47b3e8b2148dde763699dc746c64e5849baf6bd720c8cd0235
category: main
optional: false
- - name: decorator
- version: 5.1.1
+ - name: krb5
+ version: 1.21.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2
+ keyutils: ">=1.6.1,<2.0a0"
+ libedit: ">=3.1.20191231,<4.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda
hash:
- md5: 43afe5ab04e35e17ba28649471dd7364
- sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2
+ md5: cd95826dbd331ed1be26bdf401432844
+ sha256: 259bfaae731989b252b7d2228c1330ef91b641c9d68ff87dae02cbae682cb3e4
category: main
optional: false
- - name: defusedxml
- version: 0.7.1
+ - name: krb5
+ version: 1.21.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
+ libcxx: ">=15.0.7"
+ libedit: ">=3.1.20191231,<4.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.2-hb884880_0.conda
hash:
- md5: 961b3a227b437d82ad7054484cfa71b2
- sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
+ md5: 80505a68783f01dc8d7308c075261b2f
+ sha256: 081ae2008a21edf57c048f331a17c65d1ccb52d6ca2f87ee031a73eff4dc0fc6
category: main
optional: false
- - name: distlib
- version: 0.3.7
+ - name: krb5
+ version: 1.21.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: 2.7|>=3.6
- url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ libedit: ">=3.1.20191231,<4.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.2-h92f50d5_0.conda
hash:
- md5: 12d8aae6994f342618443a8f05c652a0
- sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
+ md5: 92f1cff174a538e0722bf2efb16fc0b2
+ sha256: 70bdb9b4589ec7c7d440e485ae22b5a352335ffeb91a771d4c162996c3070875
category: main
optional: false
- - name: docstring_parser
- version: "0.15"
+ - name: latexcodec
+ version: 2.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda
+ python: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 031fcb28b8e80c1f7bec22ccdf4904b2
- sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706
+ md5: 8d67904973263afd2985ba56aa2d6bb4
+ sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f
category: main
optional: false
- - name: docutils
- version: 0.20.1
+ - name: latexcodec
+ version: 2.0.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py311h6eed73b_2.conda
+ python: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: d56b49f1a2c908d05d1ca6b3f85d0fd5
- sha256: 869e919066b308794e399bc551fc508c175da5f9324b7a324eb259cef8adabf2
+ md5: 8d67904973263afd2985ba56aa2d6bb4
+ sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f
category: main
optional: false
- - name: entrypoints
- version: "0.4"
+ - name: latexcodec
+ version: 2.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 3cf04868fee0a029769bd41f4b2fbf2d
- sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af
+ md5: 8d67904973263afd2985ba56aa2d6bb4
+ sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f
category: main
optional: false
- - name: et_xmlfile
- version: 1.1.0
+ - name: lcms2
+ version: "2.15"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hb7c19ff_3.conda
hash:
- md5: a2f2138597905eaa72e561d8efb42cf3
- sha256: 0c7bb50e1382615a660468dc531b8b17c5b91b88a02ed131c8e3cc63db507ce2
+ md5: e96637dd92c5f340215c753a5c9a22d7
+ sha256: cc0b2ddab52b20698b26fe8622ebe37e0d462d8691a1f324e7b00f7d904765e3
category: main
optional: false
- - name: exceptiongroup
- version: 1.1.3
+ - name: lcms2
+ version: "2.15"
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.15-hd6ba6f3_3.conda
hash:
- md5: e6518222753f519e911e83136d2158d9
- sha256: c28f715e049fe0f09785660bcbffa175ffb438720e5bc5a60d56d4b08364b315
+ md5: 8059507d52f477fbd4b81841e085e25b
+ sha256: b2234f24e3b0030762430ec3414410119d1129804a95ef65af50ad36cabd9bd5
category: main
optional: false
- - name: execnet
- version: 2.0.2
+ - name: lcms2
+ version: "2.15"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.15-hf2736f0_3.conda
hash:
- md5: 67de0d8241e1060a479e3c37793e26f9
- sha256: 88ea68a360198af39368beecf057af6b31f0ae38071b2bdb2aa961b6ae5427c0
+ md5: bbaac531169fed3e09ae31aff80aa069
+ sha256: 3d07ba04602617c3084b302c8a6fa30b2e4b20511180f45992b289c312298018
category: main
optional: false
- - name: executing
- version: 2.0.1
+ - name: ld_impl_linux-64
+ version: "2.40"
manager: conda
- platform: osx-64
- dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda
+ platform: linux-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda
hash:
- md5: e16be50e378d8a4533b989035b196ab8
- sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057
+ md5: 7aca3059a1729aa76c597603f10b0dd3
+ sha256: f6cc89d887555912d6c61b295d398cff9ec982a3417d38025c45d5dd9b9e79cd
category: main
optional: false
- - name: filelock
- version: 3.13.1
+ - name: lerc
+ version: 4.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2
hash:
- md5: 0c1729b74a8152fde6a38ba0a2ab9f45
- sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b
+ md5: 76bbff344f0134279f225174e9064c8f
+ sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12
category: main
optional: false
- - name: frozenlist
- version: 1.4.0
+ - name: lerc
+ version: 4.0.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.4.0-py311h2725bcf_1.conda
+ libcxx: ">=13.0.1"
+ url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2
hash:
- md5: 43a86b4653a43d76f3d6859a5a077ceb
- sha256: d94ac2d88ac46097c9d0c98a42e6f6ee92219824b5e71053a84decd0daad7c81
+ md5: f9d6a4c82889d5ecedec1d90eb673c55
+ sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497
category: main
- optional: false
- - name: fsspec
- version: 2023.10.0
+ optional: false
+ - name: lerc
+ version: 4.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda
+ libcxx: ">=13.0.1"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
hash:
- md5: 5b86cf1ceaaa9be2ec4627377e538db1
- sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6
+ md5: de462d5aacda3b30721b512c5da4e742
+ sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958
category: main
optional: false
- - name: google-cloud-sdk
- version: 455.0.0
+ - name: libabseil
+ version: "20230802.1"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/google-cloud-sdk-455.0.0-py311h6eed73b_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230802.1-cxx17_h59595ed_0.conda
hash:
- md5: 0a635aa75ccc84e4dd16e06b559d3d49
- sha256: 8e133ed925ed75409a354b564ff2ebc2ebb3ebdd659f2d190b4c198b164c6f8e
+ md5: 2785ddf4cb0e7e743477991d64353947
+ sha256: 8729021a93e67bb93b4e73ef0a132499db516accfea11561b667635bcd0507e7
category: main
optional: false
- - name: greenlet
- version: 3.0.1
+ - name: libabseil
+ version: "20230802.1"
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.1-py311hd39e593_0.conda
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20230802.1-cxx17_h048a20a_0.conda
hash:
- md5: 447a2de59f80041e6f63c222d5a5e77f
- sha256: 872e40b28dce3abf5d3df621a99247a79d3e642eaf1db284c8a43888e1c7f74b
+ md5: 6554f5fb47c025273268bcdb7bf3cd48
+ sha256: 05431a6adb376a865e10d4ae673399d7890083c06f61cf18edb7c6629e75f39e
category: main
optional: false
- - name: hpack
- version: 4.0.0
+ - name: libabseil
+ version: "20230802.1"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20230802.1-cxx17_h13dd4ca_0.conda
hash:
- md5: 914d6646c4dbb1fd3ff539830a12fd71
- sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
+ md5: fb6dfadc1898666616dfda242d8aea10
+ sha256: 459a58f36607246b4483d7a370c2d9a03e7f824e79da2c6e3e9d62abf80393e7
category: main
optional: false
- - name: httptools
- version: 0.6.1
+ - name: libaec
+ version: 1.1.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/httptools-0.6.1-py311he705e18_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.2-h59595ed_1.conda
hash:
- md5: 18bfe027e8c0a8a54aeb6794359c977e
- sha256: ed33c069ccfb3b1bdf396bbb2280aabeb36273054e9d5ad249639ba4e6820822
- category: dev
- optional: true
- - name: humanfriendly
- version: "10.0"
+ md5: 127b0be54c1c90760d7fe02ea7a56426
+ sha256: fdde15e74dc099ab1083823ec0f615958e53d9a8fae10405af977de251668bea
+ category: main
+ optional: false
+ - name: libaec
+ version: 1.1.2
manager: conda
platform: osx-64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.2-he965462_1.conda
hash:
- md5: 2ed1fe4b9079da97c44cfe9c2e5078fd
- sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1
+ md5: faa179050abc6af1385e0fe9dd074f91
+ sha256: 1b0a0b9b67e8f155ebdc7205a7421c7aff4850a740fc9f88b3fa23282c98ed72
category: main
optional: false
- - name: hupper
- version: "1.12"
+ - name: libaec
+ version: 1.1.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/hupper-1.12-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.2-h13dd4ca_1.conda
hash:
- md5: 2654ff96e839bc699e5c3780689a596b
- sha256: 0b172391000a008029f32e4a34d37d79b114d4ea3b6948d2be72a78568fdadcd
+ md5: b7962cdc2cedcc9f8d12928824c11fbd
+ sha256: c9d6f01d511bd3686ce590addf829f34031b95e3feb34418496cbb45924c5d17
category: main
optional: false
- - name: hyperframe
- version: 6.0.1
+ - name: libarchive
+ version: 3.7.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ bzip2: ">=1.0.8,<2.0a0"
+ libgcc-ng: ">=12"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ lzo: ">=2.10,<3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h039dbb9_0.conda
hash:
- md5: 9f765cbfab6870c8435b9eefecd7a1f4
- sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
+ md5: 611d6c83d1130ea60c916531adfb11db
+ sha256: b82b9f4a1515877ea65416bf7fd9cc77cae77d7b5977eada2b999ee525a0d5c9
category: main
optional: false
- - name: idna
- version: "3.4"
+ - name: libarchive
+ version: 3.7.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2
+ bzip2: ">=1.0.8,<2.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ lzo: ">=2.10,<3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.7.2-h0b5dc4a_0.conda
hash:
- md5: 34272b248891bddccc64479f9a7fffed
- sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09
+ md5: 0f8458c98eaf403501e7e699d93594e7
+ sha256: 77669122d52073078d55310cf21fdfc35c283243cd47a064d6dbab38d8e6ab02
category: main
optional: false
- - name: ijson
- version: 3.2.3
+ - name: libarchive
+ version: 3.7.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/ijson-3.2.3-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ lzo: ">=2.10,<3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.7.2-h82b9b87_0.conda
hash:
- md5: 6b1e4cb33f797d6487efd3ebad39d103
- sha256: 133fb51b4c638c453ef7de37cc4d412b9a4442839a9c7ad986b9bf473234b585
+ md5: da6ec82a0e07f738afee1c4279778b30
+ sha256: d8f2a19466f11ca9d6e1bf6a82cf84a5eb60dcf55d93fa2fbf47a503b953e348
category: main
optional: false
- - name: imagesize
- version: 1.4.1
+ - name: libarrow
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
+ aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
+ bzip2: ">=1.0.8,<2.0a0"
+ glog: ">=0.6.0,<0.7.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libbrotlidec: ">=1.1.0,<1.2.0a0"
+ libbrotlienc: ">=1.1.0,<1.2.0a0"
+ libgcc-ng: ">=12"
+ libgoogle-cloud: ">=2.12.0,<2.13.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libstdcxx-ng: ">=12"
+ libutf8proc: ">=2.8.0,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ orc: ">=1.9.0,<1.9.1.0a0"
+ re2: ""
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-14.0.1-h4df1b6a_3_cpu.conda
hash:
- md5: 7de5386c8fea29e76b303f37dde4c352
- sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460
+ md5: 8f95beca2cdede6329401193609f497a
+ sha256: c6595ba12a12e8e8c518daeb1bd6cdc584c41d331be2738c136347af5a606519
category: main
optional: false
- - name: iniconfig
- version: 2.0.0
+ - name: libarrow
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
+ aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
+ bzip2: ">=1.0.8,<2.0a0"
+ glog: ">=0.6.0,<0.7.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libbrotlidec: ">=1.1.0,<1.2.0a0"
+ libbrotlienc: ">=1.1.0,<1.2.0a0"
+ libcxx: ">=15.0.7"
+ libgoogle-cloud: ">=2.12.0,<2.13.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libutf8proc: ">=2.8.0,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ orc: ">=1.9.0,<1.9.1.0a0"
+ re2: ""
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.1-hd201b0c_3_cpu.conda
hash:
- md5: f800d2da156d08e289b14e87e43c1ae5
- sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
+ md5: ca9ae7988629996eeab28791c9a97b12
+ sha256: 6866b9fbece513b932ae9862a1281f96a3fb05572f02ba3af3d3021363a24553
category: main
optional: false
- - name: itsdangerous
- version: 2.1.2
+ - name: libarrow
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
+ aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
+ bzip2: ">=1.0.8,<2.0a0"
+ glog: ">=0.6.0,<0.7.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libbrotlidec: ">=1.1.0,<1.2.0a0"
+ libbrotlienc: ">=1.1.0,<1.2.0a0"
+ libcxx: ">=15.0.7"
+ libgoogle-cloud: ">=2.12.0,<2.13.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libutf8proc: ">=2.8.0,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ orc: ">=1.9.0,<1.9.1.0a0"
+ re2: ""
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-14.0.1-h8dffd16_3_cpu.conda
hash:
- md5: 3c3de74912f11d2b590184f03c7cd09b
- sha256: 31e3492686b4e92b53db9b48bc0eb03873b1caaf28629fee7d2d47627a2c56d3
+ md5: c9e9f1a73232f3a6eae1b174f39e2d3f
+ sha256: c482e8d50d2a20b4460801610da58e49fe7c9db8836ffd0653b657af55664634
category: main
optional: false
- - name: jellyfish
- version: 1.0.1
+ - name: libarrow-acero
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/jellyfish-1.0.1-py311h299eb51_1.conda
+ libarrow: 14.0.1
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-14.0.1-h59595ed_3_cpu.conda
hash:
- md5: ce10e6fb23ec2fe23918de203236fbf2
- sha256: 17d786d60c76d882dd626423131ae17ed59b79bd4da08470944517ed28651557
+ md5: c76ae01767e94ee20c974a10e4f071a7
+ sha256: 9b471ca984de6028add562c68135c050b66844c1597472c6162b53004793b843
category: main
optional: false
- - name: jmespath
- version: 1.0.1
+ - name: libarrow-acero
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.1-hc222712_3_cpu.conda
hash:
- md5: 2cfa3e1cf3fb51bb9b17acc5b5e9ea11
- sha256: 95ac5f9ee95fd4e34dc051746fc86016d3d4f6abefed113e2ede049d59ec2991
+ md5: 920ead842f00024ab7c3b37646288aa1
+ sha256: 3c71cbabc89643b8b771ea226fe0e564baa102c06dc169cda5db033df1b2b5f2
category: main
optional: false
- - name: json5
- version: 0.9.14
+ - name: libarrow-acero
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-14.0.1-had9dd58_3_cpu.conda
hash:
- md5: dac1dabba2b5a9d1aee175c5fcc7b436
- sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
+ md5: 45385a4bd04cae4e3df499e585b14a0b
+ sha256: f82e7f13d0b6159bfd6fefc136a85bc41e0a612a9e73f097bd70fc5b9e5e0dce
category: main
optional: false
- - name: jsonpointer
- version: "2.4"
+ - name: libarrow-dataset
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-2.4-py311h6eed73b_3.conda
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libgcc-ng: ">=12"
+ libparquet: 14.0.1
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-14.0.1-h59595ed_3_cpu.conda
hash:
- md5: ed1c23d0e55abd27d8b9e31c58105140
- sha256: b0ba738e1dbf3b69558557cd1e63310364e045b8c8e7f73fdce7e71928b5f22a
+ md5: 39b1db7f15fb88394e57caf9ffc653f5
+ sha256: 86aefe875eb8110a774a6ad6da94e868ed837ae054e630adec391eab7c559af4
category: main
optional: false
- - name: jupyterlab_widgets
- version: 3.0.9
+ - name: libarrow-dataset
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libcxx: ">=15.0.7"
+ libparquet: 14.0.1
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.1-hc222712_3_cpu.conda
hash:
- md5: 8370e0a9dc443f9b45a23fd30e7a6b3b
- sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3
+ md5: b4e8a2dfbd7e2f2cae34158012e4d5c1
+ sha256: beaf2af22a35fd4ffcf29f1b44df1ca8a77b0d9a87abff1de938aaf72b26dc4d
category: main
optional: false
- - name: kiwisolver
- version: 1.4.5
+ - name: libarrow-dataset
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.5-py311h5fe6e05_1.conda
+ libparquet: 14.0.1
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-14.0.1-had9dd58_3_cpu.conda
hash:
- md5: 24305b23f7995de72bbd53b7c01242a2
- sha256: 586a4d0a17e6cfd9f8fdee56106d263ee40ca156832774d6e899f82ad68ac8d0
+ md5: 01f2b9ff760ec946a47736a95bf070ce
+ sha256: bf47c92c431e3eb1b79498a7826beee404b7186c160e5646d06fe8bd3c52fb42
category: main
optional: false
- - name: libblas
- version: 3.9.0
+ - name: libarrow-flight
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libopenblas: ">=0.3.24,<1.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-19_osx64_openblas.conda
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libarrow: 14.0.1
+ libgcc-ng: ">=12"
+ libgrpc: ">=1.59.2,<1.60.0a0"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libstdcxx-ng: ">=12"
+ ucx: ">=1.15.0,<1.16.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-14.0.1-h120cb0d_3_cpu.conda
hash:
- md5: e932b99c38915fa2ee252cdff6ea1f01
- sha256: c2c96103aa23a65f45b76716df49940cb0722258d3e0416f8fa06ade02464b23
+ md5: 3aaef593671fe31fb2e3cc3b7def5e6a
+ sha256: 96d4f0ce2072e90c21a4d6a020c50fce74e1b0afdc578a5d32430fcf179ba1a9
category: main
optional: false
- - name: libcurl
- version: 8.4.0
+ - name: libarrow-flight
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libnghttp2: ">=1.52.0,<2.0a0"
- libssh2: ">=1.11.0,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.4.0-h726d00d_0.conda
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ libgrpc: ">=1.59.2,<1.60.0a0"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.1-h440f1c2_3_cpu.conda
hash:
- md5: 2c17b4dedf0039736951471f493353bd
- sha256: cd3400ecb42fc420acb18e2d836535c44ebd501ebeb4e0bf3830776e9b4ca650
+ md5: 729e2fc0e72d1b7b139422ed8ecf41df
+ sha256: 91e001bb4208afc6fc24e3cc6bd07a2e423ab83220f659b790b1c64c1bb61af7
category: main
optional: false
- - name: libgd
- version: 2.3.3
- manager: conda
- platform: osx-64
- dependencies:
- expat: ""
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- icu: ">=73.2,<74.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp: ""
- libwebp-base: ">=1.3.2,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h0dceb68_9.conda
- hash:
- md5: 1feb43971521d430bf826f8398598c5b
- sha256: 4ed8546ff3356fc42f0e155446a060b14ee4aa96802e2da586532861deb3b917
- category: dev
- optional: true
- - name: libgrpc
- version: 1.59.2
+ - name: libarrow-flight
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
__osx: ">=10.9"
- c-ares: ">=1.20.1,<2.0a0"
libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ libgrpc: ">=1.59.2,<1.60.0a0"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- re2: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.59.2-ha7f534c_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-14.0.1-h1011bfc_3_cpu.conda
hash:
- md5: 7db1bdebc02cd6e56f9f420ac3c1e557
- sha256: 3f4e2df8760e279921adba7eba8b8b56c2b6ecde7872242ce6ae3bf55319e0b5
+ md5: 58b858ca5385418e166c7cc30654d3f2
+ sha256: b895ea4bfed516ac8b974fca7c437b70ec0b753abd7546f85353e85b536c7551
category: main
optional: false
- - name: libpq
- version: "16.1"
+ - name: libarrow-flight-sql
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libpq-16.1-h6dd4ff7_0.conda
+ libarrow: 14.0.1
+ libarrow-flight: 14.0.1
+ libgcc-ng: ">=12"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-flight-sql-14.0.1-h61ff412_3_cpu.conda
hash:
- md5: 39de94ff4ccc306f3d24ef7aef13c689
- sha256: 1a51c9b3451eebf04ac1f7a7a58fec07c2e44d2298514a30f62b5b432a653c07
+ md5: bee925cf81e536f064c5fb58e770c102
+ sha256: da8646f41e41d0808e28059e660fcac9048c8f0e1055bdcef6ccbd2c24036eb1
category: main
optional: false
- - name: llvmlite
- version: 0.41.1
+ - name: libarrow-flight-sql
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- libllvm14: ">=14.0.6,<14.1.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.41.1-py311hb5c2e0a_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-flight: 14.0.1
+ libcxx: ">=15.0.7"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.1-h2cc6c1c_3_cpu.conda
hash:
- md5: 9a2b325146497a6197a2d44b8762ccb2
- sha256: 891153e5aef3ea6ffe53b52aa2244736ebad4771fa7a69c5887cbe76e03237bd
+ md5: 018c16ea4875bd012b4e525246835f30
+ sha256: 8f73fa15493cf0e651ae7accf9a54547967276a2ed67a7c8623eb0dabd5eb300
category: main
optional: false
- - name: locket
- version: 1.0.0
+ - name: libarrow-flight-sql
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
- url: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-flight: 14.0.1
+ libcxx: ">=15.0.7"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-14.0.1-h660fe36_3_cpu.conda
hash:
- md5: 91e27ef3d05cc772ce627e51cff111c4
- sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
+ md5: e68ba1cba4bc839af1fb2240e2f7a93a
+ sha256: 831e8f230d0b489ee2c541a091351857ac369813f555ae3789980132a2a3a365
category: main
optional: false
- - name: lxml
- version: 4.9.3
+ - name: libarrow-gandiva
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libxml2: ">=2.11.5,<2.12.0a0"
- libxslt: ">=1.1.37,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/lxml-4.9.3-py311h19a211c_1.conda
+ libarrow: 14.0.1
+ libgcc-ng: ">=12"
+ libllvm15: ">=15.0.7,<15.1.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libstdcxx-ng: ">=12"
+ libutf8proc: ">=2.8.0,<3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ re2: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-gandiva-14.0.1-hacb8726_3_cpu.conda
hash:
- md5: d3687d6ebe20ef8bf959dba786cdb28e
- sha256: df952e80dc9ca98fbff11c2627288808135b51d18fc363a102f3e58eac8b4113
+ md5: 0bd1c4aeb8a8386da85df4bc0b21efc1
+ sha256: 9b5d9b9a4fed1171a92795b329bc26b106471877ff5f80942ff1ad84bff7f3e2
category: main
optional: false
- - name: marko
- version: 1.3.1
+ - name: libarrow-gandiva
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/marko-1.3.1-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ libllvm15: ">=15.0.7,<15.1.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libutf8proc: ">=2.8.0,<3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ re2: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.1-heeebe7c_3_cpu.conda
hash:
- md5: 9651c1c1c19dbc072c557e3e2da38329
- sha256: 42a84421edb86e09b83aaaa340921b8f2c78daa787305895e886ade6913d8690
+ md5: 31559f43790c54a2494b888051b441a7
+ sha256: 0658e77bf9099baf808b2fecd6b0d87f8e236ec7ccf17d0418f1cd9ac674d0ff
category: main
optional: false
- - name: markupsafe
- version: 2.1.3
+ - name: libarrow-gandiva
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.3-py311h2725bcf_1.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ libllvm15: ">=15.0.7,<15.1.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libutf8proc: ">=2.8.0,<3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ re2: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-14.0.1-h2b96968_3_cpu.conda
hash:
- md5: 52ee86f482b552e547e2b1d6c01adf55
- sha256: 5a8f8caa89eeba6ea6e9e96d3e7c109b675bc3c6ed4b109b8931757da2411d48
+ md5: 2356cd3eaa70c7ec2f73b8e061bb4c5f
+ sha256: 031f324a5845fb7db4b15df6e70b3fa8ab7d83508072838c2801ffea81692d67
category: main
optional: false
- - name: mdurl
- version: 0.1.0
+ - name: libarrow-substrait
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libarrow-dataset: 14.0.1
+ libgcc-ng: ">=12"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-14.0.1-h61ff412_3_cpu.conda
hash:
- md5: f8dab71fdc13b1bf29a01248b156d268
- sha256: c678b9194e025b1fb665bec30ee20aab93399203583875b1dcc0a3b52a8f5523
+ md5: d7f6d75fd346c05c0c836326b72a8500
+ sha256: 6ac78ba3f3fcb5128dc3c0cc907d418f9edd74456b4712c2af843b35fe11585c
category: main
optional: false
- - name: mergedeep
- version: 1.3.4
+ - name: libarrow-substrait
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libarrow-dataset: 14.0.1
+ libcxx: ">=15.0.7"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.1-h2cc6c1c_3_cpu.conda
hash:
- md5: 1a160a3cab5cb6bd46264b52cd6f69a2
- sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b
+ md5: eb66f8083a629917f4ecb94351ca1903
+ sha256: fc51009762be7f0f5abc1ffed1b413122422a21bc2a309abbdb537a76b939b54
category: main
optional: false
- - name: mistune
- version: 3.0.2
+ - name: libarrow-substrait
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libarrow-dataset: 14.0.1
+ libcxx: ">=15.0.7"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-14.0.1-h594d712_3_cpu.conda
hash:
- md5: 5cbee699846772cc939bef23a0d524ed
- sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c
+ md5: 59202c5ba6c585009550a0c84d0aa7c7
+ sha256: b080df09fd9444534d10baf9fdafeb1602e230fcd8edb2fc030be2a0e04e0cc9
category: main
optional: false
- - name: more-itertools
- version: 10.1.0
+ - name: libblas
+ version: 3.9.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda
+ libopenblas: ">=0.3.25,<1.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda
hash:
- md5: 8549fafed0351bbfaa1ddaa15fdf9b4e
- sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f
+ md5: 2b7bb4f7562c8cf334fc2e20c2d28abc
+ sha256: 8a0ee1de693a9b3da4a11b95ec81b40dd434bd01fa1f5f38f8268cd2146bf8f0
category: main
optional: false
- - name: msgpack-python
- version: 1.0.6
+ - name: libblas
+ version: 3.9.0
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.6-py311h5fe6e05_0.conda
+ libopenblas: ">=0.3.25,<1.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-20_osx64_openblas.conda
hash:
- md5: 6824682c6f6e412cf20fe71f14035cb0
- sha256: 7e61fa3dc3dc8a063d5df8ef64f5b33e04fb8ef9fd1c07577891cd0e0edfcdb5
+ md5: 1673476d205d14a9042172be795f63cb
+ sha256: 89cac4653b52817d44802d96c13e5f194320e2e4ea805596641d0f3e22e32525
category: main
optional: false
- - name: multidict
- version: 6.0.4
+ - name: libblas
+ version: 3.9.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.0.4-py311h5547dcb_1.conda
+ libopenblas: ">=0.3.25,<1.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-20_osxarm64_openblas.conda
hash:
- md5: cb1b7c247fe38eb522cc6690101702b0
- sha256: 3c002c9cc1ddc4344da606d7b75a65e04e707c20ccc3fb0cef5a29b62872d4e9
+ md5: 49bc8dec26663241ee064b2d7116ec2d
+ sha256: 5b5b8394352c8ca06b15dcc9319d0af3e9f1dc03fc0a6f6deef05d664d6b763a
category: main
optional: false
- - name: multimethod
- version: 1.9.1
+ - name: libboost-headers
+ version: 1.83.0
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/multimethod-1.9.1-pyhd8ed1ab_0.conda
+ platform: linux-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.83.0-ha770c72_0.conda
hash:
- md5: 48223af3f697ccd9b114adb6a66e0f11
- sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
+ md5: 1fc57b3ba24d18cc75f431d7feb2c785
+ sha256: aaa194e8b7ba401e6507a2f6dc0714d2f8f5a9951f8be18b96c250b0a1175982
category: main
optional: false
- - name: munch
- version: 4.0.0
+ - name: libboost-headers
+ version: 1.83.0
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.83.0-h694c41f_0.conda
hash:
- md5: 376b32e8f9d3eacbd625f37d39bd507d
- sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
+ md5: fe6d48bba2424a94e85b696370371691
+ sha256: 12a1d2d2cb2732e1ace732b17411c108691be104823b9b0426daefb7d4b8ec8d
category: main
optional: false
- - name: munkres
- version: 1.1.4
+ - name: libboost-headers
+ version: 1.83.0
manager: conda
- platform: osx-64
- dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.83.0-hce30654_0.conda
hash:
- md5: 2ba8498c1018c1e9c61eb99b973dfe19
- sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306
+ md5: ff53ab92ecb249691bb72d0561ff13ed
+ sha256: e02286d2a73f70f0fd71e1db41d0feac2276dbc9a5479d7f0e8074f4b459faac
category: main
optional: false
- - name: mypy_extensions
- version: 1.0.0
+ - name: libbrotlicommon
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda
hash:
- md5: 4eccaeba205f0aed9ac3a9ea58568ca3
- sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3
+ md5: aec6c91c7371c26392a06708a73c70e5
+ sha256: 40f29d1fab92c847b083739af86ad2f36d8154008cf99b64194e4705a1725d78
category: main
optional: false
- - name: nest-asyncio
- version: 1.5.8
+ - name: libbrotlicommon
+ version: 1.1.0
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda
hash:
- md5: a4f0e4519bc50eee4f53f689be9607f7
- sha256: d7b795b4e754136841c6da3f9fa1a0f7ec37bc7167e7dd68c5b45e657133e008
+ md5: 9e6c31441c9aa24e41ace40d6151aab6
+ sha256: f57c57c442ef371982619f82af8735f93a4f50293022cfd1ffaf2ff89c2e0b2a
category: main
optional: false
- - name: networkx
- version: 3.2.1
+ - name: libbrotlicommon
+ version: 1.1.0
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda
hash:
- md5: 425fce3b531bed6ec3c74fab3e5f0a1c
- sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d
+ md5: cd68f024df0304be41d29a9088162b02
+ sha256: 556f0fddf4bd4d35febab404d98cb6862ce3b7ca843e393da0451bfc4654cf07
category: main
optional: false
- - name: packaging
- version: "23.2"
+ - name: libbrotlidec
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda
+ libbrotlicommon: 1.1.0
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda
hash:
- md5: 79002079284aa895f883c6b7f3f88fd6
- sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f
+ md5: f07002e225d7a60a694d42a7bf5ff53f
+ sha256: 86fc861246fbe5ad85c1b6b3882aaffc89590a48b42d794d3d5c8e6d99e5f926
category: main
optional: false
- - name: pandocfilters
- version: 1.5.0
+ - name: libbrotlidec
+ version: 1.1.0
manager: conda
platform: osx-64
dependencies:
- python: "!=3.0,!=3.1,!=3.2,!=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
+ libbrotlicommon: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda
hash:
- md5: 457c2c8c08e54905d6954e79cb5b5db9
- sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
+ md5: 9ee0bab91b2ca579e10353738be36063
+ sha256: b11939c4c93c29448660ab5f63273216969d1f2f315dd9be60f3c43c4e61a50c
category: main
optional: false
- - name: parso
- version: 0.8.3
+ - name: libbrotlidec
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2
+ libbrotlicommon: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda
hash:
- md5: 17a565a0c3899244e938cdf417e7b094
- sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4
+ md5: ee1a519335cc10d0ec7e097602058c0a
+ sha256: c1c85937828ad3bc434ac60b7bcbde376f4d2ea4ee42d15d369bf2a591775b4a
category: main
optional: false
- - name: pastel
- version: 0.2.1
+ - name: libbrotlienc
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2
+ libbrotlicommon: 1.1.0
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda
hash:
- md5: a4eea5bff523f26442405bc5d1f52adb
- sha256: 9153f0f38c76a09da7688a61fdbf8f3d7504e2326bef53e4ec20d994311b15bd
+ md5: 5fc11c6020d421960607d821310fcd4d
+ sha256: f751b8b1c4754a2a8dfdc3b4040fa7818f35bbf6b10e905a47d3a194b746b071
category: main
optional: false
- - name: pathspec
- version: 0.11.2
+ - name: libbrotlienc
+ version: 1.1.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda
+ libbrotlicommon: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda
hash:
- md5: e41debb259e68490e3ab81e46b639ab6
- sha256: 7bcfa6d86359d45572ba9ccaeaedc04b0452e2654fe44b6fe378d0d37b8745e1
+ md5: 8a421fe09c6187f0eb5e2338a8a8be6d
+ sha256: bc964c23e1a60ca1afe7bac38a9c1f2af3db4a8072c9f2eac4e4de537a844ac7
category: main
optional: false
- - name: petl
- version: 1.7.14
+ - name: libbrotlienc
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.14-pyhd8ed1ab_0.conda
+ libbrotlicommon: 1.1.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda
hash:
- md5: 65813db01f2331768d909c0852ff5d70
- sha256: f802a980b04ea3355831be31c4b94421040ec95902e203ea08c2e3fc0a1f4286
+ md5: d7e077f326a98b2cc60087eaff7c730b
+ sha256: 690dfc98e891ee1871c54166d30f6e22edfc2d7d6b29e7988dde5f1ce271c81a
category: main
optional: false
- - name: pickleshare
- version: 0.7.5
+ - name: libcblas
+ version: 3.9.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3"
- url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
+ libblas: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda
hash:
- md5: 415f0ebb6198cc2801c73438a9fb5761
- sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738
+ md5: 36d486d72ab64ffea932329a1d3729a3
+ sha256: 0e34fb0f82262f02fcb279ab4a1db8d50875dc98e3019452f8f387e6bf3c0247
category: main
optional: false
- - name: pillow
- version: 10.1.0
+ - name: libcblas
+ version: 3.9.0
manager: conda
platform: osx-64
dependencies:
- freetype: ">=2.12.1,<3.0a0"
- lcms2: ">=2.15,<3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libxcb: ">=1.15,<1.16.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- tk: ">=8.6.13,<8.7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.1.0-py311hea5c87a_0.conda
+ libblas: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-20_osx64_openblas.conda
hash:
- md5: ffff517d90b21a5d44ef907a5a01f695
- sha256: 44bb951ae60cc96ab9273592ede9ee94a422857e857e52c55c261ad5f1525686
+ md5: b324ad206d39ce529fb9073f9d062062
+ sha256: b0a4eab6d22b865d9b0e39f358f17438602621709db66b8da159197bedd2c5eb
category: main
optional: false
- - name: pkginfo
- version: 1.9.6
+ - name: libcblas
+ version: 3.9.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
+ libblas: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-20_osxarm64_openblas.conda
hash:
- md5: be1e9f1c65a1ed0f2ae9352fec99db64
- sha256: 7ea5a5af62a15376d9f4f9f3c134874d0b0710f39be719e849b7fa9ca8870502
+ md5: 89f4718753c08afe8cda4dd5791ba94c
+ sha256: d3a74638f60e034202e373cf2950c69a8d831190d497881d13cbf789434d2489
category: main
optional: false
- - name: pkgutil-resolve-name
- version: 1.3.10
+ - name: libcrc32c
+ version: 1.1.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ libgcc-ng: ">=9.4.0"
+ libstdcxx-ng: ">=9.4.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2
hash:
- md5: 405678b942f2481cecdb3e010f4925d9
- sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
+ md5: c965a5aa0d5c1c37ffc62dff36e28400
+ sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5
category: main
optional: false
- - name: pluggy
- version: 1.3.0
+ - name: libcrc32c
+ version: 1.1.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda
+ libcxx: ">=11.1.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2
hash:
- md5: 2390bd10bed1f3fdc7a537fb5a447d8d
- sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5
+ md5: 23d6d5a69918a438355d7cbc4c3d54c9
+ sha256: 3043869ac1ee84554f177695e92f2f3c2c507b260edad38a0bf3981fce1632ff
category: main
optional: false
- - name: prometheus_client
- version: 0.18.0
+ - name: libcrc32c
+ version: 1.1.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.18.0-pyhd8ed1ab_1.conda
+ libcxx: ">=11.1.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
hash:
- md5: 46f6be657443caffcc7201d51c07aadf
- sha256: dca35462761fe9a06f348a0e6216a7a5934e3e29c33bc8e173fb344116568a95
+ md5: 32bd82a6a625ea6ce090a81c3d34edeb
+ sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929
category: main
optional: false
- - name: psutil
- version: 5.9.5
+ - name: libcurl
+ version: 8.4.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/psutil-5.9.5-py311h2725bcf_1.conda
+ krb5: ">=1.21.2,<1.22.0a0"
+ libgcc-ng: ">=12"
+ libnghttp2: ">=1.52.0,<2.0a0"
+ libssh2: ">=1.11.0,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.4.0-hca28451_0.conda
hash:
- md5: 16221cd0488a32152a6b3f1a301ccf19
- sha256: 2eee900e0e5a103cff0159cdd81d401b67ccfb919be6cd868fc34c22dab981f1
+ md5: 1158ac1d2613b28685644931f11ee807
+ sha256: 25f4b6a8827d7b17a66e0bd9b5d194bf9a9e4a46fb14e2ef472fdad4b39426a6
category: main
optional: false
- - name: ptyprocess
- version: 0.7.0
+ - name: libcurl
+ version: 8.4.0
manager: conda
platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
+ krb5: ">=1.21.2,<1.22.0a0"
+ libnghttp2: ">=1.52.0,<2.0a0"
+ libssh2: ">=1.11.0,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.4.0-h726d00d_0.conda
hash:
- md5: 359eeb6536da0e687af562ed265ec263
- sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a
+ md5: 2c17b4dedf0039736951471f493353bd
+ sha256: cd3400ecb42fc420acb18e2d836535c44ebd501ebeb4e0bf3830776e9b4ca650
category: main
optional: false
- - name: pure_eval
- version: 0.2.2
+ - name: libcurl
+ version: 8.4.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2
+ krb5: ">=1.21.2,<1.22.0a0"
+ libnghttp2: ">=1.52.0,<2.0a0"
+ libssh2: ">=1.11.0,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.4.0-h2d989ff_0.conda
hash:
- md5: 6784285c7e55cb7212efabc79e4c2883
- sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44
+ md5: afabb3372209028627ec03e206f4d967
+ sha256: 5ca24ab030b1c56ce07921bf901ea99076e8b7e45586b4a04e5187cc67c87273
category: main
optional: false
- - name: pyasn1
- version: 0.5.0
+ - name: libcxx
+ version: 16.0.6
manager: conda
platform: osx-64
- dependencies:
- python: "!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-16.0.6-hd57cbcb_0.conda
hash:
- md5: 4b1c0db24e212190be1969b0aa490ad8
- sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82
+ md5: 7d6972792161077908b62971802f289a
+ sha256: 9063271847cf05f3a6cc6cae3e7f0ced032ab5f3a3c9d3f943f876f39c5c2549
category: main
optional: false
- - name: pycparser
- version: "2.21"
+ - name: libcxx
+ version: 16.0.6
manager: conda
- platform: osx-64
- dependencies:
- python: 2.7.*|>=3.4
- url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-16.0.6-h4653b0c_0.conda
hash:
- md5: 076becd9e05608f8dc72757d5f3a91ff
- sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc
+ md5: 9d7d724faf0413bf1dbc5a85935700c8
+ sha256: 11d3fb51c14832d9e4f6d84080a375dec21ea8a3a381a1910e67ff9cedc20355
category: main
optional: false
- - name: pygments
- version: 2.16.1
+ - name: libdeflate
+ version: "1.19"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.19-hd590300_0.conda
hash:
- md5: 40e5cb18165466773619e5c963f00a7b
- sha256: 3f0f0fadc6084960ec8cc00a32a03529c562ffea3b527eb73b1653183daad389
+ md5: 1635570038840ee3f9c71d22aa5b8b6d
+ sha256: 985ad27aa0ba7aad82afa88a8ede6a1aacb0aaca950d710f15d85360451e72fd
category: main
optional: false
- - name: pyjwt
- version: 2.8.0
+ - name: libdeflate
+ version: "1.19"
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.19-ha4e1b8e_0.conda
hash:
- md5: 912c0194f898fdb783021fd25f913c31
- sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232
+ md5: 6a45f543c2beb40023df5ee7e3cedfbd
+ sha256: d0f789120fedd0881b129aba9993ec5dcf0ecca67a71ea20c74394e41adcb503
category: main
optional: false
- - name: pylev
- version: 1.4.0
+ - name: libdeflate
+ version: "1.19"
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.19-hb547adb_0.conda
hash:
- md5: edf8651c4379d9d1495ad6229622d150
- sha256: 50bd91767686bfe769e50a5a1b883e238d944a6163fea43e7c0beaac54ca674f
+ md5: f8c1eb0e99e90b55965c6558578537cc
+ sha256: 6a3d188a6ae845a742dc85c5fb3f7eb1e252726cd74f0b8a7fa25ec09db6b87a
category: main
optional: false
- - name: pyparsing
- version: 3.1.1
+ - name: libedit
+ version: 3.1.20191231
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=7.5.0"
+ ncurses: ">=6.2,<7.0.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2
hash:
- md5: 176f7d56f0cfe9008bdf1bccd7de02fb
- sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b
+ md5: 4d331e44109e3f0e19b4cb8f9b82f3e1
+ sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf
category: main
optional: false
- - name: pysocks
- version: 1.7.1
+ - name: libedit
+ version: 3.1.20191231
manager: conda
platform: osx-64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ ncurses: ">=6.2,<7.0.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2
hash:
- md5: 2a7de29fb590ca14b5243c4c812c8025
- sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
+ md5: 6016a8a1d0e63cac3de2c352cd40208b
+ sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095
category: main
optional: false
- - name: python-dotenv
- version: 1.0.0
+ - name: libedit
+ version: 3.1.20191231
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.0-pyhd8ed1ab_1.conda
+ ncurses: ">=6.2,<7.0.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2
hash:
- md5: 111e7f9edd31865e2659fa9aad8ec8fd
- sha256: bc5663f224ff6d8a399ec6bd8517e0c0f87a69ead438f82e5ce5c30f00077586
+ md5: 30e4362988a2623e9eb34337b83e01f9
+ sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca
category: main
optional: false
- - name: python-fastjsonschema
- version: 2.19.0
+ - name: libev
+ version: "4.33"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2
hash:
- md5: e4dbdb3585c0266b4710467fe7b75cf4
- sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
+ md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3
+ sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9
category: main
optional: false
- - name: python-json-logger
- version: 2.0.7
+ - name: libev
+ version: "4.33"
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-haf1e3a3_1.tar.bz2
hash:
- md5: a61bf9ec79426938ff785eb69dbb1960
- sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca
+ md5: 79dc2be110b2a3d1e97ec21f691c50ad
+ sha256: c4154d424431898d84d6afb8b32e3ba749fe5d270d322bb0af74571a3cb09c6b
category: main
optional: false
- - name: python-multipart
- version: 0.0.6
+ - name: libev
+ version: "4.33"
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.6-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h642e427_1.tar.bz2
hash:
- md5: f4f642eeda814c1b65f46fbdf7e89096
- sha256: 2a9b8d02a6ec9862433cfc2741c4cbfe321e4ae3bab066f7ed84bc00effb73d7
+ md5: 566dbf70fe79eacdb3c3d3d195a27f55
+ sha256: eb7325eb2e6bd4c291cb9682781b35b8c0f68cb72651c35a5b9dd22707ebd25c
category: main
optional: false
- - name: python-tzdata
- version: "2023.3"
+ - name: libevent
+ version: 2.1.12
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ openssl: ">=3.1.1,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda
hash:
- md5: 2590495f608a63625e165915fb4e2e34
- sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6
+ md5: a1cfcc585f0c42bf8d5546bb1dfb668d
+ sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131
category: main
optional: false
- - name: pytz
- version: 2023.3.post1
+ - name: libevent
+ version: 2.1.12
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda
+ openssl: ">=3.1.1,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda
hash:
- md5: c93346b446cd08c169d843ae5fc0da97
- sha256: 6b680e63d69aaf087cd43ca765a23838723ef59b0a328799e6363eb13f52c49e
+ md5: e38e467e577bd193a7d5de7c2c540b04
+ sha256: e0bd9af2a29f8dd74309c0ae4f17a7c2b8c4b89f875ff1d6540c941eefbd07fb
category: main
optional: false
- - name: pytzdata
- version: "2020.1"
+ - name: libevent
+ version: 2.1.12
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2
+ openssl: ">=3.1.1,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
hash:
- md5: 7dd824593f3a861130ac17c6571546e2
- sha256: e7e628c1247b096e3af147b1c32d5ac328266fa95656e27b79f71bb410251356
+ md5: 1a109764bff3bdc7bdd84088347d71dc
+ sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7
category: main
optional: false
- - name: pywin32-on-windows
- version: 0.1.0
+ - name: libexpat
+ version: 2.5.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __unix: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda
hash:
- md5: 2807a0becd1d986fe1ef9b7f8135f215
- sha256: 6502696aaef571913b22a808b15c185bd8ea4aabb952685deb29e6a6765761cb
+ md5: 6305a3dd2752c76335295da4e581f2fd
+ sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3
category: main
optional: false
- - name: pyxlsb
- version: 1.0.10
+ - name: libexpat
+ version: 2.5.0
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.5.0-hf0c8a7f_1.conda
hash:
- md5: 0c14e44bc93a99cdc11398311c3c0dcf
- sha256: 7e6e7064ad976ba6d38e7cf5a893c93a47025d4074b888e8db31386a914935fb
+ md5: 6c81cb022780ee33435cca0127dd43c9
+ sha256: 80024bd9f44d096c4cc07fb2bac76b5f1f7553390112dab3ad6acb16a05f0b96
category: main
optional: false
- - name: pyyaml
- version: 6.0.1
+ - name: libexpat
+ version: 2.5.0
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- yaml: ">=0.2.5,<0.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.1-py311h2725bcf_1.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.5.0-hb7217d7_1.conda
hash:
- md5: 9283f991b5e5856a99f8aabba9927df5
- sha256: 8ce2ba443414170a2570514d0ce6d03625a847e91af9763d48dc58c338e6f7f3
+ md5: 5a097ad3d17e42c148c9566280481317
+ sha256: 7d143a9c991579ad4207f84c632650a571c66329090daa32b3c87cf7311c3381
category: main
optional: false
- - name: pyzmq
- version: 25.1.1
+ - name: libffi
+ version: 3.4.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libsodium: ">=1.0.18,<1.0.19.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- zeromq: ">=4.3.5,<4.4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.1-py311he3804a1_2.conda
+ libgcc-ng: ">=9.4.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2
hash:
- md5: 9b1ea037c51fcdb06bd2d95804270860
- sha256: 7a9af16e04752c50675ca99ab06888aaf8305efb5d292f62f7268ad911c967f4
+ md5: d645c6d2ac96843a2bfaccd2d62b3ac3
+ sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e
category: main
optional: false
- - name: regex
- version: 2023.10.3
+ - name: libffi
+ version: 3.4.2
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/regex-2023.10.3-py311h2725bcf_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2
hash:
- md5: df03957834e3b3a0d7aa8abc3d4268f9
- sha256: 27cdb63cda3f69400b643cfa6207092089818c4ed616016fe0b93347357a4fea
+ md5: ccb34fb14960ad8b125962d3d79b31a9
+ sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f
category: main
optional: false
- - name: rfc3986
- version: 2.0.0
+ - name: libffi
+ version: 3.4.2
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
hash:
- md5: d337886e38f965bf97aaec382ff6db00
- sha256: dd6bfb7c4248ba7612f2e6e4a066d6804ba96dfcaeddf43475a2c846ccfcc396
+ md5: 086914b672be056eb70fd4285b6783b6
+ sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca
category: main
optional: false
- - name: rfc3986-validator
- version: 0.1.1
+ - name: libgcc-ng
+ version: 13.2.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2
+ _libgcc_mutex: "0.1"
+ _openmp_mutex: ">=4.5"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda
hash:
- md5: 912a71cc01012ee38e6b90ddd561e36f
- sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37
+ md5: 23fdf1fef05baeb7eadc2aed5fb0011f
+ sha256: 5e88f658e07a30ab41b154b42c59f079b168acfa9551a75bdc972099453f4105
category: main
optional: false
- - name: rpds-py
- version: 0.13.0
+ - name: libgd
+ version: 2.3.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.13.0-py311h5e0f0e4_0.conda
+ expat: ""
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ icu: ">=73.2,<74.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libgcc-ng: ">=12"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp: ""
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda
hash:
- md5: 756946b85906adc3f1cc3b72705c311b
- sha256: 7949d24240aa997507056baad89ea57f6d41d6704499fbd3739934ad906478d0
- category: main
- optional: false
- - name: rtree
- version: 1.1.0
+ md5: cfebc557e54905dadc355c0e9f003004
+ sha256: b74f95a6e1f3b31a74741b39cba83ed99fc82d17243c0fd3b5ab16ddd48ab89d
+ category: dev
+ optional: true
+ - name: libgd
+ version: 2.3.3
manager: conda
platform: osx-64
dependencies:
- libspatialindex: ">=1.9.3,<1.9.4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/rtree-1.1.0-py311hbc1f44b_0.conda
+ expat: ""
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ icu: ">=73.2,<74.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp: ""
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h0dceb68_9.conda
hash:
- md5: 4cf922188989b372f053537cea29a5ec
- sha256: 7421188ce73f9c1cfe4ba8d476570f04994c42e7a33a4ffa52dcd325f58d577c
- category: main
- optional: false
- - name: ruamel.yaml.clib
- version: 0.2.7
+ md5: 1feb43971521d430bf826f8398598c5b
+ sha256: 4ed8546ff3356fc42f0e155446a060b14ee4aa96802e2da586532861deb3b917
+ category: dev
+ optional: true
+ - name: libgd
+ version: 2.3.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.7-py311h2725bcf_2.conda
+ expat: ""
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ icu: ">=73.2,<74.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp: ""
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hfdf3952_9.conda
hash:
- md5: cd953388469a8890dda83779d6ef6ffd
- sha256: b529c2caf941ac1050d160f0b9c53202d634954dd7cc7f1469731e1bb6f2cccc
- category: main
- optional: false
- - name: ruff
- version: 0.1.5
+ md5: 0d847466f115fbdaaf2b6926f2e33278
+ sha256: cfdecfaa27807abc2728bd8c60b923ce1b44020553e122e9a56fc3acb77acaec
+ category: dev
+ optional: true
+ - name: libgdal
+ version: 3.8.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.1.5-py311hec6fdf1_0.conda
+ __glibc: ">=2.17,<3.0.a0"
+ blosc: ">=1.21.5,<2.0a0"
+ cfitsio: ">=4.3.0,<4.3.1.0a0"
+ freexl: ">=2.0.0,<3.0a0"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ geotiff: ">=1.7.1,<1.8.0a0"
+ giflib: ">=5.2.1,<5.3.0a0"
+ hdf4: ">=4.2.15,<4.2.16.0a0"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ json-c: ">=0.17,<0.18.0a0"
+ kealib: ">=1.5.2,<1.6.0a0"
+ lerc: ">=4.0.0,<5.0a0"
+ libaec: ">=1.1.2,<2.0a0"
+ libarchive: ">=3.7.2,<3.8.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libdeflate: ">=1.19,<1.20.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libgcc-ng: ">=12"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libkml: ">=1.3.0,<1.4.0a0"
+ libnetcdf: ">=4.9.2,<4.9.3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libpq: ">=16.1,<17.0a0"
+ libspatialite: ">=5.1.0,<5.2.0a0"
+ libsqlite: ">=3.44.1,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libuuid: ">=2.38.1,<3.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ pcre2: ">=10.42,<10.43.0a0"
+ poppler: ">=23.11.0,<23.12.0a0"
+ postgresql: ""
+ proj: ">=9.3.0,<9.3.1.0a0"
+ tiledb: ">=2.16,<2.17.0a0"
+ xerces-c: ">=3.2.4,<3.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.0-he7dcfe9_6.conda
hash:
- md5: ff29608b152cbd76c422ad3f97004876
- sha256: ec15e79d5131afdd4592f7c1a878df0b7a8e022d5b644ab9fcb8d431915b4082
+ md5: 16ff703a847430fa074c5d53916740c1
+ sha256: 06ccb879fc2783c371f1b02d062c4e90dfe4d8c5e9f2f83213bbef0fe27a00b0
category: main
optional: false
- - name: setuptools
- version: 68.2.2
+ - name: libgdal
+ version: 3.8.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ blosc: ">=1.21.5,<2.0a0"
+ cfitsio: ">=4.3.0,<4.3.1.0a0"
+ freexl: ">=2.0.0,<3.0a0"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ geotiff: ">=1.7.1,<1.8.0a0"
+ giflib: ">=5.2.1,<5.3.0a0"
+ hdf4: ">=4.2.15,<4.2.16.0a0"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ json-c: ">=0.17,<0.18.0a0"
+ kealib: ">=1.5.2,<1.6.0a0"
+ lerc: ">=4.0.0,<5.0a0"
+ libaec: ">=1.1.2,<2.0a0"
+ libarchive: ">=3.7.2,<3.8.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
+ libdeflate: ">=1.19,<1.20.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libkml: ">=1.3.0,<1.4.0a0"
+ libnetcdf: ">=4.9.2,<4.9.3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libpq: ">=16.1,<17.0a0"
+ libspatialite: ">=5.1.0,<5.2.0a0"
+ libsqlite: ">=3.44.1,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ pcre2: ">=10.42,<10.43.0a0"
+ poppler: ">=23.11.0,<23.12.0a0"
+ postgresql: ""
+ proj: ">=9.3.0,<9.3.1.0a0"
+ tiledb: ">=2.16,<2.17.0a0"
+ xerces-c: ">=3.2.4,<3.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.0-h5b0c7d5_6.conda
hash:
- md5: fc2166155db840c634a1291a5c35a709
- sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7
+ md5: 01e293a419480a02fc7775f6c6afa530
+ sha256: fc602de0bb3d5b7c0493b25b1e4345018fd68f26c672c8abff621c492f67abf4
category: main
optional: false
- - name: shellingham
- version: 1.5.4
+ - name: libgdal
+ version: 3.8.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ blosc: ">=1.21.5,<2.0a0"
+ cfitsio: ">=4.3.0,<4.3.1.0a0"
+ freexl: ">=2.0.0,<3.0a0"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ geotiff: ">=1.7.1,<1.8.0a0"
+ giflib: ">=5.2.1,<5.3.0a0"
+ hdf4: ">=4.2.15,<4.2.16.0a0"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ json-c: ">=0.17,<0.18.0a0"
+ kealib: ">=1.5.2,<1.6.0a0"
+ lerc: ">=4.0.0,<5.0a0"
+ libaec: ">=1.1.2,<2.0a0"
+ libarchive: ">=3.7.2,<3.8.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
+ libdeflate: ">=1.19,<1.20.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libkml: ">=1.3.0,<1.4.0a0"
+ libnetcdf: ">=4.9.2,<4.9.3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libpq: ">=16.1,<17.0a0"
+ libspatialite: ">=5.1.0,<5.2.0a0"
+ libsqlite: ">=3.44.1,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ pcre2: ">=10.42,<10.43.0a0"
+ poppler: ">=23.11.0,<23.12.0a0"
+ postgresql: ""
+ proj: ">=9.3.0,<9.3.1.0a0"
+ tiledb: ">=2.16,<2.17.0a0"
+ xerces-c: ">=3.2.4,<3.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.0-h76f3012_6.conda
hash:
- md5: d08db09a552699ee9e7eec56b4eb3899
- sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
+ md5: c7efc96733da609c84411293fa3a8457
+ sha256: 34d8f93a03a58396074dbbcc832a0c84bb6192d9e0ddf70992c4fa40349366c5
category: main
optional: false
- - name: simpleeval
- version: 0.9.13
+ - name: libgfortran
+ version: 5.0.0
manager: conda
platform: osx-64
dependencies:
- python: ">=2.5,!=3.0.*,!=3.1.*,!=3.2.*"
- url: https://conda.anaconda.org/conda-forge/noarch/simpleeval-0.9.13-pyhd8ed1ab_1.conda
+ libgfortran5: 13.2.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_1.conda
hash:
- md5: b3282d9b9e4a7c42d6c570492316dcaa
- sha256: 5c9c537011327fc281c3c108020f1ad2a40284df0e1625a87825c0699d98f67f
+ md5: b55fd11ab6318a6e67ac191309701d5a
+ sha256: 5be1a59316e5063f4e6492ea86d692600a7b8e32caa25269f8a3b386a028e5f3
category: main
optional: false
- - name: six
- version: 1.16.0
+ - name: libgfortran
+ version: 5.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ libgfortran5: 13.2.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_1.conda
hash:
- md5: e5f25f8dbc060e9a8d912e432202afc2
- sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
+ md5: 1ad37a5c60c250bb2b4a9f75563e181c
+ sha256: bc8750e7893e693fa380bf2f342d4a5ce44995467cbdf72e56a00e5106b4892d
category: main
optional: false
- - name: smmap
- version: 5.0.0
+ - name: libgfortran-ng
+ version: 13.2.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ libgfortran5: 13.2.0
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda
hash:
- md5: 62f26a3d1387acee31322208f0cfa3e0
- sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
+ md5: 73031c79546ad06f1fe62e57fdd021bc
+ sha256: 5b918950b84605b6865de438757f507b1eff73c96fd562f7022c80028b088c14
category: main
optional: false
- - name: sniffio
- version: 1.3.0
+ - name: libgfortran5
+ version: 13.2.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=13.2.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda
hash:
- md5: dd6cbc539e74cb1f430efbd4575b9303
- sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78
+ md5: c714d905cdfa0e70200f68b80cc04764
+ sha256: 0084a1d29a4f8ee3b8edad80eb6c42e5f0480f054f28cf713fb314bebb347a50
category: main
optional: false
- - name: snowballstemmer
- version: 2.2.0
+ - name: libgfortran5
+ version: 13.2.0
manager: conda
platform: osx-64
dependencies:
- python: ">=2"
- url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
+ llvm-openmp: ">=8.0.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_1.conda
hash:
- md5: 4d22a9315e78c6827f806065957d566e
- sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
+ md5: 3af564516b5163cd8cc08820413854bc
+ sha256: 44de8930eef3b14d4d9fdfe419e6c909c13b7c859617d3616d5a5e964f3fcf63
category: main
optional: false
- - name: sortedcontainers
- version: 2.4.0
+ - name: libgfortran5
+ version: 13.2.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
+ llvm-openmp: ">=8.0.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_1.conda
hash:
- md5: 6d6552722448103793743dabfbda532d
- sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
+ md5: 4480d71b98c87faafab132d33e23135e
+ sha256: cb9cb11e49a6a8466ea7556a723080d3aeefd556df9b444b941afc5b54368b22
category: main
optional: false
- - name: soupsieve
- version: "2.5"
+ - name: libglib
+ version: 2.78.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ gettext: ">=0.21.1,<1.0a0"
+ libffi: ">=3.4,<4.0a0"
+ libgcc-ng: ">=12"
+ libiconv: ">=1.17,<2.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pcre2: ">=10.42,<10.43.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda
hash:
- md5: 3f144b2c34f8cb5a9abd9ed23a39c561
- sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
+ md5: 70052d6c1e84643e30ffefb21ab6950f
+ sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b
category: main
optional: false
- - name: sphinxcontrib-jsmath
- version: 1.0.1
+ - name: libglib
+ version: 2.78.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ gettext: ">=0.21.1,<1.0a0"
+ libcxx: ">=16.0.6"
+ libffi: ">=3.4,<4.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pcre2: ">=10.42,<10.43.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.78.1-h198397b_1.conda
hash:
- md5: da1d979339e2714c30a8e806a33ec087
- sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2
+ md5: fb318c3fed632cf2de190fb10496fbd1
+ sha256: 73bcb4ea07af4291221271aa7aaa0795d59d851a6f43d6e0df22601f61725e4b
category: main
optional: false
- - name: stringcase
- version: 1.2.0
+ - name: libglib
+ version: 2.78.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-py_0.tar.bz2
+ __osx: ">=10.9"
+ gettext: ">=0.21.1,<1.0a0"
+ libcxx: ">=16.0.6"
+ libffi: ">=3.4,<4.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ pcre2: ">=10.42,<10.43.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.78.1-hb438215_1.conda
hash:
- md5: 26a9caf3173939377bac7152379daac0
- sha256: ebd515c57537799ee7829055fe9aa93d1c4695334b991fe1de9d7947f53f18f2
+ md5: 3ce7984906f2ba4be662c219e8def77e
+ sha256: 3d94b6d8d27301f23b0d0c8b078c5e0bf6fc4f5f6260f3794cfaf7e247fe9e20
category: main
optional: false
- - name: tabulate
- version: 0.9.0
+ - name: libgomp
+ version: 13.2.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ _libgcc_mutex: "0.1"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda
hash:
- md5: 4759805cce2d914c38472f70bf4d8bcb
- sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
+ md5: 7124cbb46b13d395bdde68f2d215c989
+ sha256: 6ebedee39b6bbbc969715d0d7fa4b381cce67e1139862604ffa393f821c08e81
category: main
optional: false
- - name: text-unidecode
- version: "1.3"
+ - name: libgoogle-cloud
+ version: 2.12.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcrc32c: ">=1.1.2,<1.2.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libgcc-ng: ">=12"
+ libgrpc: ">=1.59.2,<1.60.0a0"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libstdcxx-ng: ">=12"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-h5206363_4.conda
hash:
- md5: ba8aba332d8868897ce44ad74015a7fe
- sha256: db64669a918dec8c744f80a85b9c82216b79298256c7c8bd19bdba54a02f8914
+ md5: b5eb63d2683102be45d17c55021282f6
+ sha256: 82a7d211d0df165b073f9e8ba6d789c4b1c7c4882d546ca12d40f201fc3496fc
category: main
optional: false
- - name: threadpoolctl
- version: 3.2.0
+ - name: libgoogle-cloud
+ version: 2.12.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcrc32c: ">=1.1.2,<1.2.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
+ libgrpc: ">=1.59.2,<1.60.0a0"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.12.0-hc0857f6_4.conda
hash:
- md5: 978d03388b62173b8e6f79162cf52b86
- sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd
+ md5: 976555c39f83093265491c9c081a801c
+ sha256: 1bf47f43796369ec85a27221ab9a84ecc848f93a88049d046cd8521c25b129f6
category: main
optional: false
- - name: toml
- version: 0.10.2
+ - name: libgoogle-cloud
+ version: 2.12.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcrc32c: ">=1.1.2,<1.2.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
+ libgrpc: ">=1.59.2,<1.60.0a0"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.12.0-hfb399a7_4.conda
hash:
- md5: f832c45a477c78bebd107098db465095
- sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1
+ md5: d62901188ab756c841cbb9a80c6c3f3c
+ sha256: 22122939a462f64a82ca2f305c43e5e5cf5a55f1ae12979c2445f9dc196b7047
category: main
optional: false
- - name: tomli
- version: 2.0.1
+ - name: libgrpc
+ version: 1.59.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
+ c-ares: ">=1.20.1,<2.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libgcc-ng: ">=12"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ re2: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.59.2-hd6c4280_0.conda
hash:
- md5: 5844808ffab9ebdb694585b50ba02a96
- sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f
+ md5: dd26e7127a7b08068b52181f47849f04
+ sha256: 4ac31c7667fb0940856afc4b8ea58d8f1cb18db3cdf41729aa7d2c7f7a5e6429
category: main
optional: false
- - name: tomlkit
- version: 0.12.3
+ - name: libgrpc
+ version: 1.59.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
+ __osx: ">=10.9"
+ c-ares: ">=1.20.1,<2.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ re2: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.59.2-ha7f534c_0.conda
hash:
- md5: 074d0ce7a6261ab8b497c3518796ef3e
- sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
+ md5: 7db1bdebc02cd6e56f9f420ac3c1e557
+ sha256: 3f4e2df8760e279921adba7eba8b8b56c2b6ecde7872242ce6ae3bf55319e0b5
category: main
optional: false
- - name: toolz
- version: 0.12.0
+ - name: libgrpc
+ version: 1.59.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ c-ares: ">=1.20.1,<2.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libre2-11: ">=2023.6.2,<2024.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ re2: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.2-hbcf6334_0.conda
hash:
- md5: 92facfec94bc02d6ccf42e7173831a36
- sha256: 90229da7665175b0185183ab7b53f50af487c7f9b0f47cf09c184cbc139fd24b
+ md5: 773cf509934965514cc62d97fb38a2d7
+ sha256: fc7d7aecf633904bd945c7e4e0620d1485e90801405eb7d12269e57242916ae0
category: main
optional: false
- - name: toposort
- version: "1.10"
+ - name: libiconv
+ version: "1.17"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=10.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2
hash:
- md5: aeef653e20028f19a3c2cc70e166b509
- sha256: 23589eeb84f55c9f245ffca1201a0dc9b16e838d39fe7857d4bd0e3026e5b75a
+ md5: b62b52da46c39ee2bc3c162ac7f1804d
+ sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7
category: main
optional: false
- - name: tornado
- version: 6.3.3
+ - name: libiconv
+ version: "1.17"
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.3.3-py311h2725bcf_1.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hac89ed1_0.tar.bz2
hash:
- md5: daf5f053a40c2b0b8f86b605e302b7a4
- sha256: e3e4c12236b0a59e6568a9dc839116776eda408ca12bc0ad4e7a9dba4d66912f
+ md5: 691d103d11180486154af49c037b7ed9
+ sha256: 4a3294037d595754f7da7c11a41f3922f995aaa333f3cb66f02d8afa032a7bc2
category: main
optional: false
- - name: traitlets
- version: 5.13.0
+ - name: libiconv
+ version: "1.17"
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.13.0-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-he4db4b2_0.tar.bz2
hash:
- md5: 8a9953c15e1e5a7c1baddbbf4511a567
- sha256: 7ac67960ba2e8c16818043cc65ac6190fa4fd95f5b24357df58e4f73d5e60a10
+ md5: 686f9c755574aa221f29fbcf36a67265
+ sha256: 2eb33065783b802f71d52bef6f15ce0fafea0adc8506f10ebd0d490244087bec
category: main
optional: false
- - name: types-python-dateutil
- version: 2.8.19.14
+ - name: libjpeg-turbo
+ version: 3.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda
hash:
- md5: 4df15c51a543e806d439490b862be1c6
- sha256: 7b0129c72d371fa7a06ed5dd1d701844c20d03bb4641a38a88a982b347d087e2
+ md5: ea25936bb4080d843790b586850f82b8
+ sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f
category: main
optional: false
- - name: types-pyyaml
- version: 6.0.12.12
+ - name: libjpeg-turbo
+ version: 3.0.0
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda
hash:
- md5: 0cb14c80f66937df894d60626dd1921f
- sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c
+ md5: 72507f8e3961bc968af17435060b6dd6
+ sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f
category: main
optional: false
- - name: typing_extensions
- version: 4.8.0
+ - name: libjpeg-turbo
+ version: 3.0.0
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
hash:
- md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
- sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
+ md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1
+ sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993
category: main
optional: false
- - name: typing_utils
- version: 0.1.0
+ - name: libkml
+ version: 1.3.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2
+ libboost-headers: ""
+ libexpat: ">=2.5.0,<3.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ uriparser: ">=0.9.7,<1.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda
hash:
- md5: eb67e3cace64c66233e2d35949e20f92
- sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739
+ md5: 3eb5f16bcc8a02892199aa63555c731f
+ sha256: f67fc0be886c7eac14dbce858bfcffbc90a55b598e897e513f0979dd2caad750
category: main
optional: false
- - name: unicodecsv
- version: 0.14.1
+ - name: libkml
+ version: 1.3.0
manager: conda
platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/unicodecsv-0.14.1-py_1.tar.bz2
+ libboost-headers: ""
+ libcxx: ">=15.0.7"
+ libexpat: ">=2.5.0,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ uriparser: ">=0.9.7,<1.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-hab3ca0e_1018.conda
hash:
- md5: 3b2b0e9d7f73db2b5e45db113badb7f7
- sha256: 4bbf3579d57036725562ccc11c57bc487f1eb5c14c138a6881d10f34c2f04237
+ md5: 535b1bb4896b113c14dfa64141370a12
+ sha256: f546750a59b85a4b721f69e34e797ceddb93c438ee384db285e3344490d6a9b5
category: main
optional: false
- - name: uri-template
+ - name: libkml
version: 1.3.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
+ libboost-headers: ""
+ libcxx: ">=15.0.7"
+ libexpat: ">=2.5.0,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ uriparser: ">=0.9.7,<1.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
hash:
- md5: 0944dc65cb4a9b5b68522c3bb585d41c
- sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
+ md5: f287028317d50fa3edad9c715d22e26b
+ sha256: ba3833cd0c517bb7a00b235b85a35bc58096e981ef3ac392c0916d83a1abc00a
category: main
optional: false
- - name: uvloop
- version: 0.19.0
+ - name: liblapack
+ version: 3.9.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libuv: ">=1.46.0,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.19.0-py311ha272bfe_0.conda
+ libblas: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda
hash:
- md5: f878c810a3665d5cca94d1da888413b3
- sha256: 40439cb32c09d961e61528b87f48e86b3ca549b26d62b8b06b7180b1a3356d9e
- category: dev
- optional: true
- - name: validators
- version: 0.22.0
+ md5: 6fabc51f5e647d09cc010c40061557e0
+ sha256: ad7745b8d0f2ccb9c3ba7aaa7167d62fc9f02e45eb67172ae5f0dfb5a3b1a2cc
+ category: main
+ optional: false
+ - name: liblapack
+ version: 3.9.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/validators-0.22.0-pyhd8ed1ab_0.conda
+ libblas: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-20_osx64_openblas.conda
hash:
- md5: 56435633ef70e7b92c54151599cbf757
- sha256: f30699fd1a76cf3291e042167f8dc8dd28e00e08e49047a353304c7ad7bc279d
+ md5: 704bfc2af1288ea973b6755281e6ad32
+ sha256: d64e11b93dada339cd0dcc057b3f3f6a5114b8c9bdf90cf6c04cbfa75fb02104
category: main
optional: false
- - name: webcolors
- version: "1.13"
+ - name: liblapack
+ version: 3.9.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ libblas: 3.9.0
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-20_osxarm64_openblas.conda
hash:
- md5: 166212fe82dad8735550030488a01d03
- sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ md5: 1fefac78f2315455ce2d7f34782eac0a
+ sha256: e13f79828a7752f6e0a74cbe62df80c551285f6c37de86bc3bd9987c97faca57
category: main
optional: false
- - name: webencodings
- version: 0.5.1
+ - name: libllvm14
+ version: 14.0.6
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=2.6"
- url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda
hash:
- md5: daf5160ff9cde3a468556965329085b9
- sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944
+ md5: 73301c133ded2bf71906aa2104edae8b
+ sha256: 225cc7c3b20ac1db1bdb37fa18c95bf8aecef4388e984ab2f7540a9f4382106a
category: main
optional: false
- - name: websocket-client
- version: 1.6.4
+ - name: libllvm14
+ version: 14.0.6
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda
+ libcxx: ">=15"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libllvm14-14.0.6-hc8e404f_4.conda
hash:
- md5: bdb77b28cf16deac0eef431a068320e8
- sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6
+ md5: ed06753e2ba7c66ed0ca7f19578fcb68
+ sha256: 0df3902a300cfe092425f86144d5e00ef67be3cd1cc89fd63084d45262a772ad
category: main
optional: false
- - name: websockets
- version: "10.4"
+ - name: libllvm14
+ version: 14.0.6
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/websockets-10.4-py311h5547dcb_1.tar.bz2
+ libcxx: ">=15"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm14-14.0.6-hd1a9a77_4.conda
hash:
- md5: aa4ddc6620538e684142d9c1d932fe28
- sha256: e5c79a611d725a5ec0623f02220ca8581451de32a2c92f5b62660ec2dacb3c8c
- category: dev
- optional: true
- - name: wheel
- version: 0.41.3
+ md5: 9f3dce5d26ea56a9000cd74c034582bd
+ sha256: 6f603914fe8633a615f0d2f1383978eb279eeb552079a78449c9fbb43f22a349
+ category: main
+ optional: false
+ - name: libllvm15
+ version: 15.0.7
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libxml2: ">=2.11.4,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ zstd: ">=1.5.2,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-h5cf9203_3.conda
hash:
- md5: 3fc026b9c87d091c4b34a6c997324ae8
- sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d
+ md5: 9efe82d44b76a7529a1d702e5a37752e
+ sha256: bb94e7535a309c2a8d58585cb82bac954ed59f473eef2cac6ea677d6f576a3b6
category: main
optional: false
- - name: widgetsnbextension
- version: 4.0.9
+ - name: libllvm15
+ version: 15.0.7
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda
+ libcxx: ">=15"
+ libxml2: ">=2.11.4,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ zstd: ">=1.5.2,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libllvm15-15.0.7-he4b1e75_3.conda
hash:
- md5: 82617d07b2f5f5a96296d3c19684b37a
- sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b
+ md5: ecc6df80c4b0445ac0de9cabae189db3
+ sha256: 02c7f5fe1ae9cdf4b0152cc76fef0ccb26137075054bdd9336ebf956fd22d8c9
category: main
optional: false
- - name: wrapt
- version: 1.16.0
+ - name: libllvm15
+ version: 15.0.7
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.16.0-py311he705e18_0.conda
+ libcxx: ">=15"
+ libxml2: ">=2.11.4,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h504e6bf_3.conda
hash:
- md5: 5ef2eefe4fca7c786bbbdd4f1de464ed
- sha256: e5546a52c0c0ed8a78dbac1cfec9a639f37fb3a86ea8ade8ff44aa7459dc6796
+ md5: cef4a00532f06f6797fbe2425d4db2a7
+ sha256: 8fbe19f2133c501a43a45f4dab701adf5206ed61f4bd6317f287a8d87409fdee
category: main
optional: false
- - name: xlrd
- version: 2.0.1
+ - name: libnetcdf
+ version: 4.9.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.1-pyhd8ed1ab_3.tar.bz2
+ blosc: ">=1.21.4,<2.0a0"
+ bzip2: ">=1.0.8,<2.0a0"
+ hdf4: ">=4.2.15,<4.2.16.0a0"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libaec: ">=1.0.6,<2.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzip: ">=1.10.1,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ zlib: ""
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h80fb2b6_112.conda
hash:
- md5: 97dfcd5ff030d829b55f67e82f928093
- sha256: a97030fc6cde1a335c035392db47efdb4add7d1db76a11b4bfac6ec7fc42bfe5
+ md5: a19fa6cacf80c8a366572853d5890eb4
+ sha256: 305ffc3ecaffce10754e4d057daa9803e8dc86d68b14524a791c7dc5598c1d2f
category: main
optional: false
- - name: xlsxwriter
- version: 3.1.9
+ - name: libnetcdf
+ version: 4.9.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.9-pyhd8ed1ab_0.conda
+ blosc: ">=1.21.4,<2.0a0"
+ bzip2: ">=1.0.8,<2.0a0"
+ hdf4: ">=4.2.15,<4.2.16.0a0"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libaec: ">=1.0.6,<2.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
+ libcxx: ">=15.0.7"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzip: ">=1.10.1,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ zlib: ""
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.2-nompi_h6a32802_112.conda
hash:
- md5: 70e533db62a710ae216fdaccc4a983c8
- sha256: 96f04c1aa99d3a90319979079cfe0f17ecea2bf0d67ca07c12d210af355a5d1d
+ md5: 413f9a35e9f888163b922ea6cfafb9da
+ sha256: 8b1bfc9322bd4f9fe770461fac5b75b1888ccdbdf72b2d2a2bec1e1c13e05f48
category: main
optional: false
- - name: xyzservices
- version: 2023.10.1
+ - name: libnetcdf
+ version: 4.9.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda
+ blosc: ">=1.21.4,<2.0a0"
+ bzip2: ">=1.0.8,<2.0a0"
+ hdf4: ">=4.2.15,<4.2.16.0a0"
+ hdf5: ">=1.14.2,<1.14.3.0a0"
+ libaec: ">=1.0.6,<2.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
+ libcxx: ">=15.0.7"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzip: ">=1.10.1,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ zlib: ""
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_hb2fb864_112.conda
hash:
- md5: 1e0d85c0e2fef9539218da185b285f54
- sha256: da655e2e0a742fddefeeaf2dd828b62a1820a3755d13341e1a555a10fcb9cf81
+ md5: fdd8c3b65f9369c4a5bbf23164ea8e19
+ sha256: fef33b99225691fce165cd1aadb85c823e2a3a9e5d67c3069f1d6b9ebbf53fdf
category: main
optional: false
- - name: zipp
- version: 3.17.0
+ - name: libnghttp2
+ version: 1.58.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda
+ c-ares: ">=1.21.0,<2.0a0"
+ libev: ">=4.33,<4.34.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda
hash:
- md5: 2e4d6bc0b14e10f895fc6791a7d9b26a
- sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26
+ md5: 9b13d5ee90fc9f09d54fd403247342b4
+ sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca
category: main
optional: false
- - name: aiosignal
- version: 1.3.1
+ - name: libnghttp2
+ version: 1.58.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- frozenlist: ">=1.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ c-ares: ">=1.21.0,<2.0a0"
+ libcxx: ">=16.0.6"
+ libev: ">=4.33,<4.34.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_0.conda
hash:
- md5: d1e1eb7e21a9e2c74279d87dafb68156
- sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783
+ md5: 864e23fba3678000154f53bbf6d476a2
+ sha256: b2b94cdaffa0d4fddd73c04262fdb1d1bcd6f8783979281ccfdb832e159cac4e
category: main
optional: false
- - name: anyio
- version: 4.0.0
+ - name: libnghttp2
+ version: 1.58.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- exceptiongroup: ""
- python: ">=3.8"
- sniffio: ">=1.1"
- idna: ">=2.8"
- url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.0.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ c-ares: ">=1.21.0,<2.0a0"
+ libcxx: ">=16.0.6"
+ libev: ">=4.33,<4.34.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_0.conda
hash:
- md5: 3c4e99d3ae4ec033d4dd99fb5220e540
- sha256: 64125775b2e724db5c72e431dd180495d5d509d0a2d1228a122e6af9f1b60e33
+ md5: b93d94874cfd44bc96496c2ee69f82a9
+ sha256: 3597032667444f91ae59343c553da6e93f2b3359bc2c0dd6b7f8260e41572e9c
category: main
optional: false
- - name: asgi-csrf
- version: "0.9"
+ - name: libnsl
+ version: 2.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- itsdangerous: ""
- python-multipart: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/asgi-csrf-0.9-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda
hash:
- md5: eae21b40ce9beded0ce0e5c67180b1e7
- sha256: 9e8d86083dac575490045e570147ff44879aa8412dafa04cff3e539f77eb263f
+ md5: 30fd6e37fe21f86f4bd26d6ee73eeec7
+ sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6
category: main
optional: false
- - name: asgiref
- version: 3.7.2
+ - name: libnuma
+ version: 2.0.16
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=4"
- url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda
hash:
- md5: 596932155bf88bb6837141550cb721b0
- sha256: 63f85717fd38912a69be5a03d35a648c404cb86843cd4a1302c380c0e7744e30
+ md5: 28bfe2cb11357ccc5be21101a6b7ce86
+ sha256: 814a50cba215548ec3ebfb53033ffb9b3b070b2966570ff44910b8d9ba1c359d
category: main
optional: false
- - name: asttokens
- version: 2.4.1
+ - name: libopenblas
+ version: 0.3.25
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- six: ">=1.12.0"
- url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libgfortran-ng: ""
+ libgfortran5: ">=12.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda
hash:
- md5: 5f25798dcefd8252ce5f9dc494d5f571
- sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111
+ md5: d172b34a443b95f86089e8229ddc9a17
+ sha256: 628564517895ee1b09cf72c817548bd80ef1acce6a8214a8520d9f7b44c4cfaf
category: main
optional: false
- - name: async-lru
- version: 2.0.4
+ - name: libopenblas
+ version: 0.3.25
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- typing_extensions: ">=4.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
+ libgfortran: 5.*
+ libgfortran5: ">=12.3.0"
+ llvm-openmp: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.25-openmp_hfef2a42_0.conda
hash:
- md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
- sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
+ md5: a01b96f00c3155c830d98a518c7dcbfb
+ sha256: 9895bccdbaa34958ab7dd1f29de66d1dfb94c551c7bb5a663666a500c67ee93c
category: main
optional: false
- - name: aws-c-s3
- version: 0.3.24
+ - name: libopenblas
+ version: 0.3.25
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- aws-c-auth: ">=0.7.6,<0.7.7.0a0"
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.3.24-hb1cbb54_0.conda
+ libgfortran: 5.*
+ libgfortran5: ">=12.3.0"
+ llvm-openmp: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.25-openmp_h6c19121_0.conda
hash:
- md5: 1ecf15003d2a41c0c3a834c0c8df2201
- sha256: e6f91423b15e0501e8f635d740cb2db39c057e97036e870aaf11b3a63a576335
+ md5: a1843550403212b9dedeeb31466ade03
+ sha256: b112e0d500bc0314ea8d393efac3ab8c67857e5a2b345348c98e703ee92723e5
category: main
optional: false
- - name: babel
- version: 2.13.1
+ - name: libparquet
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- setuptools: ""
- pytz: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
+ libarrow: 14.0.1
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libthrift: ">=0.19.0,<0.19.1.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-14.0.1-h352af49_3_cpu.conda
hash:
- md5: 3ccff479c246692468f604df9c85ef26
- sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
+ md5: 5e2f5615862bba1318a11e97d6a59d56
+ sha256: 96e192584e790a8bc010084c829de0aaae357979aa3b80b50d36f72179d8029f
category: main
optional: false
- - name: backports.functools_lru_cache
- version: 1.6.5
+ - name: libparquet
+ version: 14.0.1
manager: conda
platform: osx-64
dependencies:
- setuptools: ""
- backports: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ libthrift: ">=0.19.0,<0.19.1.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.1-h27bd29f_3_cpu.conda
hash:
- md5: 6b1b907661838a75d067a22f87996b2e
- sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700
+ md5: e6dc5d4796ce80233fe1233e651ec983
+ sha256: 92d7137e89cff12faf7f16e556bee21b71d0e1b78e3305e2e2e5da15ba8745fe
category: main
optional: false
- - name: beautifulsoup4
- version: 4.12.2
+ - name: libparquet
+ version: 14.0.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- soupsieve: ">=1.2"
- url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libcxx: ">=15.0.7"
+ libthrift: ">=0.19.0,<0.19.1.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-14.0.1-heaab74a_3_cpu.conda
hash:
- md5: a362ff7d976217f8fa78c0f1c4f59717
- sha256: 52d3e6bcd442537e22699cd227d8fdcfd54b708eeb8ee5b4c671a6a9b9cd74da
+ md5: 84a11f6c99bbd2fce61890751fc94777
+ sha256: 0514387e5082b50d716bb3e91de9898e928616843105c413d1ddf5f78a80210a
category: main
optional: false
- - name: bleach
- version: 6.1.0
+ - name: libpng
+ version: 1.6.39
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- setuptools: ""
- packaging: ""
- webencodings: ""
- python: ">=3.6"
- six: ">=1.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda
hash:
- md5: 0ed9d7c0e9afa7c025807a9a8136ea3e
- sha256: 845e77ef495376c5c3c328ccfd746ca0ef1978150cae8eae61a300fe7755fb08
+ md5: e1c890aebdebbfbf87e2c917187b4416
+ sha256: a32b36d34e4f2490b99bddbc77d01a674d304f667f0e62c89e02c961addef462
category: main
optional: false
- - name: cached-property
- version: 1.5.2
+ - name: libpng
+ version: 1.6.39
manager: conda
platform: osx-64
dependencies:
- cached_property: ">=1.5.2,<1.5.3.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.39-ha978bb4_0.conda
hash:
- md5: 9b347a7ec10940d3f7941ff6c460b551
- sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
+ md5: 35e4928794c5391aec14ffdf1deaaee5
+ sha256: 5ad9f5e96e6770bfc8b0a826f48835e7f337c2d2e9512d76027a62f9c120b2a3
category: main
optional: false
- - name: cffi
- version: 1.16.0
+ - name: libpng
+ version: 1.6.39
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libffi: ">=3.4,<4.0a0"
- pycparser: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.16.0-py311hc0b63fd_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.39-h76d750c_0.conda
hash:
- md5: 15d07b82223cac96af629e5e747ba27a
- sha256: 1f13a5fa7f310fdbd27f5eddceb9e62cfb10012c58a58c923dd6f51fa979748a
+ md5: 0078e6327c13cfdeae6ff7601e360383
+ sha256: 21ab8409a8e66f9408b96428c0a36a9768faee9fe623c56614576f9e12962981
category: main
optional: false
- - name: cfitsio
- version: 4.3.0
+ - name: libpq
+ version: "16.1"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libcurl: ">=8.2.0,<9.0a0"
- libgfortran: 5.*
- libgfortran5: ">=12.2.0"
+ krb5: ">=1.21.2,<1.22.0a0"
+ libgcc-ng: ">=12"
libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/cfitsio-4.3.0-h66f91ea_0.conda
+ openssl: ">=3.1.4,<3.2.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-hfc447b1_0.conda
hash:
- md5: f540472ad8a8ea2b39a4c6ca14ebc1b5
- sha256: 0246d80ce305609c7e810514d1aa578ef498a1f05fd2dba5fa46ea845e4e57b9
+ md5: 2b7f1893cf40b4ccdc0230bcd94d5ed9
+ sha256: 8c92a8cce329a83cc9e94b19d18200c661957c00cfb464f26237d24730864585
category: main
optional: false
- - name: click-default-group
- version: 1.2.4
+ - name: libpq
+ version: "16.1"
manager: conda
platform: osx-64
dependencies:
- click: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda
+ krb5: ">=1.21.2,<1.22.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<3.2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libpq-16.1-h6dd4ff7_0.conda
hash:
- md5: 7c2b6931f9b3548ed78478332095c3e9
- sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0
+ md5: 39de94ff4ccc306f3d24ef7aef13c689
+ sha256: 1a51c9b3451eebf04ac1f7a7a58fec07c2e44d2298514a30f62b5b432a653c07
category: main
optional: false
- - name: click-default-group-wheel
- version: 1.2.2
+ - name: libpq
+ version: "16.1"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- click: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-wheel-1.2.2-pyhd8ed1ab_0.tar.bz2
+ krb5: ">=1.21.2,<1.22.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<3.2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-hd435d45_0.conda
hash:
- md5: 2228f2640491b5e9c03b6f6346cba887
- sha256: 3a4d5c96f5375715aec9b8b7639c5a401a90dc1019d24288e4e9494148a640ee
+ md5: 883bbf64780c91608f1a7df9203b79a5
+ sha256: 1b5c86d5f247b3e154ae373dcebea6979368c4a0ee722d39ec33ee2fc8528c04
category: main
optional: false
- - name: click-plugins
- version: 1.1.1
+ - name: libprotobuf
+ version: 4.24.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ""
- click: ">=3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.4-hf27288f_0.conda
hash:
- md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f
- sha256: ddef6e559dde6673ee504b0e29dd814d36e22b6b9b1f519fa856ee268905bf92
+ md5: 1a0287ab734591ad63603734f923016b
+ sha256: 3e0f6454190abb27edd2aeb724688ee440de133edb02cbb17d5609ba36aa8be0
category: main
optional: false
- - name: cligj
- version: 0.7.2
+ - name: libprotobuf
+ version: 4.24.4
manager: conda
platform: osx-64
dependencies:
- python: <4.0
- click: ">=4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.24.4-h0ee05dc_0.conda
hash:
- md5: a29b7c141d6b2de4bb67788a5f107734
- sha256: 97bd58f0cfcff56a0bcda101e26f7d936625599325beba3e3a1fa512dd7fc174
+ md5: c0f2660a38d96e55c6aae15a06ee277b
+ sha256: 4c0cd48fa2b0ac5cad6204d686bcb8e51bc5906c25180919ecf8f3000c0eade5
category: main
optional: false
- - name: clikit
- version: 0.6.2
+ - name: libprotobuf
+ version: 4.24.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- pylev: ">=1.3,<2.0"
- pastel: ">=0.2.0,<0.3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyhd8ed1ab_2.conda
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.24.4-hc9861d8_0.conda
hash:
- md5: 02abb7b66b02e8b9f5a9b05454400087
- sha256: 2d582bc15d9116ec5467b565fb87d9034c8b56f60943e8eb69407f55f1ab5a78
+ md5: ac5438d981e105e053b341eb30c44273
+ sha256: 2e81e023f463ef239e2fb7f56a4e8eed61a1d8e9ca3f2f07bec1668cc369b2ce
category: main
optional: false
- - name: coloredlogs
- version: "14.0"
+ - name: libre2-11
+ version: 2023.06.02
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- humanfriendly: ">=7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-14.0-pyhd8ed1ab_3.tar.bz2
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.06.02-h7a70373_0.conda
hash:
- md5: 6b92f390b198cb631c95fd37097098c8
- sha256: 703557fb1bde384b34cd8b1aa88c485e8900f83420bb69066f958f45c2008ef9
+ md5: c0e7eacd9694db3ef5ef2979a7deea70
+ sha256: 22b0b2169c80b65665ba0d6418bd5d3d4c7d89915ee0f9613403efe871c27db8
category: main
optional: false
- - name: comm
- version: 0.1.4
+ - name: libre2-11
+ version: 2023.06.02
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.06.02-h4694dbf_0.conda
hash:
- md5: c8eaca39e2b6abae1fc96acc929ae939
- sha256: 11057745946a95ee7cc4c98900a60c7362266a4cb28bc97d96cd88e3056eb701
+ md5: d7c00395eaf2446eec6ce0f34cfd5b78
+ sha256: 73acd1ade87762c3f1aacf2a7c6271dd1e1c972d46ea7c44d8781595bca9218e
category: main
optional: false
- - name: coverage
- version: 7.3.2
+ - name: libre2-11
+ version: 2023.06.02
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- tomli: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.3.2-py311h2725bcf_0.conda
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.06.02-h1753957_0.conda
hash:
- md5: 0ce651c68a0322a6eacef726025b938a
- sha256: ada34f95907fe0cd98d4d12e439bd1508363738f8b0fbe88d14cb398f4235af6
+ md5: 3b8652db4bf4e27fa1446526f7a78498
+ sha256: 8bafee8f8ef27f4cb0afffe5404dd1abfc5fd6eac1ee9b4847a756d440bd7aa7
category: main
optional: false
- - name: fonttools
- version: 4.44.3
+ - name: librsvg
+ version: 2.56.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- brotli: ""
- munkres: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.44.3-py311he705e18_0.conda
+ cairo: ">=1.16.0,<2.0a0"
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ libgcc-ng: ">=12"
+ libglib: ">=2.76.4,<3.0a0"
+ libxml2: ">=2.11.4,<2.12.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-h98fae49_0.conda
hash:
- md5: 07fdfc42db3c7be6abfb6c5eeb3b54c9
- sha256: e565a457df0ee77013554e26cd9f14dafe88872654980f7311a0d0a7cd2825af
- category: main
- optional: false
- - name: gitdb
- version: 4.0.11
+ md5: 620e754f4344f4c27259ff460a2b9c50
+ sha256: 4b2dd7745caadc425045dbe31a2300b3b8de4346873f04aa9b552c56f3b1e001
+ category: dev
+ optional: true
+ - name: librsvg
+ version: 2.56.3
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- smmap: ">=3.0.1,<6"
- url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ cairo: ">=1.16.0,<2.0a0"
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ libglib: ">=2.76.4,<3.0a0"
+ libxml2: ">=2.11.4,<2.12.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.56.3-hec3db73_0.conda
hash:
- md5: 623b19f616f2ca0c261441067e18ae40
- sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
- category: main
- optional: false
- - name: graphql-core
- version: 3.2.3
+ md5: c6ab56c808493cbd88267fad5297c3c1
+ sha256: 031f377db78d673b89ec837efed3d794d7abd0ce787c2527153a15197e29d3c8
+ category: dev
+ optional: true
+ - name: librsvg
+ version: 2.56.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- typing_extensions: ">=4,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.3-pyhd8ed1ab_0.tar.bz2
+ cairo: ">=1.16.0,<2.0a0"
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ libglib: ">=2.76.4,<3.0a0"
+ libxml2: ">=2.11.4,<2.12.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.56.3-h0db3404_0.conda
hash:
- md5: 87cafe8c7638a5ac6fd8ec8fb01f1508
- sha256: 6f7da913ecad98951cadfe512af2c3979fbff752bf714da66760701e5463dd29
+ md5: b9784f5c16c6d01d59f7e65a3b0441c6
+ sha256: 4ed7ddb12fe193994cbf7d77eb3d7e776fda6c65e95c467f32392f40b880bbe6
category: dev
optional: true
- - name: grpcio
- version: 1.59.2
+ - name: librttopo
+ version: 1.1.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ geos: ">=3.12.1,<3.12.2.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h8917695_15.conda
+ hash:
+ md5: 20c3c14bc491f30daecaa6f73e2223ae
+ sha256: 03e248787162a1804683c614c0681c2488fa6d9f353cb32e2f8c1158157165ea
+ category: main
+ optional: false
+ - name: librttopo
+ version: 1.1.0
manager: conda
platform: osx-64
dependencies:
__osx: ">=10.9"
+ geos: ">=3.12.1,<3.12.2.0a0"
libcxx: ">=16.0.6"
- libgrpc: 1.59.2
- libzlib: ">=1.2.13,<1.3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/grpcio-1.59.2-py311hfd95bfa_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-hf05f67e_15.conda
hash:
- md5: 7a0f85ebc948f72e8b34eac28258de2a
- sha256: 29d6b104362caa2d2d0ac9b4b4fa13610b3e4aec2d4e277aadf3ac5fec4c6be2
+ md5: e65bedc9d9779a161cf26b6d12305246
+ sha256: 10c46efefda5cc77143832a186f517e401098907cf9c3ec7406a5c242bb34e33
category: main
optional: false
- - name: h11
- version: 0.14.0
+ - name: librttopo
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- typing_extensions: ""
- python: ">=3"
- url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ libcxx: ">=16.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-hc8f776e_15.conda
hash:
- md5: b21ed0883505ba1910994f1df031a428
- sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085
+ md5: c87bc8aa4ea874b9db3f06cc16d939eb
+ sha256: 00f016e7b7d4f68ddefc4e857b63c963402e66aeff8bb560a8bacdd6d51c6508
category: main
optional: false
- - name: h2
- version: 4.1.0
+ - name: libsodium
+ version: 1.0.18
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6.1"
- hpack: ">=4.0,<5"
- hyperframe: ">=6.0,<7"
- url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2
+ hash:
+ md5: c3788462a6fbddafdb413a9f9053e58d
+ sha256: 53da0c8b79659df7b53eebdb80783503ce72fb4b10ed6e9e05cc0e9e4207a130
+ category: main
+ optional: false
+ - name: libsodium
+ version: 1.0.18
+ manager: conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2
hash:
- md5: b748fbf7060927a6e82df7cb5ee8f097
- sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
+ md5: 24632c09ed931af617fe6d5292919cab
+ sha256: 2da45f14e3d383b4b9e3a8bacc95cd2832aac2dbf9fbc70d255d384a310c5660
category: main
optional: false
- - name: harfbuzz
- version: 8.3.0
+ - name: libsodium
+ version: 1.0.18
manager: conda
- platform: osx-64
- dependencies:
- __osx: ">=10.9"
- cairo: ">=1.18.0,<2.0a0"
- freetype: ">=2.12.1,<3.0a0"
- graphite2: ""
- icu: ">=73.2,<74.0a0"
- libcxx: ">=16.0.6"
- libglib: ">=2.78.1,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-8.3.0-hf45c392_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2
hash:
- md5: 41d890485f909e4ecdc608741718c75e
- sha256: c6ea14e4f4869bc78b27276c09832af845dfa415585362ed6064e37a1b5fe9c5
- category: dev
- optional: true
- - name: hdf5
- version: 1.14.2
+ md5: 90859688dbca4735b74c02af14c4c793
+ sha256: 1d95fe5e5e6a0700669aab454b2a32f97289c9ed8d1f7667c2ba98327a6f05bc
+ category: main
+ optional: false
+ - name: libspatialindex
+ version: 1.9.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
- libgfortran: 5.*
- libgfortran5: ">=12.3.0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.2-nompi_hedada53_100.conda
+ libgcc-ng: ">=9.3.0"
+ libstdcxx-ng: ">=9.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libspatialindex-1.9.3-h9c3ff4c_4.tar.bz2
hash:
- md5: 2b1d4f355b60eb10c5cb435b9f0e664f
- sha256: 08ab97d63ab4be60c92d3f5931effc565ae6ee0cd686eba81b9d20daf5f181ff
+ md5: d87fbe9c0ff589e802ff13872980bfd9
+ sha256: 588fbd0c11bc44e354365d5f836183216a4ed17d680b565ff416a93b839f1a8b
category: main
optional: false
- - name: html5lib
- version: "1.1"
+ - name: libspatialindex
+ version: 1.9.3
manager: conda
platform: osx-64
dependencies:
- python: ""
- webencodings: ""
- six: ">=1.9"
- url: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2
+ libcxx: ">=11.1.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libspatialindex-1.9.3-he49afe7_4.tar.bz2
hash:
- md5: b2355343d6315c892543200231d7154a
- sha256: 9ad06446fe9847e86cb20d220bf11614afcd2cbe9f58096f08d5d4018877bee4
+ md5: b1c13764417c32fa87fac733caa82a64
+ sha256: 443db45215e08fbf134a019486c20540d9903c1d9b14ac28ba299f8a730069da
category: main
optional: false
- - name: hypothesis
- version: 6.89.0
+ - name: libspatialindex
+ version: 1.9.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- setuptools: ""
- python: ">=3.8"
- click: ">=7.0"
- attrs: ">=19.2.0"
- sortedcontainers: ">=2.1.0,<3.0.0"
- backports.zoneinfo: ">=0.2.1"
- exceptiongroup: ">=1.0.0rc8"
- url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.89.0-pyha770c72_0.conda
+ libcxx: ">=11.1.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialindex-1.9.3-hbdafb3b_4.tar.bz2
hash:
- md5: 87fe6add77af84b6fafecd466e27a28d
- sha256: 5805c101a002de63400e97d33d0e70f4cade33b2e7bf76061aaa0a7058fc44ea
+ md5: 311816a2511df4bceeeebe7c06af63e7
+ sha256: a1af21a778e7a04fd866ccd617a4503ebe8abeb4e5fe718cd219be4d6e70e778
category: main
optional: false
- - name: importlib-metadata
- version: 6.8.0
+ - name: libspatialite
+ version: 5.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- zipp: ">=0.5"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda
+ freexl: ">=2.0.0,<3.0a0"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ libgcc-ng: ">=12"
+ librttopo: ">=1.1.0,<1.2.0a0"
+ libsqlite: ">=3.44.1,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libxml2: ">=2.11.6,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ sqlite: ""
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h7385560_2.conda
hash:
- md5: 4e9f59a060c3be52bc4ddc46ee9b6946
- sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf
+ md5: 4260750b280f6f7c38a4459bf0d919ff
+ sha256: 5efbd5bc05ebaa6bb66b7e408d2998a4116029c2e3c2b0336e29267488d93a45
category: main
optional: false
- - name: importlib_resources
- version: 6.1.1
+ - name: libspatialite
+ version: 5.1.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- zipp: ">=3.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ freexl: ">=2.0.0,<3.0a0"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ libcxx: ">=16.0.6"
+ libiconv: ">=1.17,<2.0a0"
+ librttopo: ">=1.1.0,<1.2.0a0"
+ libsqlite: ">=3.44.1,<4.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ sqlite: ""
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-hf63aa75_2.conda
hash:
- md5: 3d5fa25cf42f3f32a12b2d874ace8574
- sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed
+ md5: 2c00e79960e3a8fde456ff228eaca1ed
+ sha256: e233c42c026efaf1fc0b0847e73137d16b9f5742615b9cf2426cfcb53a14f709
category: main
optional: false
- - name: isodate
- version: 0.6.1
+ - name: libspatialite
+ version: 5.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- six: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ freexl: ">=2.0.0,<3.0a0"
+ geos: ">=3.12.1,<3.12.2.0a0"
+ libcxx: ">=16.0.6"
+ libiconv: ">=1.17,<2.0a0"
+ librttopo: ">=1.1.0,<1.2.0a0"
+ libsqlite: ">=3.44.1,<4.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ sqlite: ""
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-h66af7d6_2.conda
hash:
- md5: 4a62c93c1b5c0b920508ae3fd285eaf5
- sha256: af8f801e093da52a50ca0ea0510dfaf6898fea37e66d08d335e370235dede9fc
+ md5: cec958a38abd789967347005686c7dd9
+ sha256: f6871a59faa7781ac56c25e73bfca8b4f0428b4a1d4f9eac9394a6dc723974b7
category: main
optional: false
- - name: janus
- version: 1.0.0
+ - name: libsqlite
+ version: 3.44.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=3.7.4.3"
- url: https://conda.anaconda.org/conda-forge/noarch/janus-1.0.0-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda
hash:
- md5: 304b5bce5a9b3590d825ffd85ac63471
- sha256: b702ef1e280249065d69aef7b0a7b3920903d2de68283bb5282cb57a4ed54d19
+ md5: 3b6a9f225c3dbe0d24f4fedd4625c5bf
+ sha256: ee2c4d724a3ed60d5b458864d66122fb84c6ce1df62f735f90d8db17b66cd88a
category: main
optional: false
- - name: jaraco.classes
- version: 3.3.0
+ - name: libsqlite
+ version: 3.44.2
manager: conda
platform: osx-64
dependencies:
- more-itertools: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.44.2-h92b6c6a_0.conda
hash:
- md5: e9f79248d30e942f7c358ff21a1790f5
- sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891
+ md5: d4419f90019e6a2b152cd4d32f73a82f
+ sha256: 8a317d2aa6352feba951ca09d5bf34f565f9dd10bb14ff842b8650baa321d781
category: main
optional: false
- - name: jedi
- version: 0.19.1
+ - name: libsqlite
+ version: 3.44.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- parso: ">=0.8.3,<0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.44.2-h091b4b1_0.conda
hash:
- md5: 81a3be0b2023e1ea8555781f0ad904a2
- sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a
+ md5: d7e1af696cfadec251a0abdd7b79ed77
+ sha256: f0dc2fe69eddb4bab72ff6bb0da51d689294f466ee1b01e80ced1e7878a21aa5
category: main
optional: false
- - name: jinja2
- version: 3.1.2
+ - name: libssh2
+ version: 1.11.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- markupsafe: ">=2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2
+ libgcc-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.1,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda
hash:
- md5: c8490ed5c70966d232fdd389d0dbed37
- sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5
+ md5: 1f5a58e686b13bcfde88b93f547d23fe
+ sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d
category: main
optional: false
- - name: joblib
- version: 1.3.2
+ - name: libssh2
+ version: 1.11.0
manager: conda
platform: osx-64
dependencies:
- setuptools: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.1,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda
hash:
- md5: 4da50d410f553db77e62ab62ffaa1abc
- sha256: 31e05d47970d956206188480b038829d24ac11fe8216409d8584d93d40233878
+ md5: ca3a72efba692c59a90d4b9fc0dfe774
+ sha256: f3886763b88f4b24265db6036535ef77b7b77ce91b1cbe588c0fbdd861eec515
category: main
optional: false
- - name: jsonlines
- version: 4.0.0
+ - name: libssh2
+ version: 1.11.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- typing_extensions: ""
- python: ">=3.6"
- attrs: ">=19.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.1,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda
hash:
- md5: df32eb56c2a48a5ca9465aef29dd46bc
- sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c
+ md5: 029f7dc931a3b626b94823bc77830b01
+ sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015
category: main
optional: false
- - name: jupyterlab_pygments
- version: 0.2.2
+ - name: libstdcxx-ng
+ version: 13.2.0
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.7"
- pygments: ">=2.4.1,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2
+ platform: linux-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda
hash:
- md5: 243f63592c8e449f40cd42eb5cf32f40
- sha256: 08453e09d5a6bbaeeca839553a5dfd7a377a97550efab96019c334a8042f54f5
+ md5: 937eaed008f6bf2191c5fe76f87755e9
+ sha256: 6c6c49efedcc5709a66f19fb6b26b69c6a5245310fd1d9a901fd5e38aaf7f882
category: main
optional: false
- - name: latexcodec
- version: 2.0.1
+ - name: libthrift
+ version: 0.19.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2
+ libevent: ">=2.1.12,<2.1.13.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda
hash:
- md5: 8d67904973263afd2985ba56aa2d6bb4
- sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f
+ md5: 8cdb7d41faa0260875ba92414c487e2d
+ sha256: 719add2cf20d144ef9962c57cd0f77178259bdb3aae1cded2e2b2b7c646092f5
category: main
optional: false
- - name: libcblas
- version: 3.9.0
+ - name: libthrift
+ version: 0.19.0
manager: conda
platform: osx-64
dependencies:
- libblas: 3.9.0
- url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-19_osx64_openblas.conda
+ libcxx: ">=15.0.7"
+ libevent: ">=2.1.12,<2.1.13.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda
hash:
- md5: 40e412c219ad8cf87ba664466071bcf6
- sha256: 70afde49736007bbb804d126a3983ba1fa04383006aae416a2971d538e274427
+ md5: b152655bfad7c2374ff03be0596052b6
+ sha256: 4346c25ef6e2ff3d0fc93074238508531188ecd0dbea6414f6cb93a7775072c4
category: main
optional: false
- - name: libgoogle-cloud
- version: 2.12.0
+ - name: libthrift
+ version: 0.19.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcrc32c: ">=1.1.2,<1.2.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libgrpc: ">=1.59.2,<1.60.0a0"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.12.0-hc0857f6_4.conda
+ libcxx: ">=15.0.7"
+ libevent: ">=2.1.12,<2.1.13.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda
hash:
- md5: 976555c39f83093265491c9c081a801c
- sha256: 1bf47f43796369ec85a27221ab9a84ecc848f93a88049d046cd8521c25b129f6
+ md5: 4b8b21eb00d9019e9fa351141da2a6ac
+ sha256: b2c1b30d36f0412c0c0313db76a0236d736f3a9b887b8ed16182f531e4b7cb80
category: main
optional: false
- - name: liblapack
- version: 3.9.0
+ - name: libtiff
+ version: 4.6.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libblas: 3.9.0
- url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-19_osx64_openblas.conda
+ lerc: ">=4.0.0,<5.0a0"
+ libdeflate: ">=1.19,<1.20.0a0"
+ libgcc-ng: ">=12"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-ha9c0a0a_2.conda
hash:
- md5: 2e714df18db99ee6d7b4ac728f53ca62
- sha256: 6a1704c43a03195fecbbb226be5c257b2e37621e793967c3f31c8521f19e18df
+ md5: 55ed21669b2015f77c180feb1dd41930
+ sha256: 45158f5fbee7ee3e257e6b9f51b9f1c919ed5518a94a9973fe7fa4764330473e
category: main
optional: false
- - name: linear-tsv
- version: 1.1.0
+ - name: libtiff
+ version: 4.6.0
manager: conda
platform: osx-64
dependencies:
- python: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/linear-tsv-1.1.0-py_1.tar.bz2
+ lerc: ">=4.0.0,<5.0a0"
+ libcxx: ">=15.0.7"
+ libdeflate: ">=1.19,<1.20.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h684deea_2.conda
hash:
- md5: 16491914064fdfe1b9a8fba94ac90e9a
- sha256: 7d653455e3ab3bdbd064e5a8995cce6e657fb1b2fdd26f0bc62ed57687b16043
+ md5: 2ca10a325063e000ad6d2a5900061e0d
+ sha256: 1ef5bd7295f4316b111f70ad21356fb9f0de50b85a341cac9e3a61ac6487fdf1
category: main
optional: false
- - name: markdown-it-py
- version: 3.0.0
+ - name: libtiff
+ version: 4.6.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- mdurl: ">=0.1,<1"
- url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ lerc: ">=4.0.0,<5.0a0"
+ libcxx: ">=15.0.7"
+ libdeflate: ">=1.19,<1.20.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-ha8a6c65_2.conda
hash:
- md5: 93a8e71256479c62074356ef6ebf501b
- sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
+ md5: 596d6d949bab9a75a492d451f521f457
+ sha256: b18ef36eb90f190db22c56ae5a080bccc16669c8f5b795a6211d7b0c00c18ff7
category: main
optional: false
- - name: matplotlib-inline
- version: 0.1.6
+ - name: libutf8proc
+ version: 2.8.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- traitlets: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2
hash:
- md5: b21613793fcc81d944c76c9f2864a7de
- sha256: aa091b88aec55bfa2d9207028d8cdc689b9efb090ae27b99557e93c675be2f3c
+ md5: ede4266dc02e875fe1ea77b25dd43747
+ sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c
category: main
optional: false
- - name: nodeenv
- version: 1.8.0
+ - name: libutf8proc
+ version: 2.8.0
manager: conda
platform: osx-64
- dependencies:
- setuptools: ""
- python: 2.7|>=3.7
- url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2
hash:
- md5: 2a75b296096adabbabadd5e9782e5fcc
- sha256: 1320306234552717149f36f825ddc7e27ea295f24829e9db4cc6ceaff0b032bd
+ md5: db98dc3e58cbc11583180609c429c17d
+ sha256: 55a7f96b2802e94def207fdfe92bc52c24d705d139bb6cdb3d936cbe85e1c505
category: main
optional: false
- - name: openpyxl
- version: 3.1.2
+ - name: libutf8proc
+ version: 2.8.0
manager: conda
- platform: osx-64
- dependencies:
- et_xmlfile: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.2-py311h2725bcf_1.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2
hash:
- md5: 49d96f49b6dc810211844fdb11299714
- sha256: 0b19f81f03f1c06d0e04e59338c309d5f8ca89443e881f63abd506c78962d5a1
+ md5: f8c9c41a122ab3abdf8943b13f4957ee
+ sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a
category: main
optional: false
- - name: overrides
- version: 7.4.0
+ - name: libuuid
+ version: 2.38.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- typing_utils: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.4.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
hash:
- md5: 4625b7b01d7f4ac9c96300a5515acfaa
- sha256: 29db8c3b521d261bf71897ba3cfbebc81cd61e581b30fcb984b5a713f02fe1ff
+ md5: 40b61aab5c7ba9ff276c41cfffe6b80b
+ sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18
category: main
optional: false
- - name: partd
- version: 1.4.1
+ - name: libuv
+ version: 1.46.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- toolz: ""
- locket: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda
hash:
- md5: acf4b7c0bcd5fa3b0e05801c4d2accd6
- sha256: b248238da2bb9dfe98e680af911dc7013af86095e3ec8baf08905555632d34c7
+ md5: d23c76f7e6dcd6243d1b6ef5e62d17d2
+ sha256: 4bc4c946e9a532c066442714eeeeb1ffbd03cd89789c4047293f5e782b5fedd7
category: main
optional: false
- - name: pexpect
- version: 4.8.0
+ - name: libuv
+ version: 1.46.0
manager: conda
platform: osx-64
- dependencies:
- python: ""
- ptyprocess: ">=0.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.46.0-h0c2f820_0.conda
hash:
- md5: 330448ce4403cc74990ac07c555942a1
- sha256: 07706c0417ead94f359ca7278f65452d3c396448777aba1da6a11fc351bdca9a
+ md5: 27664a5d39d9c32ae38880fec2b33b36
+ sha256: e51667c756f15580d3ce131d6157f0238d931c05af118c89f019854f2a7c125e
category: main
optional: false
- - name: pint
- version: "0.22"
+ - name: libuv
+ version: 1.46.0
manager: conda
- platform: osx-64
- dependencies:
- typing_extensions: ""
- python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.46.0-hb547adb_0.conda
hash:
- md5: a719c3f3959c529e558e9ed9f98c3f30
- sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
+ md5: 5f1d535f82e8210ac80d191610b92325
+ sha256: f2fe8e22a99f91761c16dc7b00408bff0f5c30d4cccc6ea562db00a4041c5579
category: main
optional: false
- - name: pip
- version: 23.3.1
+ - name: libwebp
+ version: 1.3.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- setuptools: ""
- wheel: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda
+ giflib: ">=5.2.1,<5.3.0a0"
+ libgcc-ng: ">=12"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-h658648e_1.conda
hash:
- md5: 2400c0b86889f43aa52067161e1fb108
- sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563
- category: main
- optional: false
- - name: poppler
- version: 23.11.0
+ md5: 0ebb65e8d86843865796c7c95a941f34
+ sha256: cc5e55531d8067ea379b145861aea8c749a545912bc016372f5e3c69cc925efd
+ category: dev
+ optional: true
+ - name: libwebp
+ version: 1.3.2
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- cairo: ">=1.18.0,<2.0a0"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- gettext: ">=0.21.1,<1.0a0"
- lcms2: ">=2.15,<3.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libglib: ">=2.78.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
+ giflib: ">=5.2.1,<5.3.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.3.2-h44782d1_1.conda
+ hash:
+ md5: 46d48ff2cd600a82db18d7b83471aa86
+ sha256: 4d7e1efb76e398f578c5a3d0905c5eca1e4a93298aed6e2f7a10854f6671dfe8
+ category: dev
+ optional: true
+ - name: libwebp
+ version: 1.3.2
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ giflib: ">=5.2.1,<5.3.0a0"
libjpeg-turbo: ">=3.0.0,<4.0a0"
libpng: ">=1.6.39,<1.7.0a0"
libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- nspr: ">=4.35,<5.0a0"
- nss: ">=3.94,<4.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- poppler-data: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/poppler-23.11.0-hdd5a5e8_0.conda
+ libwebp-base: ">=1.3.2,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-1.3.2-hf30222e_1.conda
hash:
- md5: 60ffe2d3a09ff99eb2601487d6ddaeea
- sha256: fb6a53ddac3fa8c097b4a0b7d2f40219b13bfa3324147aaf6c5a14ee5fb27521
- category: main
- optional: false
- - name: postgresql
- version: "16.1"
+ md5: a07cf7f5425eb51b79880fb66837200f
+ sha256: 5ee611009277c8aaef1a5355df6a05100e563735ec33ef019f6415db0b83d548
+ category: dev
+ optional: true
+ - name: libwebp-base
+ version: 1.3.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libpq: "16.1"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- readline: ">=8.2,<9.0a0"
- tzcode: ""
- tzdata: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/postgresql-16.1-h413614c_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.2-hd590300_0.conda
hash:
- md5: b7322d27093606b939fb92fa33b92beb
- sha256: 612393024639882d7515429e639c85fa3b712d114c5a6b3a4b3891b061e1bc89
+ md5: 30de3fd9b3b602f7473f30e684eeea8c
+ sha256: 68764a760fa81ef35dacb067fe8ace452bbb41476536a4a147a1051df29525f0
category: main
optional: false
- - name: proj
- version: 9.3.0
+ - name: libwebp-base
+ version: 1.3.2
manager: conda
platform: osx-64
- dependencies:
- libcurl: ">=8.4.0,<9.0a0"
- libsqlite: ">=3.43.2,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- sqlite: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/proj-9.3.0-h23b96cc_2.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.3.2-h0dc2134_0.conda
hash:
- md5: 63e960e8c8020936c0b73f23bfed16dd
- sha256: e1b0f351103555e0d8ab641aeba4076173c3b7a2f8ed738b43ec66709d51be15
+ md5: 4e7e9d244e87d66c18d36894fd6a8ae5
+ sha256: fa7580f26fec4c28321ec2ece1257f3293e0c646c635e9904679f4a8369be401
category: main
optional: false
- - name: protobuf
- version: 4.24.4
+ - name: libwebp-base
+ version: 1.3.2
manager: conda
- platform: osx-64
- dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/protobuf-4.24.4-py311h021eaf5_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.3.2-hb547adb_0.conda
hash:
- md5: f8105062d22f61505797d78890b5ca75
- sha256: 2d6e0a1681d8ce871d8a6e2a0f40ad48c14d2a3df19a8012e95a4e33ddddcde6
+ md5: 85dbc11098cdbe4244cd73f29a3ab795
+ sha256: a159b848193043fb58465ae6a449361615dadcf27babfe0b18db2bd3eb59e958
category: main
optional: false
- - name: psycopg2
- version: 2.9.7
+ - name: libxcb
+ version: "1.15"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libpq: ">=16.0,<17.0a0"
- openssl: ">=3.1.3,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.7-py311h187f0af_1.conda
+ libgcc-ng: ">=12"
+ pthread-stubs: ""
+ xorg-libxau: ""
+ xorg-libxdmcp: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda
hash:
- md5: f777a0c47ebe4c2cc2eca6f19aea9347
- sha256: dce8bdee2b563927c71493ad26997c9897939d8fbb0376df80b6c04154ce0412
+ md5: 33277193f5b92bad9fdd230eb700929c
+ sha256: a670902f0a3173a466c058d2ac22ca1dd0df0453d3a80e0212815c20a16b0485
category: main
optional: false
- - name: pyasn1-modules
- version: 0.3.0
+ - name: libxcb
+ version: "1.15"
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- pyasn1: ">=0.4.6,<0.6.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda
+ pthread-stubs: ""
+ xorg-libxau: ""
+ xorg-libxdmcp: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.15-hb7f2c08_0.conda
hash:
- md5: 26db749166cdca55e5ef1ffdc7767d0e
- sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b
+ md5: 5513f57e0238c87c12dffedbcc9c1a4a
+ sha256: f41904f466acc8b3197f37f2dd3a08da75720c7f7464d9267635debc4ac1902b
category: main
optional: false
- - name: pyobjc-core
- version: "10.0"
+ - name: libxcb
+ version: "1.15"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libffi: ">=3.4,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.0-py311hf110eff_0.conda
+ pthread-stubs: ""
+ xorg-libxau: ""
+ xorg-libxdmcp: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.15-hf346824_0.conda
hash:
- md5: d26705887703d13c655a6098516e06e2
- sha256: 031b8c48866f1f97a4a12d6a3ea0dc94cb6a735918871460b26f4779f5a01125
+ md5: 988d5f86ab60fa6de91b3ee3a88a3af9
+ sha256: 6eaa87760ff3e91bb5524189700139db46f8946ff6331f4e571e4a9356edbb0d
category: main
optional: false
- - name: pyproject_hooks
- version: 1.0.0
+ - name: libxml2
+ version: 2.11.6
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- tomli: ">=1.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda
+ icu: ">=73.2,<74.0a0"
+ libgcc-ng: ">=12"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.11.6-h232c23b_0.conda
hash:
- md5: 21de50391d584eb7f4441b9de1ad773f
- sha256: 016340837fcfef57b351febcbe855eedf0c1f0ecfc910ed48c7fbd20535f9847
+ md5: 427a3e59d66cb5d145020bd9c6493334
+ sha256: e6183d5e57ee48cc1fc4340477c31a6bd8be4d3ba5dded82cbca0d5280591086
category: main
optional: false
- - name: pytest
- version: 7.4.3
+ - name: libxml2
+ version: 2.11.6
manager: conda
platform: osx-64
dependencies:
- packaging: ""
- colorama: ""
- iniconfig: ""
- python: ">=3.7"
- exceptiongroup: ">=1.0.0rc8"
- tomli: ">=1.0.0"
- pluggy: ">=0.12,<2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda
+ icu: ">=73.2,<74.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.11.6-hc0ae0f7_0.conda
hash:
- md5: 5bdca0aca30b0ee62bb84854e027eae0
- sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0
+ md5: 2b6ec8c6366ea74db4b910469addad1d
+ sha256: b5b1c3df3e6d0d294764938e79d7f413191cc5b1af2ede49f42b1df04d068a18
category: main
optional: false
- - name: python-dateutil
- version: 2.8.2
+ - name: libxml2
+ version: 2.11.6
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- six: ">=1.5"
- url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
+ icu: ">=73.2,<74.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.11.6-h0d0cfa8_0.conda
hash:
- md5: dd999d1cc9f79e67dbb855c8924c7984
- sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da
+ md5: 37e112ce9494adfcee6c0c7bf3b5d98d
+ sha256: 07d2da8f3fb00fb6f84cd36b5329174b878105889f0fe21e79981f27573b47af
category: main
optional: false
- - name: python-slugify
- version: 8.0.1
+ - name: libxslt
+ version: 1.1.37
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- text-unidecode: ">=1.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.1-pyhd8ed1ab_2.conda
+ libgcc-ng: ">=12"
+ libxml2: ">=2.11.3,<2.12.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.37-h0054252_1.conda
hash:
- md5: 519897ff446e0dc056e12402e6785cd5
- sha256: 68ac5a6a467b9c0a98e326ec4cc8e3c01d4514f1200c1b44102923424e8ed1eb
+ md5: f27960e8873abb5476e96ef33bdbdccd
+ sha256: 98739c3a7e1f6a8fb05e0bf54784fec4dfa2a640e4680ad0efc5cb65f5581cc8
category: main
optional: false
- - name: pyu2f
- version: 0.1.5
+ - name: libxslt
+ version: 1.1.37
manager: conda
platform: osx-64
dependencies:
- six: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2
+ libxml2: ">=2.11.3,<2.12.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.37-h20bfa82_1.conda
hash:
- md5: caabbeaa83928d0c3e3949261daa18eb
- sha256: 667a5a30b65a60b15f38fa4cb09efd6d2762b5a0a9563acd9555eaa5e0b953a2
+ md5: 177817e2ba32a7d5ffdfbcb876fd4f10
+ sha256: 588c2b16f9f09e5cd86765d0e3ae83d9078cd89416f7453e939d22898280c009
category: main
optional: false
- - name: qtpy
- version: 2.4.1
+ - name: libxslt
+ version: 1.1.37
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- packaging: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda
+ libxml2: ">=2.11.3,<2.12.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.37-h1728932_1.conda
hash:
- md5: 7f391bd70d2abfb70f304ba5aa4e1261
- sha256: 925bf48e747af6ceff1b073c10b12fc94ef79c88a34729059d253e43466a33f1
+ md5: 8483366e7b7ed525a5d17ef81c26b1f4
+ sha256: 2e4501c208ada1fbce18ffbcbcb50bc258d51ad314cae262cce091bab304ace5
category: main
optional: false
- - name: referencing
- version: 0.31.0
+ - name: libzip
+ version: 1.10.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- attrs: ">=22.2.0"
- rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.0-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libgcc-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda
hash:
- md5: 38c2b9b24e9a58725a233f1fa32c23e9
- sha256: 108f27bf249a581acd0f1de0e1e6a4d814ab18943178c2d9a4df02f5c16d2102
+ md5: ac79812548e7e8cf61f7b0abdef01d3b
+ sha256: 84e93f189072dcfcbe77744f19c7e4171523fbecfaba7352e5a23bbe014574c7
category: main
optional: false
- - name: restructuredtext_lint
- version: 1.4.0
+ - name: libzip
+ version: 1.10.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- docutils: ">=0.11,<1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/restructuredtext_lint-1.4.0-pyhd8ed1ab_0.tar.bz2
+ bzip2: ">=1.0.8,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.10.1-hc158999_3.conda
hash:
- md5: 1f3c21740038aba9c174df58986bdccb
- sha256: 636ceefea3675cdd96e49e9bc344190dd72d722642c47597f7bfd30e7ceb2a33
+ md5: 6112b3173f3aa2f12a8f40d07a77cc35
+ sha256: 0689e4a6e67e80027e43eefb8a365273405a01f5ab2ece97319155b8be5d64f6
category: main
optional: false
- - name: rfc3339-validator
- version: 0.1.4
+ - name: libzip
+ version: 1.10.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- six: ""
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2
+ bzip2: ">=1.0.8,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.10.1-ha0bc3c6_3.conda
hash:
- md5: fed45fc5ea0813240707998abe49f520
- sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d
+ md5: e37c0da207079e488709043634d6a711
+ sha256: fb42f34c2275523a06bc8464454fa57f2417203524cabb7aacca4e5de6cfeb69
category: main
optional: false
- - name: rsa
- version: "4.9"
+ - name: libzlib
+ version: 1.2.13
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- pyasn1: ">=0.1.3"
- url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda
hash:
- md5: 03bf410858b2cefc267316408a77c436
- sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57
+ md5: f36c115f1ee199da648e0597ec2047ad
+ sha256: 370c7c5893b737596fd6ca0d9190c9715d89d888b8c88537ae1ef168c25e82e4
category: main
optional: false
- - name: ruamel.yaml
- version: 0.18.5
+ - name: libzlib
+ version: 1.2.13
manager: conda
platform: osx-64
- dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- ruamel.yaml.clib: ">=0.1.2"
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.5-py311he705e18_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.13-h8a1eda9_5.conda
hash:
- md5: b8e2686abf5f980d52579b28441953f9
- sha256: afdaab0d0f5a288b31450c3da260381da5916c61f122a0b3f5dea76d1ca863bb
+ md5: 4a3ad23f6e16f99c04e166767193d700
+ sha256: fc58ad7f47ffea10df1f2165369978fba0a1cc32594aad778f5eec725f334867
category: main
optional: false
- - name: sqlalchemy
- version: 1.4.49
+ - name: libzlib
+ version: 1.2.13
manager: conda
- platform: osx-64
- dependencies:
- greenlet: "!=0.4.17"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-1.4.49-py311he705e18_1.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.2.13-h53f4e23_5.conda
hash:
- md5: 04845132cd5d140b638c4927e1895e12
- sha256: 39569dfc13e742e1b61fcc92948e02bc7f361d05bb5100e5226251b70fcdf1af
+ md5: 1a47f5236db2e06a320ffa0392f81bd8
+ sha256: ab1c8aefa2d54322a63aaeeefe9cf877411851738616c4068e0dccc66b9c758a
category: main
optional: false
- - name: terminado
- version: 0.18.0
+ - name: linear-tsv
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ""
- ptyprocess: ""
- python: ">=3.8"
- tornado: ">=6.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda
+ python: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/linear-tsv-1.1.0-py_1.tar.bz2
hash:
- md5: 14759b57f5b9d97033e633fff0a2d27e
- sha256: 8e8741c688ade9be8f86c0b209780c7fbe4a97e4265311ca9d8dda5fcedc6a28
+ md5: 16491914064fdfe1b9a8fba94ac90e9a
+ sha256: 7d653455e3ab3bdbd064e5a8995cce6e657fb1b2fdd26f0bc62ed57687b16043
category: main
optional: false
- - name: tinycss2
- version: 1.2.1
+ - name: linear-tsv
+ version: 1.1.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.5"
- webencodings: ">=0.4"
- url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/linear-tsv-1.1.0-py_1.tar.bz2
hash:
- md5: 7234c9eefff659501cd2fe0d2ede4d48
- sha256: f0db1a2298a5e10e30f4b947566c7229442834702f549dded40a73ecdea7502d
+ md5: 16491914064fdfe1b9a8fba94ac90e9a
+ sha256: 7d653455e3ab3bdbd064e5a8995cce6e657fb1b2fdd26f0bc62ed57687b16043
category: main
optional: false
- - name: tqdm
- version: 4.66.1
+ - name: linear-tsv
+ version: 1.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- colorama: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda
+ python: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/linear-tsv-1.1.0-py_1.tar.bz2
hash:
- md5: 03c97908b976498dcae97eb4e4f3149c
- sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4
+ md5: 16491914064fdfe1b9a8fba94ac90e9a
+ sha256: 7d653455e3ab3bdbd064e5a8995cce6e657fb1b2fdd26f0bc62ed57687b16043
category: main
optional: false
- - name: typing-extensions
- version: 4.8.0
+ - name: llvm-openmp
+ version: 17.0.6
manager: conda
platform: osx-64
- dependencies:
- typing_extensions: 4.8.0
- url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-17.0.6-hb6ac08f_0.conda
hash:
- md5: 384462e63262a527bda564fa2d9126c0
- sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
+ md5: f260ab897df05f729fc3e65dbb0850ef
+ sha256: 9ea2f7018f335fdc55bc9b21a388eb94ea47a243d9cbf6ec3d8862d4df9fb49b
category: main
optional: false
- - name: typing_inspect
- version: 0.9.0
+ - name: llvm-openmp
+ version: 17.0.6
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.5"
- typing_extensions: ">=3.7.4"
- mypy_extensions: ">=0.3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-17.0.6-hcd81f8e_0.conda
hash:
- md5: 9e924b76b91908a17e28a19a0ab88687
- sha256: 16e0b825c138e14ebc84623248d91d93a8cff29bb93595cc4aa46ca32f24f1de
+ md5: 52019d2fa0eddbbc4e6dcd30fae0c0a4
+ sha256: 0c217326c5931c1416b82f98169b8a8a52139f6f5f299dbb2efa7b21f65f225a
category: main
optional: false
- - name: universal_pathlib
- version: 0.1.4
+ - name: llvmlite
+ version: 0.41.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8,<3.12"
- fsspec: ">=2022.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/universal_pathlib-0.1.4-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libllvm14: ">=14.0.6,<14.1.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.41.1-py311ha6695c7_0.conda
hash:
- md5: 08ca974df312b574c4d6511426539a87
- sha256: ee5a8f423b7429e2ebc0051638875a69e4dc4558c07a26d3063866cebed5fb66
+ md5: 60fa8c1f3fb0d99dd10a9af2aff9c400
+ sha256: 6510aee9e700e3d000a5eb1ac39455c306572baac8ea3a708743890e16499cf1
category: main
optional: false
- - name: urllib3
- version: 1.26.18
+ - name: llvmlite
+ version: 0.41.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- brotli-python: ">=1.0.9"
- pysocks: ">=1.5.6,<2.0,!=1.5.7"
- url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda
+ libllvm14: ">=14.0.6,<14.1.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.41.1-py311hb5c2e0a_0.conda
hash:
- md5: bf61cfd2a7f212efba378167a07d4a6a
- sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7
+ md5: 9a2b325146497a6197a2d44b8762ccb2
+ sha256: 891153e5aef3ea6ffe53b52aa2244736ebad4771fa7a69c5887cbe76e03237bd
category: main
optional: false
- - name: watchdog
- version: 3.0.0
+ - name: llvmlite
+ version: 0.41.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
+ libllvm14: ">=14.0.6,<14.1.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- pyyaml: ">=3.10"
- url: https://conda.anaconda.org/conda-forge/osx-64/watchdog-3.0.0-py311h5ef12f2_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.41.1-py311hf5d242d_0.conda
hash:
- md5: 32c15f3306fd2e9a9c2876f2fc33d5ed
- sha256: e3c40135edb9399277f8afc7b5344b507e40a46cef2ade2d3185f951c884c72b
+ md5: 0ef98376c9ffd4d344d1de563f405406
+ sha256: 5957c1bb252221a0ab595f0341d7ae465caf096532fbd4f2180aaa6857e6f032
category: main
optional: false
- - name: xerces-c
- version: 3.2.4
+ - name: locket
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- icu: ">=73.2,<74.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.4-h6314983_3.conda
+ python: ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+ url: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 9623310baca5b47637cf46889bd77178
- sha256: 19f501a66a1ffdda31e0af7fe088a1de4405c6ce72f9a07ba0813ab8c2f0ada7
+ md5: 91e27ef3d05cc772ce627e51cff111c4
+ sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
category: main
optional: false
- - name: yarl
- version: 1.9.2
+ - name: locket
+ version: 1.0.0
manager: conda
platform: osx-64
dependencies:
- idna: ">=2.0"
- multidict: ">=4.0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.9.2-py311he705e18_1.conda
+ python: ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+ url: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ac4f2406c36c333c12544f6605563188
- sha256: 2f2a68c01850a0406e2ef71c07f8f4d7a338e6a98e906a042b5b7de48ba4a558
+ md5: 91e27ef3d05cc772ce627e51cff111c4
+ sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
category: main
optional: false
- - name: addfips
- version: 0.4.0
+ - name: locket
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- importlib_resources: ">=5.0"
- python: ">=3.7.5"
- url: https://conda.anaconda.org/conda-forge/noarch/addfips-0.4.0-pyhd8ed1ab_1.conda
+ python: ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
+ url: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: cb434d01bfd3ba57c54a423f3773ffda
- sha256: c6f7bf91f19ad4fdd183efde6346a0dfd3df7929f413c9535e19c51610b4f671
+ md5: 91e27ef3d05cc772ce627e51cff111c4
+ sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
category: main
optional: false
- - name: aniso8601
- version: 9.0.1
+ - name: lxml
+ version: 4.9.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python-dateutil: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/aniso8601-9.0.1-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libxslt: ">=1.1.37,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py311h1a07684_1.conda
hash:
- md5: 36fba1a639f2d24723c5480345b78553
- sha256: 201c040b6ee0045805a777f75f37a8648eb8dfd4725d62a4fcddc24d7d6c2a9f
- category: dev
- optional: true
- - name: argon2-cffi-bindings
- version: 21.2.0
+ md5: aab51e50d994e58efdfa5382139b0468
+ sha256: 9ee461843278f695c5e301b4575e7dd02f69021e85023b62b17f7dfe2cd173e4
+ category: main
+ optional: false
+ - name: lxml
+ version: 4.9.3
manager: conda
platform: osx-64
dependencies:
- cffi: ">=1.0.1"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libxslt: ">=1.1.37,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-21.2.0-py311h2725bcf_4.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/lxml-4.9.3-py311h19a211c_1.conda
hash:
- md5: e2aba0ad0f533ee73f9d4330d2e32549
- sha256: be27659496bcb660fc9c3f5f74128a7bb090336897e9c7cfbcc55ae66f13b8d8
+ md5: d3687d6ebe20ef8bf959dba786cdb28e
+ sha256: df952e80dc9ca98fbff11c2627288808135b51d18fc363a102f3e58eac8b4113
category: main
optional: false
- - name: arrow
- version: 1.3.0
+ - name: lxml
+ version: 4.9.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- python-dateutil: ">=2.7.0"
- types-python-dateutil: ">=2.8.10"
- url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libxslt: ">=1.1.37,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-4.9.3-py311hbafe683_1.conda
hash:
- md5: b77d8c2313158e6e461ca0efb1c2c508
- sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db
+ md5: 5cfed11a5103844a5654446cf4d3f42a
+ sha256: e7ac6818b94242a5a1800a66d362a5e0262473e2399e731dd2061737b88c09b5
category: main
optional: false
- - name: async-timeout
- version: 4.0.3
+ - name: lz4-c
+ version: 1.9.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- typing-extensions: ">=3.6.5"
- url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda
hash:
- md5: 3ce482ec3066e6d809dbbb1d1679f215
- sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979
+ md5: 318b08df404f9c9be5712aaa5a6f0bb0
+ sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f
category: main
optional: false
- - name: aws-crt-cpp
- version: 0.24.7
+ - name: lz4-c
+ version: 1.9.4
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- aws-c-auth: ">=0.7.6,<0.7.7.0a0"
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-c-mqtt: ">=0.9.9,<0.9.10.0a0"
- aws-c-s3: ">=0.3.24,<0.3.25.0a0"
- aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
- libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.24.7-ha2eb20f_1.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda
hash:
- md5: 1646058bbdbc33430fd3959a4460b3a0
- sha256: 59df54ce67ba92330c2a449bd77d0f9db6ae8ce6a2aee86d73e84f239bcb1a45
+ md5: aa04f7143228308662696ac24023f991
+ sha256: 39aa0c01696e4e202bf5e337413de09dfeec061d89acd5f28e9968b4e93c3f48
category: main
optional: false
- - name: botocore
- version: 1.32.2
+ - name: lz4-c
+ version: 1.9.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- python-dateutil: ">=2.1,<3.0.0"
- jmespath: ">=0.7.1,<2.0.0"
- urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.32.2-pyhd8ed1ab_0.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda
hash:
- md5: 303d0f8f09c41c07b18b9a1112cec29b
- sha256: 621ee76f9d1e741039513e94ef3e4d3442f76098d863f50474ec60d823ef11ae
+ md5: 45505bec548634f7d05e02fb25262cb9
+ sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24
category: main
optional: false
- - name: branca
- version: 0.7.0
+ - name: lzo
+ version: "2.10"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- jinja2: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.0-pyhd8ed1ab_1.conda
+ libgcc-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2
hash:
- md5: 980ae382aec2ebb7c20e8848f4d695d7
- sha256: 9013b381e6745a7f717b7f742d3fe366ba619f1670da0d849ae589c4e88b0dbc
+ md5: bb14fcb13341b81d5eb386423b9d2bac
+ sha256: 25d16e6aaa3d0b450e61d0c4fadd7c9fd17f16e2fef09b34507209342d63c9f6
category: main
optional: false
- - name: croniter
- version: 2.0.1
+ - name: lzo
+ version: "2.10"
manager: conda
platform: osx-64
- dependencies:
- python-dateutil: ""
- python: ">=3.7"
- pytz: ">2021.1"
- url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-haf1e3a3_1000.tar.bz2
hash:
- md5: f67f52c1f555785b86c3bd8e5de4c66f
- sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34
+ md5: 0b6bca372a95d6c602c7a922e928ce79
+ sha256: c8a9401eff2efbbcc6da03d0066ee85d72402f7658c240e7968c64052a0d0493
category: main
optional: false
- - name: cryptography
- version: 41.0.5
+ - name: lzo
+ version: "2.10"
manager: conda
- platform: osx-64
- dependencies:
- cffi: ">=1.12"
- openssl: ">=3.1.4,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-41.0.5-py311hd51016d_0.conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h642e427_1000.tar.bz2
hash:
- md5: 99f1edef251a9fe4edf620b527ee70ea
- sha256: 26ee22b99771f0d338eca6299cbe866f695c544d855d5eab82539497b0a24fc1
+ md5: ddab5f96f5573a9bd5e24f9994fd6ec9
+ sha256: ae029e5c16893071d29a11ddbfdbdb01b2ebf10d1785f54370934439d8b71817
category: main
optional: false
- - name: fqdn
- version: 1.5.1
+ - name: mako
+ version: 1.3.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- cached-property: ">=1.3.0"
- python: ">=2.7,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
+ importlib-metadata: ""
+ markupsafe: ">=0.9.2"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 642d35437078749ef23a5dca2c9bb1f3
- sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
+ md5: 92ca4a92d34ed6e8fa38d93c8552c346
+ sha256: b3c0353790ae5a5ebb54aa339661083a6234e5193e758668e62ba36c48dc3c94
category: main
optional: false
- - name: geotiff
- version: 1.7.1
+ - name: mako
+ version: 1.3.0
manager: conda
platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- proj: ">=9.3.0,<9.3.1.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/geotiff-1.7.1-h889ec99_14.conda
+ importlib-metadata: ""
+ python: ">=3.6"
+ markupsafe: ">=0.9.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: c994aeaa43a92403ecc723dba66b3f1f
- sha256: 2d6d54763b4cc41a90d7ca810681c44eaff077027a7b6f5df676736fa0299746
+ md5: 92ca4a92d34ed6e8fa38d93c8552c346
+ sha256: b3c0353790ae5a5ebb54aa339661083a6234e5193e758668e62ba36c48dc3c94
category: main
optional: false
- - name: gitpython
- version: 3.1.40
+ - name: mako
+ version: 1.3.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=3.7.4.3"
- gitdb: ">=4.0.1,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda
+ importlib-metadata: ""
+ python: ">=3.6"
+ markupsafe: ">=0.9.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 6bf74c3b7c13079a91d4bd3da51cefcf
- sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b
+ md5: 92ca4a92d34ed6e8fa38d93c8552c346
+ sha256: b3c0353790ae5a5ebb54aa339661083a6234e5193e758668e62ba36c48dc3c94
category: main
optional: false
- - name: google-crc32c
- version: 1.1.2
+ - name: mapclassify
+ version: 2.6.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- cffi: ">=1.0.0"
- libcrc32c: ">=1.1.2,<1.2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.1.2-py311h0b57020_5.conda
+ networkx: ">=2.7"
+ numpy: ">=1.23"
+ pandas: ">=1.4,!=1.5.0"
+ python: ">=3.9"
+ scikit-learn: ">=1.0"
+ scipy: ">=1.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda
hash:
- md5: bc176084bd6ba0a97bfdead25850957a
- sha256: 76bb1245e20a8e63d671fd6343cc87417156a66197d85d47e9d2288731ba784a
+ md5: 6aceae1ad4f16cf7b73ee04189947f98
+ sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64
category: main
optional: false
- - name: googleapis-common-protos
- version: 1.61.0
+ - name: mapclassify
+ version: 2.6.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ scikit-learn: ">=1.0"
+ scipy: ">=1.8"
+ numpy: ">=1.23"
+ networkx: ">=2.7"
+ pandas: ">=1.4,!=1.5.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda
hash:
- md5: f315d7fdc1905dcc2e18a1c7bed22fa9
- sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
+ md5: 6aceae1ad4f16cf7b73ee04189947f98
+ sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64
category: main
optional: false
- - name: gql
- version: 3.4.1
+ - name: mapclassify
+ version: 2.6.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- graphql-core: ">=3.2,<3.3"
- yarl: ">=1.6,<2.0"
- backoff: ">=1.11.1,<3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/gql-3.4.1-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ scikit-learn: ">=1.0"
+ scipy: ">=1.8"
+ numpy: ">=1.23"
+ networkx: ">=2.7"
+ pandas: ">=1.4,!=1.5.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda
hash:
- md5: 6ad94588f33ddb97175c7f22feef7d2c
- sha256: 6025dcd91083fe1d3f38172d18d041b0c1da4d9d86606a18312efd429c99b93e
- category: dev
- optional: true
- - name: graphql-relay
- version: 3.2.0
- manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.6"
- graphql-core: ">=3.2,<3.3"
- typing_extensions: ">=4.1,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_0.tar.bz2
+ md5: 6aceae1ad4f16cf7b73ee04189947f98
+ sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64
+ category: main
+ optional: false
+ - name: markdown-it-py
+ version: 3.0.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ mdurl: ">=0.1,<1"
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 1b2b83e3528f8fb83007161eff51073d
- sha256: 04f2a3383e74421441e46eaed4c32940682c1de82036fd1b6f18663d6d5447c4
- category: dev
- optional: true
- - name: grpcio-health-checking
- version: 1.59.2
+ md5: 93a8e71256479c62074356ef6ebf501b
+ sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
+ category: main
+ optional: false
+ - name: markdown-it-py
+ version: 3.0.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.5"
- protobuf: ">=3.12.1"
- grpcio: ">=1.59.2"
- url: https://conda.anaconda.org/conda-forge/noarch/grpcio-health-checking-1.59.2-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ mdurl: ">=0.1,<1"
+ url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 8b85dc4c1a577f1823b394d5071052de
- sha256: b77ffee9cbd731caa6eca7487286bc65551729744a89ecb3335ca220fec4061d
+ md5: 93a8e71256479c62074356ef6ebf501b
+ sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
category: main
optional: false
- - name: httpcore
- version: 1.0.2
+ - name: markdown-it-py
+ version: 3.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- certifi: ""
python: ">=3.8"
- sniffio: 1.*
- h2: ">=3,<5"
- anyio: ">=3.0,<5.0"
- h11: ">=0.13,<0.15"
- url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.2-pyhd8ed1ab_0.conda
+ mdurl: ">=0.1,<1"
+ url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 48995b2157996a94f50fa483d884e0a3
- sha256: b9a2ec0ecdaf54d67caf73d8a94c8ddba62f482093a5adbfb89c2ce020d64475
+ md5: 93a8e71256479c62074356ef6ebf501b
+ sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
category: main
optional: false
- - name: importlib_metadata
- version: 6.8.0
+ - name: marko
+ version: 2.0.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- importlib-metadata: ">=6.8.0,<6.8.1.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/marko-2.0.2-pyhd8ed1ab_0.conda
hash:
- md5: b279b07ce18058034e5b3606ba103a8b
- sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f
+ md5: de3ec39d37f7721b36c2e7dcced43429
+ sha256: 382a48b5b00a08e6347dd8a2e8a8cd362900974b1f8d4b2d96b6ad009c2fd4f4
category: main
optional: false
- - name: jsonschema-specifications
- version: 2023.11.1
+ - name: marko
+ version: 2.0.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- importlib_resources: ">=1.4.0"
- referencing: ">=0.31.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/marko-2.0.2-pyhd8ed1ab_0.conda
hash:
- md5: 094ff9cf36957f95bb74cee42ab140b2
- sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
+ md5: de3ec39d37f7721b36c2e7dcced43429
+ sha256: 382a48b5b00a08e6347dd8a2e8a8cd362900974b1f8d4b2d96b6ad009c2fd4f4
category: main
optional: false
- - name: jupyter_server_terminals
- version: 0.4.4
+ - name: marko
+ version: 2.0.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- terminado: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/marko-2.0.2-pyhd8ed1ab_0.conda
hash:
- md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
- sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
+ md5: de3ec39d37f7721b36c2e7dcced43429
+ sha256: 382a48b5b00a08e6347dd8a2e8a8cd362900974b1f8d4b2d96b6ad009c2fd4f4
category: main
optional: false
- - name: kealib
- version: 1.5.2
+ - name: markupsafe
+ version: 2.1.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/kealib-1.5.2-h052fcf7_1.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py311h459d7ec_1.conda
hash:
- md5: 346aec056b5619302c4aa538fbee4bdf
- sha256: b3982fad0bcbe07a8129d93b1977f3a8a26ea96aa5aae7ee1395917a2cac2db2
+ md5: 71120b5155a0c500826cf81536721a15
+ sha256: e1a9930f35e39bf65bc293e24160b83ebf9f800f02749f65358e1c04882ee6b0
category: main
optional: false
- - name: libnetcdf
- version: 4.9.2
+ - name: markupsafe
+ version: 2.1.3
manager: conda
platform: osx-64
dependencies:
- blosc: ">=1.21.4,<2.0a0"
- bzip2: ">=1.0.8,<2.0a0"
- hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzip: ">=1.10.1,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- zlib: ""
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.2-nompi_h6a32802_112.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.3-py311h2725bcf_1.conda
hash:
- md5: 413f9a35e9f888163b922ea6cfafb9da
- sha256: 8b1bfc9322bd4f9fe770461fac5b75b1888ccdbdf72b2d2a2bec1e1c13e05f48
+ md5: 52ee86f482b552e547e2b1d6c01adf55
+ sha256: 5a8f8caa89eeba6ea6e9e96d3e7c109b675bc3c6ed4b109b8931757da2411d48
category: main
optional: false
- - name: libspatialite
- version: 5.1.0
+ - name: markupsafe
+ version: 2.1.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- freexl: ">=2.0.0,<3.0a0"
- geos: ">=3.12.0,<3.12.1.0a0"
- libcxx: ">=16.0.6"
- libiconv: ">=1.17,<2.0a0"
- librttopo: ">=1.1.0,<1.2.0a0"
- libsqlite: ">=3.44.0,<4.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- proj: ">=9.3.0,<9.3.1.0a0"
- sqlite: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-h4a59d8e_1.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.3-py311heffc1b2_1.conda
hash:
- md5: 606bfbfee0ea2acb14adfca6b484223e
- sha256: 7857801563bc23c3bfa547aa160852b637ff9c34723bba62c566ea6d9eaaf980
+ md5: 5a7b68cb9eea46bea31aaf2d11d0dd2f
+ sha256: 307c1e3b2e4a2a992a6c94975910adff88cc523e2c9a41e81b2d506d8c9e7359
category: main
optional: false
- - name: mako
- version: 1.3.0
+ - name: matplotlib-base
+ version: 3.8.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- importlib-metadata: ""
- python: ">=3.6"
- markupsafe: ">=0.9.2"
- url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.0-pyhd8ed1ab_0.conda
+ certifi: ">=2020.06.20"
+ contourpy: ">=1.0.1"
+ cycler: ">=0.10"
+ fonttools: ">=4.22.0"
+ freetype: ">=2.12.1,<3.0a0"
+ kiwisolver: ">=1.3.1"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
+ packaging: ">=20.0"
+ pillow: ">=8"
+ pyparsing: ">=2.3.1"
+ python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.7"
+ python_abi: 3.11.*
+ tk: ">=8.6.13,<8.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.2-py311h54ef318_0.conda
hash:
- md5: 92ca4a92d34ed6e8fa38d93c8552c346
- sha256: b3c0353790ae5a5ebb54aa339661083a6234e5193e758668e62ba36c48dc3c94
+ md5: 9f80753bc008bfc9b95f39d9ff9f1694
+ sha256: 69319da0e6bad1711cac1573710370f31e9630fe6c972ff7eac95649e0c04114
category: main
optional: false
- - name: numpy
- version: 1.26.0
+ - name: matplotlib-base
+ version: 3.8.2
manager: conda
platform: osx-64
dependencies:
- libblas: ">=3.9.0,<4.0a0"
- libcblas: ">=3.9.0,<4.0a0"
- libcxx: ">=15.0.7"
- liblapack: ">=3.9.0,<4.0a0"
+ __osx: ">=10.9"
+ certifi: ">=2020.06.20"
+ contourpy: ">=1.0.1"
+ cycler: ">=0.10"
+ fonttools: ">=4.22.0"
+ freetype: ">=2.12.1,<3.0a0"
+ kiwisolver: ">=1.3.1"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
+ packaging: ">=20.0"
+ pillow: ">=8"
+ pyparsing: ">=2.3.1"
python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.7"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.0-py311hc44ba51_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.8.2-py311hd316c10_0.conda
hash:
- md5: f95605c5b73f5f6a0f5f1b0aabfc2f39
- sha256: 517cb22d5594fdb934523dd1951929961f686b5d994c684201acbf282433ec9b
+ md5: 26921b949e2f6f74bc66483372cbd18a
+ sha256: b863c66fa22f39b0bf240520f6d710d6bd634096e6e4a95c4815fcc7e0abad42
category: main
optional: false
- - name: pango
- version: 1.50.14
+ - name: matplotlib-base
+ version: 3.8.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
+ __osx: ">=10.9"
+ certifi: ">=2020.06.20"
+ contourpy: ">=1.0.1"
+ cycler: ">=0.10"
+ fonttools: ">=4.22.0"
freetype: ">=2.12.1,<3.0a0"
- fribidi: ">=1.0.10,<2.0a0"
- harfbuzz: ">=8.1.1,<9.0a0"
- libglib: ">=2.76.4,<3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pango-1.50.14-h19c1c8a_2.conda
+ kiwisolver: ">=1.3.1"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
+ packaging: ">=20.0"
+ pillow: ">=8"
+ pyparsing: ">=2.3.1"
+ python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.7"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.8.2-py311hfdba5f6_0.conda
hash:
- md5: bf0d46d9e97cb3ae5ad7ee4b688929a9
- sha256: 639abd1c1d383fe047462ab7233b6857702d1bf40f229c337d3b59d1e5476a71
- category: dev
- optional: true
- - name: pbr
- version: 6.0.0
+ md5: 2531c01b5d6066fb5283639d7a923779
+ sha256: fa0ca87917aa449f7d7d6fb3941d0b01e0e9712342a9891af5540647f3398ece
+ category: main
+ optional: false
+ - name: matplotlib-inline
+ version: 0.1.6
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- pip: ""
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda
+ traitlets: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 8dbab5ba746ed14aa32cb232dc437f8f
- sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87
+ md5: b21613793fcc81d944c76c9f2864a7de
+ sha256: aa091b88aec55bfa2d9207028d8cdc689b9efb090ae27b99557e93c675be2f3c
category: main
optional: false
- - name: pendulum
- version: 2.1.2
+ - name: matplotlib-inline
+ version: 0.1.6
manager: conda
platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.6,<3.0"
- python_abi: 3.11.*
- pytzdata: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/pendulum-2.1.2-py311h2725bcf_6.conda
+ traitlets: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 451e4c395833a2cbdc1e25bfc768798d
- sha256: 1ed3d1795718a165f94da87486025ddfbdf96ac74e9bbb5eb65f3369b7193c0b
+ md5: b21613793fcc81d944c76c9f2864a7de
+ sha256: aa091b88aec55bfa2d9207028d8cdc689b9efb090ae27b99557e93c675be2f3c
category: main
optional: false
- - name: platformdirs
- version: 3.11.0
+ - name: matplotlib-inline
+ version: 0.1.6
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- typing-extensions: ">=4.6.3"
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda
+ traitlets: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 8f567c0a74aa44cf732f15773b4083b0
- sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144
+ md5: b21613793fcc81d944c76c9f2864a7de
+ sha256: aa091b88aec55bfa2d9207028d8cdc689b9efb090ae27b99557e93c675be2f3c
category: main
optional: false
- - name: psycopg2-binary
- version: 2.9.7
+ - name: mdurl
+ version: 0.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
python: ">=3.6"
- psycopg2: ">=2.9.7,<2.9.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 0212a5c5ae1ab578853364bfc5d9f657
- sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
+ md5: f8dab71fdc13b1bf29a01248b156d268
+ sha256: c678b9194e025b1fb665bec30ee20aab93399203583875b1dcc0a3b52a8f5523
category: main
optional: false
- - name: pybtex
- version: 0.24.0
+ - name: mdurl
+ version: 0.1.0
manager: conda
platform: osx-64
dependencies:
- setuptools: ""
- six: ""
python: ">=3.6"
- latexcodec: ">=1.0.4"
- pyyaml: ">=3.01"
- url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2099b86a7399c44c0c61cdb6de6915ba
- sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc
+ md5: f8dab71fdc13b1bf29a01248b156d268
+ sha256: c678b9194e025b1fb665bec30ee20aab93399203583875b1dcc0a3b52a8f5523
category: main
optional: false
- - name: pydantic
- version: 1.10.13
+ - name: mdurl
+ version: 0.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- typing-extensions: ">=4.2.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pydantic-1.10.13-py311he705e18_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ca0cd7b41964ce9a7b80290ea85e22e9
- sha256: c55ab5f7d182421a5c11f70afc32425fa192f1e40de5c301f685b25bdc3391a8
+ md5: f8dab71fdc13b1bf29a01248b156d268
+ sha256: c678b9194e025b1fb665bec30ee20aab93399203583875b1dcc0a3b52a8f5523
category: main
optional: false
- - name: pyobjc-framework-cocoa
- version: "10.0"
+ - name: mergedeep
+ version: 1.3.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- libffi: ">=3.4,<4.0a0"
- pyobjc-core: 10.0.*
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.0-py311hf110eff_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 8fb67274a648901045368717d6221aed
- sha256: 54530c1b3bfc361e027adbd8f9d9a23e7c102c7f58c04a169da1457f82975724
+ md5: 1a160a3cab5cb6bd46264b52cd6f69a2
+ sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b
category: main
optional: false
- - name: pyproj
- version: 3.6.1
+ - name: mergedeep
+ version: 1.3.4
manager: conda
platform: osx-64
dependencies:
- certifi: ""
- proj: ">=9.3.0,<9.3.1.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.6.1-py311he36daed_4.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 28930c73c9c05d44d053620d44397b79
- sha256: d1d44bb257545006b128d30b4454c42e3f7cd133a1c53998afcf7253529f8263
+ md5: 1a160a3cab5cb6bd46264b52cd6f69a2
+ sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b
category: main
optional: false
- - name: pytest-console-scripts
- version: 1.4.1
+ - name: mergedeep
+ version: 1.3.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- importlib-metadata: ">=3.6"
- pytest: ">=4.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-console-scripts-1.4.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ee8808504c73665bed76e20ede28bd56
- sha256: d6603e211019f2581c9f3c0922133b190a46e4ceaad3e3e0e6149f31bc593fa1
+ md5: 1a160a3cab5cb6bd46264b52cd6f69a2
+ sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b
category: main
optional: false
- - name: pytest-cov
- version: 4.1.0
+ - name: minizip
+ version: 4.0.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- toml: ""
- python: ">=3.7"
- pytest: ">=4.6"
- coverage: ">=5.2.1"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libgcc-ng: ">=12"
+ libiconv: ">=1.17,<2.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.3-h0ab5242_0.conda
hash:
- md5: 06eb685a3a0b146347a58dda979485da
- sha256: f07d3b44cabbed7843de654c4a6990a08475ce3b708bb735c7da9842614586f2
+ md5: 3f9b5f4400be3cee11b426a8cd653b7c
+ sha256: cf33c24fa8375d17fad4e1da631b4c2e8ed9a109480fa45c82fbfa2a7c5bdd41
category: main
optional: false
- - name: pytest-mock
- version: 3.12.0
+ - name: minizip
+ version: 4.0.3
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- pytest: ">=5.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ bzip2: ">=1.0.8,<2.0a0"
+ libcxx: ">=16.0.6"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/minizip-4.0.3-h23f18a7_0.conda
hash:
- md5: ac9fedc9a0c397f2318e82525491dd83
- sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0
+ md5: 2facac17555d3078a0abfbe20a331086
+ sha256: 779cdb3ee14c653b6094414c251164b2398e50b825ba44455c67e7deeb6e48e1
category: main
optional: false
- - name: pytest-xdist
- version: 3.4.0
+ - name: minizip
+ version: 4.0.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- execnet: ">=1.1"
- pytest: ">=6.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.4.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ bzip2: ">=1.0.8,<2.0a0"
+ libcxx: ">=16.0.6"
+ libiconv: ">=1.17,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ xz: ">=5.2.6,<6.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.3-hd5cad61_0.conda
hash:
- md5: b8dc6f9db1b9670e564b68277a79ffeb
- sha256: b835170885a0d2b4bfdc7bc5d09e5a175518f41b6ffa1a0ac891797cd94e3292
+ md5: 8f1bf9ea12bca129b7a3d49eec9efd76
+ sha256: 9db88831aa3485d98cad155d989d4de45edfec13e6cbe81b0093ba7e6ba8817d
category: main
optional: false
- - name: python-build
- version: 1.0.3
+ - name: mistune
+ version: 3.0.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- colorama: ""
- pyproject_hooks: ""
python: ">=3.7"
- tomli: ">=1.1.0"
- packaging: ">=19.0"
- importlib-metadata: ">=4.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda
hash:
- md5: d9ccabf228cb98419ca3d5694b25e1a2
- sha256: f32748beb76abf5173ee956f30a82c9e9b4a3d9924b0960f1e19e267ea4f01de
+ md5: 5cbee699846772cc939bef23a0d524ed
+ sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c
category: main
optional: false
- - name: requests
- version: 2.31.0
+ - name: mistune
+ version: 3.0.2
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
- idna: ">=2.5,<4"
- certifi: ">=2017.4.17"
- charset-normalizer: ">=2,<4"
- urllib3: ">=1.21.1,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda
hash:
- md5: a30144e4156cdbb236f99ebb49828f8b
- sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad
+ md5: 5cbee699846772cc939bef23a0d524ed
+ sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c
category: main
optional: false
- - name: rich
- version: 13.7.0
+ - name: mistune
+ version: 3.0.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7.0"
- typing_extensions: ">=4.0.0,<5.0.0"
- pygments: ">=2.13.0,<3.0.0"
- markdown-it-py: ">=2.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda
hash:
- md5: d7a11d4f3024b2f4a6e0ae7377dd61e9
- sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb
+ md5: 5cbee699846772cc939bef23a0d524ed
+ sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c
category: main
optional: false
- - name: stack_data
- version: 0.6.2
+ - name: more-itertools
+ version: 10.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- asttokens: ""
- executing: ""
- pure_eval: ""
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda
hash:
- md5: e7df0fdd404616638df5ece6e69ba7af
- sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec
+ md5: 8549fafed0351bbfaa1ddaa15fdf9b4e
+ sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f
category: main
optional: false
- - name: starlette
- version: 0.32.0.post1
+ - name: more-itertools
+ version: 10.1.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- typing_extensions: ">=3.10.0"
- anyio: <5,>=3.4.0
- url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 9aa6d56db739eee2ff473becbe178fd1
- sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
- category: dev
- optional: true
- - name: tiledb
- version: 2.16.3
+ md5: 8549fafed0351bbfaa1ddaa15fdf9b4e
+ sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f
+ category: main
+ optional: false
+ - name: more-itertools
+ version: 10.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.13"
- bzip2: ">=1.0.8,<2.0a0"
- libabseil: ">=20230802.0,<20230803.0a0"
- libcxx: ">=15.0.7"
- libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- openssl: ">=3.1.2,<4.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.16.3-hd3a41d5_3.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 53c2d2746f21a60d0c498c36fb32ec56
- sha256: 9144ad40adb982107dd4f5084d1e488b216025eed91a3feeb3506ee4d5bc98dd
+ md5: 8549fafed0351bbfaa1ddaa15fdf9b4e
+ sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f
category: main
optional: false
- - name: ukkonen
- version: 1.0.1
+ - name: msgpack-python
+ version: 1.0.7
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- cffi: ""
- libcxx: ">=15.0.7"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311h5fe6e05_4.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py311h9547e67_0.conda
hash:
- md5: 8f750b84128d48dc8376572c5eace61e
- sha256: b273782a1277042a54e12411beebd378d2a2a69e503bcf147766e98628e91c91
+ md5: 3ac85c6c226e2a2e4b17864fc2ca88ff
+ sha256: b12070ce86f108d3dcf2f447dfa76906c4bc15f2d2bf6cef19703ee42768b74a
category: main
optional: false
- - name: uvicorn
- version: 0.24.0
+ - name: msgpack-python
+ version: 1.0.7
manager: conda
platform: osx-64
dependencies:
- click: ">=7.0"
- h11: ">=0.8"
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-0.24.0-py311h6eed73b_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.7-py311h7bea37d_0.conda
hash:
- md5: 62249aa566e8be9286966278a6582e1a
- sha256: ab7aa3875fbafd7912b97616573741508e140446fa9819ba870788677ba8fba3
+ md5: a44d3852f8eaab128793074b26d5dcf9
+ sha256: 87de66aee894bf8054c92bfec296bfb2520077cb9f958d043177a782922fcf2b
category: main
optional: false
- - name: watchfiles
- version: 0.20.0
+ - name: msgpack-python
+ version: 1.0.7
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- anyio: ">=3.0.0"
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-0.20.0-py311h299eb51_2.conda
- hash:
- md5: f9c3352b6007cb4d6db914f9814d0c3b
- sha256: 1426317d424057bb6dedd463481202521bde50fd965940ce0b42fe71d5d20751
- category: dev
- optional: true
- - name: wcwidth
- version: 0.2.10
- manager: conda
- platform: osx-64
- dependencies:
- backports.functools_lru_cache: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.7-py311hd03642b_0.conda
hash:
- md5: 48978e4e99db7d1ee0d277f6dee20684
- sha256: e988673c05416073d0e776bac223b6c79fb5cc1207291c6c6f9e238624a135c0
+ md5: 088b13e442731c8273fd8b8f611fb527
+ sha256: a94431a5d83393e7effcb901a1c05b75db32d2369117cc05b0d1c6091255faa9
category: main
optional: false
- - name: aiohttp
- version: 3.8.6
+ - name: multidict
+ version: 6.0.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- aiosignal: ">=1.1.2"
- async-timeout: <5.0,>=4.0.0a3
- attrs: ">=17.3.0"
- charset-normalizer: ">=2.0,<4.0"
- frozenlist: ">=1.1.1"
- multidict: ">=4.5,<7.0"
+ libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- yarl: ">=1.0,<2.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.8.6-py311he705e18_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py311h459d7ec_1.conda
hash:
- md5: 5319ce185be1f2c4d1b19b95488c02a8
- sha256: e2f3b1c8fe44daf016396f6a49e80c84aeb9621d2812bec15e4d1873e5972b58
+ md5: 3dc76316237c8f7e7231d61b76c62b7c
+ sha256: 5bb152aab8fa22d68ce0c802a9990c406eb60a8041660071de0bd30a5cd5081c
category: main
optional: false
- - name: alembic
- version: 1.12.1
+ - name: multidict
+ version: 6.0.4
manager: conda
platform: osx-64
dependencies:
- importlib-metadata: ""
- importlib_resources: ""
- mako: ""
- python: ">=3.7"
- sqlalchemy: ">=1.3.0"
- typing-extensions: ">=4"
- url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.1-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.0.4-py311h5547dcb_1.conda
hash:
- md5: 15de9992b4096a2a6656ca202fde6e4c
- sha256: 24019b1af4777e32843b230dd7a9bf7082943eb21bba03379ceed0bda50facf9
+ md5: cb1b7c247fe38eb522cc6690101702b0
+ sha256: 3c002c9cc1ddc4344da606d7b75a65e04e707c20ccc3fb0cef5a29b62872d4e9
category: main
optional: false
- - name: arelle-release
- version: 2.17.4
+ - name: multidict
+ version: 6.0.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- certifi: ""
- regex: ""
- python: ">=3.8"
- numpy: 1.*
- python-dateutil: 2.*
- isodate: 0.*
- lxml: 4.*
- openpyxl: 3.*
- pyparsing: 3.*
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.4-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.0.4-py311he2be06e_1.conda
hash:
- md5: 66972cbec7556aa94aba3da76b408f19
- sha256: a30a66c040021c396a99bf862ad78181a4888e67b2ac51ac7e21422c4165986c
+ md5: 8713dd014bb36a581c42dcbe9c4a5216
+ sha256: a58bfc6c78b60ff31507c6b8412ad56df02d3fe5675fbb70a89f8e39c498018f
category: main
optional: false
- - name: argon2-cffi
- version: 23.1.0
+ - name: multimethod
+ version: 1.9.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- typing-extensions: ""
- argon2-cffi-bindings: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/multimethod-1.9.1-pyhd8ed1ab_0.conda
hash:
- md5: 3afef1f55a1366b4d3b6a0d92e2235e4
- sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677
+ md5: 48223af3f697ccd9b114adb6a66e0f11
+ sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
category: main
optional: false
- - name: aws-sdk-cpp
- version: 1.11.182
+ - name: multimethod
+ version: 1.9.1
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.182-h28d282b_7.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/multimethod-1.9.1-pyhd8ed1ab_0.conda
hash:
- md5: 131091ac3ecfe9c409088e1b3861f064
- sha256: 57029820f9e2af9f735ea2afcd8eeeeb3bac74e52e1ba6ec5666276b8e6e67f8
+ md5: 48223af3f697ccd9b114adb6a66e0f11
+ sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
category: main
optional: false
- - name: black
- version: 23.10.1
+ - name: multimethod
+ version: 1.9.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- click: ">=8.0.0"
- mypy_extensions: ">=0.4.3"
- packaging: ">=22.0"
- pathspec: ">=0.9"
- platformdirs: ">=2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/black-23.10.1-py311h6eed73b_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/multimethod-1.9.1-pyhd8ed1ab_0.conda
hash:
- md5: c802bfc16625b15e57e4d2d05bee622a
- sha256: e6c81cc86c288f2d15852dc0068caa5acae3700eff57eeeeb5742844b1048b2b
+ md5: 48223af3f697ccd9b114adb6a66e0f11
+ sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
category: main
optional: false
- - name: bottleneck
- version: 1.3.7
+ - name: munch
+ version: 4.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.3.7-py311h4a70a88_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: a51cbb557788277233420f12ced6e461
- sha256: d61205023dacfc1733c6904cf5fa261e66049f1e407958e6e71d55903f193931
+ md5: 376b32e8f9d3eacbd625f37d39bd507d
+ sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
category: main
optional: false
- - name: cachecontrol
- version: 0.13.1
+ - name: munch
+ version: 4.0.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- msgpack-python: ">=0.5.2"
- requests: ">=2.16.0"
- url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 174bd699bb5aa9e2622eb4b288276ff8
- sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60
+ md5: 376b32e8f9d3eacbd625f37d39bd507d
+ sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
category: main
optional: false
- - name: contourpy
- version: 1.2.0
+ - name: munch
+ version: 4.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- numpy: ">=1.20,<2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.0-py311h7bea37d_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 6711c052d956af4973a16749236a0387
- sha256: 40bca4a644e0c0b0e6d58cef849ba02d4f218af715f7a5787d41845797f3b8a9
+ md5: 376b32e8f9d3eacbd625f37d39bd507d
+ sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
category: main
optional: false
- - name: dask-core
- version: 2023.11.0
+ - name: munkres
+ version: 1.1.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.9"
- packaging: ">=20.0"
- pyyaml: ">=5.3.1"
- cloudpickle: ">=1.5.0"
- toolz: ">=0.10.0"
- partd: ">=1.2.0"
- importlib_metadata: ">=4.13.0"
- fsspec: ">=2021.09.0"
- click: ">=8.1"
- url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.11.0-pyhd8ed1ab_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 3bf8f5c3fbab9e0cfffdf5914f021854
- sha256: f23b4e5d8f118d9d7916d8def04dab9a299d73879216da72dd7168c1c30ecb9e
+ md5: 2ba8498c1018c1e9c61eb99b973dfe19
+ sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306
category: main
optional: false
- - name: dnspython
- version: 2.4.2
+ - name: munkres
+ version: 1.1.4
manager: conda
platform: osx-64
dependencies:
- sniffio: ""
- python: ">=3.8.0,<4.0.0"
- cryptography: ">=2.6,<42.0"
- httpcore: ">=0.17.3"
- idna: ">=2.1,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.4.2-pyhd8ed1ab_1.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2
hash:
- md5: b9657eab1e69207feba4f21fa1207b03
- sha256: eb7de9ddc2c3a5aef78d6c74d2652ada0e1d47e11304953e65b3c7dfd8290f18
+ md5: 2ba8498c1018c1e9c61eb99b973dfe19
+ sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306
category: main
optional: false
- - name: ensureconda
- version: 1.4.3
+ - name: munkres
+ version: 1.1.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- appdirs: ""
- filelock: ""
- python: ">=3.7"
- requests: ">=2"
- click: ">=5.1"
- url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2
hash:
- md5: c99ae3abf501990769047b4b40a98f17
- sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6
+ md5: 2ba8498c1018c1e9c61eb99b973dfe19
+ sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306
category: main
optional: false
- - name: folium
- version: 0.15.0
+ - name: mypy_extensions
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- numpy: ""
- requests: ""
- python: ">=3.7"
- jinja2: ">=2.9"
- branca: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda
hash:
- md5: 25f5dbce4f946240dea7d2ee79d34254
- sha256: afe869f136fca1dbda8be0c342392fda99d951c4c4612f134a70efbf5449ef30
+ md5: 4eccaeba205f0aed9ac3a9ea58568ca3
+ sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3
category: main
optional: false
- - name: google-resumable-media
- version: 2.6.0
+ - name: mypy_extensions
+ version: 1.0.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- google-crc32c: ">=1.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda
hash:
- md5: 74fd9d08866e60fc412abc8dd7c5486c
- sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
+ md5: 4eccaeba205f0aed9ac3a9ea58568ca3
+ sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3
category: main
optional: false
- - name: graphene
- version: "3.3"
+ - name: mypy_extensions
+ version: 1.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- aniso8601: ">=8,<10"
- graphql-core: ">=3.1,<3.3"
- graphql-relay: ">=3.1,<3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/graphene-3.3-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda
hash:
- md5: ed2ae94977dfd96566e6eaf373216728
- sha256: 8b4e2c1d326849c0094f9e96a9833addb10f638be67bb0590836720879697ec6
- category: dev
- optional: true
- - name: grpcio-status
- version: 1.59.2
+ md5: 4eccaeba205f0aed9ac3a9ea58568ca3
+ sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3
+ category: main
+ optional: false
+ - name: nbclient
+ version: 0.8.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- googleapis-common-protos: ">=1.5.5"
- protobuf: ">=4.21.6"
- grpcio: ">=1.59.2"
- url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.2-pyhd8ed1ab_0.conda
+ jupyter_client: ">=6.1.12"
+ jupyter_core: ">=4.12,!=5.0.*"
+ nbformat: ">=5.1"
+ python: ">=3.8"
+ traitlets: ">=5.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 5bed0b44f99ef55c0470d2c610fbbac6
- sha256: 9513c5dd0f7fbdba8dfe70ed4e1f7591fa1c49520e06f9f0202c514475dd4257
+ md5: e78da91cf428faaf05701ce8cc8f2f9b
+ sha256: 4ebd237cdf4bfa5226f92d2ae78fab8dba27696909391884dc6594ca6f9df5ff
category: main
optional: false
- - name: gtk2
- version: 2.24.33
+ - name: nbclient
+ version: 0.8.0
manager: conda
platform: osx-64
dependencies:
- atk-1.0: ">=2.36.0"
- cairo: ">=1.16.0,<2.0.0a0"
- gdk-pixbuf: ">=2.42.6,<3.0a0"
- gettext: ">=0.19.8.1,<1.0a0"
- libglib: ">=2.70.2,<3.0a0"
- pango: ">=1.50.3,<1.51.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h7c1209e_2.tar.bz2
+ python: ">=3.8"
+ jupyter_client: ">=6.1.12"
+ jupyter_core: ">=4.12,!=5.0.*"
+ nbformat: ">=5.1"
+ traitlets: ">=5.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 307614630946527e302b7dd042a5cfa2
- sha256: 4f5f5116c5c81a4bfcc01ea9eb9e489346a87d7248eb44963f6552ae0fb3a984
- category: dev
- optional: true
- - name: h3-py
- version: 3.7.6
+ md5: e78da91cf428faaf05701ce8cc8f2f9b
+ sha256: 4ebd237cdf4bfa5226f92d2ae78fab8dba27696909391884dc6594ca6f9df5ff
+ category: main
+ optional: false
+ - name: nbclient
+ version: 0.8.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- numpy: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/h3-py-3.7.6-py311hdf8f085_1.conda
+ python: ">=3.8"
+ jupyter_client: ">=6.1.12"
+ jupyter_core: ">=4.12,!=5.0.*"
+ nbformat: ">=5.1"
+ traitlets: ">=5.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 491ef24fdb3c14d9c8d22efc62a181fb
- sha256: 4803456649a538b04b0860e69c3222dead62c364c4af2ccd4ae89d78368f2a2f
+ md5: e78da91cf428faaf05701ce8cc8f2f9b
+ sha256: 4ebd237cdf4bfa5226f92d2ae78fab8dba27696909391884dc6594ca6f9df5ff
category: main
optional: false
- - name: httpx
- version: 0.25.1
+ - name: nbconvert
+ version: 7.11.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- certifi: ""
- idna: ""
- httpcore: ""
- anyio: ""
- sniffio: ""
+ nbconvert-core: 7.11.0
+ nbconvert-pandoc: 7.11.0
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.25.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 3e00320730cb93fa4941a0cbea0db572
- sha256: fbf9e61459b65022eecbdbb19ec2dc83740374e7db981732d687456e5bcdff72
+ md5: e492b36cbea1c83d1663fa73a8abff9b
+ sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
category: main
optional: false
- - name: identify
- version: 2.5.31
+ - name: nbconvert
+ version: 7.11.0
manager: conda
platform: osx-64
dependencies:
- ukkonen: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ nbconvert-core: 7.11.0
+ nbconvert-pandoc: 7.11.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: fea10604a45e974b110ea15a88913ebc
- sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee
+ md5: e492b36cbea1c83d1663fa73a8abff9b
+ sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
category: main
optional: false
- - name: isoduration
- version: 20.11.0
+ - name: nbconvert
+ version: 7.11.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- arrow: ">=0.15.0"
- url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.8"
+ nbconvert-core: 7.11.0
+ nbconvert-pandoc: 7.11.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 4cb68948e0b8429534380243d063a27a
- sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
+ md5: e492b36cbea1c83d1663fa73a8abff9b
+ sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
category: main
optional: false
- - name: jsonschema
- version: 4.20.0
+ - name: nbconvert-core
+ version: 7.11.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
+ beautifulsoup4: ""
+ bleach: ""
+ defusedxml: ""
+ entrypoints: ">=0.2.2"
+ jinja2: ">=3.0"
+ jupyter_core: ">=4.7"
+ jupyterlab_pygments: ""
+ markupsafe: ">=2.0"
+ mistune: ">=2.0.3,<4"
+ nbclient: ">=0.5.0"
+ nbformat: ">=5.1"
+ packaging: ""
+ pandocfilters: ">=1.4.1"
+ pygments: ">=2.4.1"
python: ">=3.8"
- attrs: ">=22.2.0"
- importlib_resources: ">=1.4.0"
- pkgutil-resolve-name: ">=1.3.10"
- jsonschema-specifications: ">=2023.03.6"
- referencing: ">=0.28.4"
- rpds-py: ">=0.7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda
+ tinycss2: ""
+ traitlets: ">=5.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 1116d79def5268414fb0917520b2bbf1
- sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296
+ md5: d59e0cb1ca993f8f910cfdf393232acf
+ sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
category: main
optional: false
- - name: jupyter_core
- version: 5.5.0
+ - name: nbconvert-core
+ version: 7.11.0
manager: conda
platform: osx-64
dependencies:
- platformdirs: ">=2.5"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/osx-64/jupyter_core-5.5.0-py311h6eed73b_0.conda
+ packaging: ""
+ beautifulsoup4: ""
+ defusedxml: ""
+ bleach: ""
+ tinycss2: ""
+ jupyterlab_pygments: ""
+ python: ">=3.8"
+ jinja2: ">=3.0"
+ entrypoints: ">=0.2.2"
+ traitlets: ">=5.0"
+ markupsafe: ">=2.0"
+ pandocfilters: ">=1.4.1"
+ jupyter_core: ">=4.7"
+ nbformat: ">=5.1"
+ pygments: ">=2.4.1"
+ nbclient: ">=0.5.0"
+ mistune: ">=2.0.3,<4"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: d7ee59df3fd2eec8dd60c1fcfa29a73d
- sha256: d570b1554e3fd90085db1eb23ba61d595f1e588865b603ab193c73a2db50b64d
+ md5: d59e0cb1ca993f8f910cfdf393232acf
+ sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
category: main
optional: false
- - name: keyring
- version: 24.3.0
+ - name: nbconvert-core
+ version: 7.11.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- importlib_metadata: ">=4.11.4"
- jaraco.classes: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/keyring-24.3.0-py311h6eed73b_0.conda
+ packaging: ""
+ beautifulsoup4: ""
+ defusedxml: ""
+ bleach: ""
+ tinycss2: ""
+ jupyterlab_pygments: ""
+ python: ">=3.8"
+ jinja2: ">=3.0"
+ entrypoints: ">=0.2.2"
+ traitlets: ">=5.0"
+ markupsafe: ">=2.0"
+ pandocfilters: ">=1.4.1"
+ jupyter_core: ">=4.7"
+ nbformat: ">=5.1"
+ pygments: ">=2.4.1"
+ nbclient: ">=0.5.0"
+ mistune: ">=2.0.3,<4"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 2477bfca2a6eae7d1b72530225febae6
- sha256: 1cafeae8549f6f04da024dd2863f027b587018c7a1a570399e366053bc2cf16c
+ md5: d59e0cb1ca993f8f910cfdf393232acf
+ sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
category: main
optional: false
- - name: libgdal
- version: 3.8.0
+ - name: nbconvert-pandoc
+ version: 7.11.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- blosc: ">=1.21.5,<2.0a0"
- cfitsio: ">=4.3.0,<4.3.1.0a0"
- freexl: ">=2.0.0,<3.0a0"
- geos: ">=3.12.0,<3.12.1.0a0"
- geotiff: ">=1.7.1,<1.8.0a0"
- giflib: ">=5.2.1,<5.3.0a0"
- hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- json-c: ">=0.17,<0.18.0a0"
- kealib: ">=1.5.2,<1.6.0a0"
- lerc: ">=4.0.0,<5.0a0"
- libaec: ">=1.1.2,<2.0a0"
- libarchive: ">=3.7.2,<3.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libdeflate: ">=1.19,<1.20.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libkml: ">=1.3.0,<1.4.0a0"
- libnetcdf: ">=4.9.2,<4.9.3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libpq: ">=16.1,<17.0a0"
- libspatialite: ">=5.1.0,<5.2.0a0"
- libsqlite: ">=3.44.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- pcre2: ">=10.42,<10.43.0a0"
- poppler: ">=23.11.0,<23.12.0a0"
- postgresql: ""
- proj: ">=9.3.0,<9.3.1.0a0"
- tiledb: ">=2.16,<2.17.0a0"
- xerces-c: ">=3.2.4,<3.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.0-h1c9f6b2_4.conda
+ nbconvert-core: 7.11.0
+ pandoc: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: aba2a8c1f0c3d63568a973dbcf728910
- sha256: a4f1cb12cc0f42bfc0f56f4a8a4c80d750536b8efe7e8163c68f21af1533ccc9
+ md5: 51bd005efab7e5c5c2af2570327bd213
+ sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
category: main
optional: false
- - name: librsvg
- version: 2.56.3
+ - name: nbconvert-pandoc
+ version: 7.11.0
manager: conda
platform: osx-64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- gdk-pixbuf: ">=2.42.10,<3.0a0"
- gettext: ">=0.21.1,<1.0a0"
- libglib: ">=2.76.4,<3.0a0"
- libxml2: ">=2.11.4,<2.12.0a0"
- pango: ">=1.50.14,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.56.3-hec3db73_0.conda
+ pandoc: ""
+ python: ">=3.8"
+ nbconvert-core: 7.11.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: c6ab56c808493cbd88267fad5297c3c1
- sha256: 031f377db78d673b89ec837efed3d794d7abd0ce787c2527153a15197e29d3c8
- category: dev
- optional: true
- - name: numba
- version: 0.58.1
+ md5: 51bd005efab7e5c5c2af2570327bd213
+ sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ category: main
+ optional: false
+ - name: nbconvert-pandoc
+ version: 7.11.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- llvm-openmp: ">=17.0.4"
- llvmlite: ">=0.41.1,<0.42.0a0"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/numba-0.58.1-py311h32f2313_0.conda
+ pandoc: ""
+ python: ">=3.8"
+ nbconvert-core: 7.11.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
hash:
- md5: 97c10727b2fd55e61eaf35ea97811662
- sha256: bc318713a7bd89922b28636d5c9e56efdc9cd86361c0b2f2a3dcb0a9ffe4d8cb
+ md5: 51bd005efab7e5c5c2af2570327bd213
+ sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
category: main
optional: false
- - name: numexpr
- version: 2.8.7
+ - name: nbformat
+ version: 5.9.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.8.7-py311h1eadf79_4.conda
+ jsonschema: ">=2.6"
+ jupyter_core: ""
+ python: ">=3.8"
+ python-fastjsonschema: ""
+ traitlets: ">=5.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda
hash:
- md5: 1e4eb39eb67cd4786fa381214810a9e1
- sha256: acc0dd347f2c1a373caf7633a87ee5203b89013edbd9d605e8327f5bc30df8db
+ md5: 61ba076de6530d9301a0053b02f093d2
+ sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992
category: main
optional: false
- - name: oauthlib
- version: 3.2.2
+ - name: nbformat
+ version: 5.9.2
manager: conda
platform: osx-64
dependencies:
- cryptography: ""
- blinker: ""
- python: ">=3.6"
- pyjwt: ">=1.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2
+ jupyter_core: ""
+ python-fastjsonschema: ""
+ python: ">=3.8"
+ traitlets: ">=5.1"
+ jsonschema: ">=2.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda
hash:
- md5: 8f882b197fd9c4941a787926baea4868
- sha256: 0cfd5146a91d3974f4abfc2a45de890371d510a77238fe553e036ec8c031dc5b
+ md5: 61ba076de6530d9301a0053b02f093d2
+ sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992
category: main
optional: false
- - name: pandas
- version: 2.1.3
+ - name: nbformat
+ version: 5.9.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.8.1"
- python-tzdata: ">=2022a"
- python_abi: 3.11.*
- pytz: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.1.3-py311h1eadf79_0.conda
+ jupyter_core: ""
+ python-fastjsonschema: ""
+ python: ">=3.8"
+ traitlets: ">=5.1"
+ jsonschema: ">=2.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda
hash:
- md5: 0a1ea4be8bcc907018694b5d04ac3036
- sha256: 2ca591570ce60be45eae8e5d39a07f08390e9ecc18997f66cb3d712953c09724
+ md5: 61ba076de6530d9301a0053b02f093d2
+ sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992
category: main
optional: false
- - name: prompt-toolkit
- version: 3.0.41
+ - name: ncurses
+ version: "6.4"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- wcwidth: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda
hash:
- md5: f511a993aa4336bef9dd874ee3403e67
- sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
+ md5: 7dbaa197d7ba6032caf7ae7f32c1efa0
+ sha256: 91cc03f14caf96243cead96c76fe91ab5925a695d892e83285461fb927dece5e
category: main
optional: false
- - name: pybtex-docutils
- version: 1.0.3
+ - name: ncurses
+ version: "6.4"
manager: conda
platform: osx-64
dependencies:
- docutils: ">=0.14"
- pybtex: ">=0.16"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/pybtex-docutils-1.0.3-py311h6eed73b_1.conda
+ __osx: ">=10.9"
+ url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.4-h93d8f39_2.conda
hash:
- md5: 36996441974a061f9e0b600741599585
- sha256: 13b6ee67378fee966f8783cb482ce57a647ee0c6d7d1e7dedee754408521641f
+ md5: e58f366bd4d767e9ab97ab8b272e7670
+ sha256: ea0fca66bbb52a1ef0687d466518fe120b5f279684effd6fd336a7b0dddc423a
category: main
optional: false
- - name: pyopenssl
- version: 23.3.0
+ - name: ncurses
+ version: "6.4"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- cryptography: ">=41.0.5,<42"
- url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.4-h463b476_2.conda
hash:
- md5: 7819533e674dbbc51468f3228b9b1bb6
- sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010
+ md5: 52b6f254a7b9663e854f44b6570ed982
+ sha256: f6890634f815e8408d08f36503353f8dfd7b055e4c3b9ea2ee52180255cf4b0a
category: main
optional: false
- - name: readthedocs-sphinx-ext
- version: 2.2.3
+ - name: nest-asyncio
+ version: 1.5.8
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- requests: ""
- packaging: ""
- python: ">=3.6"
- jinja2: ">=2.9"
- url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: 6bc1a00f5502f9ed13526e4c6bea6900
- sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
+ md5: a4f0e4519bc50eee4f53f689be9607f7
+ sha256: d7b795b4e754136841c6da3f9fa1a0f7ec37bc7167e7dd68c5b45e657133e008
category: main
optional: false
- - name: requests-toolbelt
- version: 0.10.1
+ - name: nest-asyncio
+ version: 1.5.8
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- requests: ">=2.0.1,<=3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.10.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: a4cd20af9711434f89d1ec0d2b3ae6ba
- sha256: 7f4c9c829add7a65a1f536c30539c541bb3c9dddbd03d7ba318f224b4add0d6d
- category: dev
- optional: true
- - name: responses
- version: 0.24.1
+ md5: a4f0e4519bc50eee4f53f689be9607f7
+ sha256: d7b795b4e754136841c6da3f9fa1a0f7ec37bc7167e7dd68c5b45e657133e008
+ category: main
+ optional: false
+ - name: nest-asyncio
+ version: 1.5.8
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- pyyaml: ""
- typing_extensions: ""
- types-pyyaml: ""
- python: ">=3.7"
- requests: ">=2.30.0,<3.0"
- urllib3: ">=1.25.10,<3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda
hash:
- md5: b1b80aaa77d5e83183cd0c9e9025b1fa
- sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67
+ md5: a4f0e4519bc50eee4f53f689be9607f7
+ sha256: d7b795b4e754136841c6da3f9fa1a0f7ec37bc7167e7dd68c5b45e657133e008
category: main
optional: false
- - name: s3transfer
- version: 0.7.0
+ - name: networkx
+ version: 3.2.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- botocore: ">=1.12.36,<2.0a.0"
- url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 5fe335cb1420d13a818fe01310af2b80
- sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d
+ md5: 425fce3b531bed6ec3c74fab3e5f0a1c
+ sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d
category: main
optional: false
- - name: scipy
- version: 1.11.3
+ - name: networkx
+ version: 3.2.1
manager: conda
platform: osx-64
dependencies:
- libblas: ">=3.9.0,<4.0a0"
- libcblas: ">=3.9.0,<4.0a0"
- libcxx: ">=15.0.7"
- libgfortran: 5.*
- libgfortran5: ">=13.2.0"
- liblapack: ">=3.9.0,<4.0a0"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.11.3-py311h16c3c4d_1.conda
+ python: ">=3.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 77164acef9bc09545bd3324a8f986be5
- sha256: 78270d60ea00482b4f64a4b2d5d4e432f48125f6b76780e2094c8363ad48b611
+ md5: 425fce3b531bed6ec3c74fab3e5f0a1c
+ sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d
category: main
optional: false
- - name: send2trash
- version: 1.8.2
+ - name: networkx
+ version: 3.2.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ""
- pyobjc-framework-cocoa: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyhd1c38e8_0.conda
+ python: ">=3.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda
hash:
- md5: 2657c3de5371c571aef6678afb4aaadd
- sha256: dca4022bae47618ed738ab7d45ead5202d174b741cfb98e4484acdc6e76da32a
+ md5: 425fce3b531bed6ec3c74fab3e5f0a1c
+ sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d
category: main
optional: false
- - name: shapely
- version: 2.0.2
+ - name: nodeenv
+ version: 1.8.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- geos: ">=3.12.0,<3.12.1.0a0"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.0.2-py311h359915d_0.conda
+ python: 2.7|>=3.7
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 5569c5122a7938835a8a7c498aaded67
- sha256: 240cca365e75d5f5aa09ee62c95813288d3652f666a1ab227015195316b8f9fe
+ md5: 2a75b296096adabbabadd5e9782e5fcc
+ sha256: 1320306234552717149f36f825ddc7e27ea295f24829e9db4cc6ceaff0b032bd
category: main
optional: false
- - name: stevedore
- version: 5.1.0
+ - name: nodeenv
+ version: 1.8.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- pbr: "!=2.1.0,>=2.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/stevedore-5.1.0-pyhd8ed1ab_0.conda
+ setuptools: ""
+ python: 2.7|>=3.7
+ url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 55864c50fd9354fd19f6a5078a068170
- sha256: 69b779f4cdb0b84f87067414bcccaffc83c6d734dac84523c40115c383a2e2d5
+ md5: 2a75b296096adabbabadd5e9782e5fcc
+ sha256: 1320306234552717149f36f825ddc7e27ea295f24829e9db4cc6ceaff0b032bd
category: main
optional: false
- - name: typeguard
- version: 4.1.5
+ - name: nodeenv
+ version: 1.8.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- importlib_metadata: ">=3.6"
- typing_extensions: ">=4.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda
+ setuptools: ""
+ python: 2.7|>=3.7
+ url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 59d22e0ca481b057b94d54fc9ebacb13
- sha256: df63f90625d2eaefcb6990437b941c1c90ec3c224bc65a2becac928542d0aa5f
+ md5: 2a75b296096adabbabadd5e9782e5fcc
+ sha256: 1320306234552717149f36f825ddc7e27ea295f24829e9db4cc6ceaff0b032bd
category: main
optional: false
- - name: typer
- version: 0.9.0
+ - name: nodejs
+ version: 20.9.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- typing-extensions: ">=3.7.4.3"
- colorama: ">=0.4.3,<0.5.0"
- shellingham: ">=1.3.0,<2.0.0"
- rich: ">=10.11.0,<14.0.0"
- click: ">=7.1.1,<9"
- url: https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda
+ __glibc: ">=2.17,<3.0.a0"
+ icu: ">=73.2,<74.0a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libuv: ">=1.46.0,<1.47.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.9.0-hb753e55_0.conda
hash:
- md5: 5030a13b2fe5e143d5956d4943d3018f
- sha256: d395e1e92281abb13e043220ecf8ea973ada8d38a1e8c683df14f46541c64bd2
+ md5: ddfcb003b0a6804fabe7dfbf1be16651
+ sha256: 4d35f8151f83bc561e4bcb41b46dcf77ec708c88eb333d1376f37371288f46ad
category: main
optional: false
- - name: uvicorn-standard
- version: 0.24.0
+ - name: nodejs
+ version: 20.9.0
manager: conda
platform: osx-64
dependencies:
- httptools: ">=0.5.0"
- python-dotenv: ">=0.13"
- python_abi: 3.11.*
- pyyaml: ">=5.1"
- uvicorn: 0.24.0
- uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
- watchfiles: ">=0.13"
- websockets: ">=10.4"
- url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-standard-0.24.0-h6eed73b_0.conda
+ __osx: ">=10.9"
+ icu: ">=73.2,<74.0a0"
+ libcxx: ">=16.0.6"
+ libuv: ">=1.46.0,<1.47.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/nodejs-20.9.0-h9adec40_0.conda
hash:
- md5: fcfded7537383dc21fc53708048fb40f
- sha256: 30476332eed1f448bfe769dcdf8a5a68e55587980026eae317c2a84b17daac2b
- category: dev
- optional: true
- - name: virtualenv
- version: 20.24.6
+ md5: eea3610c4b86886f545c0fe53d1e9438
+ sha256: b492f1478fbca841491fbb9feeca7e859a9f57ea6319eeef09d702e12140a44f
+ category: main
+ optional: false
+ - name: nodejs
+ version: 20.9.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- distlib: <1,>=0.3.7
- filelock: <4,>=3.12.2
- platformdirs: <4,>=3.9.1
- url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ icu: ">=73.2,<74.0a0"
+ libcxx: ">=16.0.6"
+ libuv: ">=1.46.0,<1.47.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-20.9.0-h0950e01_0.conda
hash:
- md5: fb1fc875719e217ed799a7aae11d3be4
- sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde
+ md5: f51aebc416d466c13a719f3604b2426c
+ sha256: 2e2cb08f6525a7ac7b4d9785ac826e9663ee969d21298f9718906fb931cb85e9
category: main
optional: false
- - name: boto3
- version: 1.29.2
+ - name: nomkl
+ version: "1.0"
manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.7"
- jmespath: ">=0.7.1,<2.0.0"
- s3transfer: ">=0.7.0,<0.8.0"
- botocore: ">=1.32.2,<1.33.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.29.2-pyhd8ed1ab_0.conda
+ platform: linux-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2
hash:
- md5: 7c73d1610c56a1d624c9ef470221d10c
- sha256: 92b63c85d2bbb85be1f406abb41e36ef87d692222c57a24a0d27c6027107b023
+ md5: 9a66894dfd07c4510beb6b3f9672ccc0
+ sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b
category: main
optional: false
- - name: cachecontrol-with-filecache
- version: 0.13.1
+ - name: notebook
+ version: 7.0.6
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- filelock: ">=3.8.0"
- cachecontrol: 0.13.1
- url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda
+ jupyter_server: ">=2.4.0,<3"
+ jupyterlab: ">=4.0.7,<5"
+ jupyterlab_server: ">=2.22.1,<3"
+ notebook-shim: ">=0.2,<0.3"
+ python: ">=3.8"
+ tornado: ">=6.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.6-pyhd8ed1ab_0.conda
hash:
- md5: 8c4781ca0893cff3a64423954ce234a1
- sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85
+ md5: d60881c78a54cbf8042ae719f1f77a50
+ sha256: 5259ad2fb47300407dafa6ea5e78085a2c8de8dcdbfbaa58592bf2677d7187a9
category: main
optional: false
- - name: dagster
- version: 1.5.9
+ - name: notebook
+ version: 7.0.6
manager: conda
platform: osx-64
dependencies:
- requests: ""
- setuptools: ""
- tqdm: ""
- jinja2: ""
- python-dateutil: ""
- pytz: ""
- tabulate: ""
- tomli: ""
- python-dotenv: ""
- pywin32-on-windows: ""
- docstring_parser: ""
- universal_pathlib: ""
python: ">=3.8"
- pyyaml: ">=5.1"
- watchdog: ">=0.8.3"
- packaging: ">=20.9"
- click: ">=5.0"
- typing_extensions: ">=4.4.0"
- coloredlogs: ">=6.1,<=14.0"
- croniter: ">=0.3.34"
- toposort: ">=1.0"
- psutil: ">=1.0"
- sqlalchemy: ">=1.0"
- grpcio-health-checking: ">=1.44.0"
- protobuf: ">=3.20.0"
- grpcio: ">=1.44.0"
- alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
- pydantic: ">1.10.0,!=1.10.7"
- pendulum: <3
- dagster-pipes: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
+ tornado: ">=6.2.0"
+ jupyter_server: ">=2.4.0,<3"
+ jupyterlab_server: ">=2.22.1,<3"
+ notebook-shim: ">=0.2,<0.3"
+ jupyterlab: ">=4.0.7,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.6-pyhd8ed1ab_0.conda
hash:
- md5: d8ab27112f82687ffcd456a3b88092e5
- sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
+ md5: d60881c78a54cbf8042ae719f1f77a50
+ sha256: 5259ad2fb47300407dafa6ea5e78085a2c8de8dcdbfbaa58592bf2677d7187a9
category: main
optional: false
- - name: datasette
- version: 0.64.4
+ - name: notebook
+ version: 7.0.6
manager: conda
- platform: osx-64
- dependencies:
- setuptools: ""
- pip: ""
- python: ">=3.7"
- pyyaml: ">=5.3"
- jinja2: ">=2.10.3"
- click: ">=7.1.1"
- pint: ">=0.9"
- httpx: ">=0.20"
- asgi-csrf: ">=0.9"
- itsdangerous: ">=1.1"
- click-default-group-wheel: ">=1.2.2"
- hupper: ">=1.9"
- uvicorn: ">=0.11"
- pluggy: ">=1.0"
- aiofiles: ">=0.4"
- asgiref: ">=3.2.10"
- janus: ">=0.6.2"
- mergedeep: ">=1.1.1"
- url: https://conda.anaconda.org/conda-forge/noarch/datasette-0.64.4-pyhd8ed1ab_1.conda
+ platform: osx-arm64
+ dependencies:
+ python: ">=3.8"
+ tornado: ">=6.2.0"
+ jupyter_server: ">=2.4.0,<3"
+ jupyterlab_server: ">=2.22.1,<3"
+ notebook-shim: ">=0.2,<0.3"
+ jupyterlab: ">=4.0.7,<5"
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.6-pyhd8ed1ab_0.conda
hash:
- md5: cd1207af03052f6b81906e1a914ad3c5
- sha256: 8800f86ec23a31ad642a1467d0a8f343038c7e2237a1f9046493ad1868ceb441
+ md5: d60881c78a54cbf8042ae719f1f77a50
+ sha256: 5259ad2fb47300407dafa6ea5e78085a2c8de8dcdbfbaa58592bf2677d7187a9
category: main
optional: false
- - name: doc8
- version: 1.1.1
+ - name: notebook-shim
+ version: 0.2.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- pygments: ""
- tomli: ""
- stevedore: ""
- python: ">=3.8"
- restructuredtext_lint: ">=0.7"
- docutils: ">=0.19,<0.21"
- url: https://conda.anaconda.org/conda-forge/noarch/doc8-1.1.1-pyhd8ed1ab_0.conda
+ jupyter_server: ">=1.8,<3"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
hash:
- md5: 5e9e17751f19d03c4034246de428582e
- sha256: 00691538e6289b7947cabc2024f08883b3e2ded00369c68de7d67677e9d4c250
+ md5: 67e0fe74c156267d9159e9133df7fd37
+ sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538
category: main
optional: false
- - name: email-validator
- version: 2.1.0.post1
+ - name: notebook-shim
+ version: 0.2.3
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
- idna: ">=2.0.0"
- dnspython: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.1.0.post1-pyhd8ed1ab_0.conda
+ jupyter_server: ">=1.8,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
hash:
- md5: 192fe8f657c763c6120d9f8592055847
- sha256: 0b2e503da10648e2fa8d13035ddda174a549732c4f17476363882ebf67867283
+ md5: 67e0fe74c156267d9159e9133df7fd37
+ sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538
category: main
optional: false
- - name: frictionless
- version: 4.40.8
+ - name: notebook-shim
+ version: 0.2.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.6"
- pyyaml: ">=5.3"
- jsonschema: ">=2.5"
- chardet: ">=3.0"
- python-dateutil: ">=2.8"
- isodate: ">=0.6"
- requests: ">=2.10"
- python-slugify: ">=1.2"
- stringcase: ">=1.2"
- petl: ">=1.6"
- validators: ">=0.18"
- rfc3986: ">=1.4"
- tabulate: ">=0.8.10"
- marko: ">=1.0"
- simpleeval: ">=0.9.11"
- typer: ">=0.5"
- jinja2: ">=3.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/frictionless-4.40.8-pyh6c4a22f_0.tar.bz2
+ python: ">=3.7"
+ jupyter_server: ">=1.8,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
hash:
- md5: d2791ef8f6c1252aa8d2e2001a603815
- sha256: 0d7d669d92aa4ecf08effb64aea4c98aa65607bdb98e7b82627b7c43556dd9bc
+ md5: 67e0fe74c156267d9159e9133df7fd37
+ sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538
category: main
optional: false
- - name: gdal
- version: 3.8.0
+ - name: nspr
+ version: "4.35"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libcxx: ">=16.0.6"
- libgdal: 3.8.0
- libxml2: ">=2.11.5,<2.12.0a0"
- numpy: ">=1.23.5,<2.0a0"
- openssl: ">=3.1.4,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.0-py311h5646c56_4.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda
hash:
- md5: 1d9d1cbd571fb4c7e65085cb18037ae4
- sha256: 808c395bb386f56595e0a11d3c1b6f629bd23cfef09da17969d64f116eaec568
+ md5: da0ec11a6454ae19bff5b02ed881a2b1
+ sha256: 8fadeebb2b7369a4f3b2c039a980d419f65c7b18267ba0c62588f9f894396d0c
category: main
optional: false
- - name: geopandas-base
- version: 0.14.1
+ - name: nspr
+ version: "4.35"
manager: conda
platform: osx-64
dependencies:
- packaging: ""
- python: ">=3.9"
- pandas: ">=1.4.0"
- shapely: ">=1.8.0"
- pyproj: ">=3.3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.1-pyha770c72_0.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/nspr-4.35-hea0b92c_0.conda
hash:
- md5: d65c6f458bfdaa181f388d91e858ea67
- sha256: c813004bb84e50de19f599b188719e40106c858c7da22e504b29ce66e5043361
+ md5: a9e56c98d13d8b7ce72bf4357317c29b
+ sha256: da6e19bd0ff31e219760e647cfe1cc499a8cdfaff305f06c56d495ca062b86de
category: main
optional: false
- - name: google-auth
- version: 2.23.4
+ - name: nspr
+ version: "4.35"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- pyasn1-modules: ">=0.2.1"
- rsa: ">=3.1.4,<5"
- pyopenssl: ">=20.0.0"
- pyu2f: ">=0.1.5"
- requests: ">=2.20.0,<3.0.0"
- cachetools: ">=2.0.0,<6.0"
- aiohttp: ">=3.6.2,<4.0.0"
- cryptography: ">=38.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
hash:
- md5: 9ad01e23627db9def3104ba78fd19229
- sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
+ md5: f81b5ec944dbbcff3dd08375eb036efa
+ sha256: 35959d36ea9e8a2c422db9f113ee0ac91a9b0c19c51b05f75d0793c3827cfa3a
category: main
optional: false
- - name: gql-with-requests
- version: 3.4.1
+ - name: nss
+ version: "3.95"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- requests: ""
- urllib3: ""
- requests-toolbelt: ""
- python: ">=3.6"
- gql: 3.4.1
- url: https://conda.anaconda.org/conda-forge/noarch/gql-with-requests-3.4.1-pyhd8ed1ab_0.conda
+ __glibc: ">=2.17,<3.0.a0"
+ libgcc-ng: ">=12"
+ libsqlite: ">=3.44.2,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ nspr: ">=4.35,<5.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/nss-3.95-h1d7d5a4_0.conda
hash:
- md5: 1814ff1e969b01d3570027efcf4f163a
- sha256: f11fb42542950f5e96ee252c9bebbd205bcbf1e20a3d8aeb056998bbdfef68f2
- category: dev
- optional: true
- - name: graphviz
- version: 8.1.0
+ md5: d3a8067adcc45a923f4b1987c91d69da
+ sha256: 02d8e38b4708ce707e51084d0dff7286e6e6d24d1bf32ebbda7710fac4a0581e
+ category: main
+ optional: false
+ - name: nss
+ version: "3.95"
manager: conda
platform: osx-64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- expat: ""
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- gdk-pixbuf: ">=2.42.10,<3.0a0"
- gtk2: ""
- gts: ">=0.7.6,<0.8.0a0"
- libcxx: ">=15.0.7"
- libexpat: ">=2.5.0,<3.0a0"
- libgd: ">=2.3.3,<2.4.0a0"
- libglib: ">=2.76.4,<3.0a0"
- librsvg: ">=2.56.1,<3.0a0"
- libtool: ""
- libwebp-base: ">=1.3.1,<2.0a0"
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ libsqlite: ">=3.44.2,<4.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- pango: ">=1.50.14,<2.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/graphviz-8.1.0-hc7f41f9_0.conda
+ nspr: ">=4.35,<5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/nss-3.95-hfeb00ea_0.conda
hash:
- md5: a840f2eb891fdc5c39c762e16ee09600
- sha256: d3b8c3662a02d7dc5afb6ac7256be1c2887f6c5ea386f798a6f033b7243f6664
- category: dev
- optional: true
- - name: jsonschema-with-format-nongpl
- version: 4.20.0
+ md5: 635525316f129644b60e3772e67fe5d8
+ sha256: e57c7bb5f315868df1570d00de8ea7f03f3bc9659571111fef4f37d3f2553eb1
+ category: main
+ optional: false
+ - name: nss
+ version: "3.95"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- idna: ""
- rfc3339-validator: ""
- uri-template: ""
- fqdn: ""
- isoduration: ""
- jsonpointer: ">1.13"
- webcolors: ">=1.11"
- rfc3986-validator: ">0.1.0"
- jsonschema: ">=4.20.0,<4.20.1.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.20.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ libsqlite: ">=3.44.2,<4.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ nspr: ">=4.35,<5.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.95-h6cf673f_0.conda
hash:
- md5: a168c5f84010711f6d4ae650bc22b480
- sha256: 03558b25daa57137fdf98e92731ba50ff5506f265294ac2eef5ec465c76ecf57
+ md5: 45c7275beb042f0a6655674c95abab32
+ sha256: 1a7c5c5f920a63fc2aa8e3bddff9df5284dd5eedc4a3702dd479d4b970db728f
category: main
optional: false
- - name: jupyter_client
- version: 8.6.0
+ - name: numba
+ version: 0.58.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- python-dateutil: ">=2.8.2"
- jupyter_core: ">=4.12,!=5.0.*"
- traitlets: ">=5.3"
- pyzmq: ">=23.0"
- importlib_metadata: ">=4.8.3"
- tornado: ">=6.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda
+ _openmp_mutex: ">=4.5"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ llvmlite: ">=0.41.1,<0.42.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/numba-0.58.1-py311h96b013e_0.conda
hash:
- md5: 6bd3f1069cdebb44c7ae9efb900e312d
- sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d
+ md5: 06a0313ff3d2ec956a25767ccaf7c9f6
+ sha256: 9061328d0fa03fc0bf40136c366399107dcede6004dcabd4bf553f60f55b86bf
category: main
optional: false
- - name: libarrow
- version: 14.0.1
+ - name: numba
+ version: 0.58.1
manager: conda
platform: osx-64
dependencies:
__osx: ">=10.9"
- aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
- aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
- bzip2: ">=1.0.8,<2.0a0"
- glog: ">=0.6.0,<0.7.0a0"
- libabseil: ">=20230802.1,<20230803.0a0"
- libbrotlidec: ">=1.1.0,<1.2.0a0"
- libbrotlienc: ">=1.1.0,<1.2.0a0"
- libcxx: ">=15.0.7"
- libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libutf8proc: ">=2.8.0,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- orc: ">=1.9.0,<1.9.1.0a0"
- re2: ""
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-14.0.1-hd201b0c_3_cpu.conda
+ libcxx: ">=16.0.6"
+ llvm-openmp: ">=17.0.4"
+ llvmlite: ">=0.41.1,<0.42.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/numba-0.58.1-py311h32f2313_0.conda
hash:
- md5: ca9ae7988629996eeab28791c9a97b12
- sha256: 6866b9fbece513b932ae9862a1281f96a3fb05572f02ba3af3d3021363a24553
+ md5: 97c10727b2fd55e61eaf35ea97811662
+ sha256: bc318713a7bd89922b28636d5c9e56efdc9cd86361c0b2f2a3dcb0a9ffe4d8cb
category: main
optional: false
- - name: matplotlib-base
- version: 3.8.1
+ - name: numba
+ version: 0.58.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
__osx: ">=10.9"
- certifi: ">=2020.06.20"
- contourpy: ">=1.0.1"
- cycler: ">=0.10"
- fonttools: ">=4.22.0"
- freetype: ">=2.12.1,<3.0a0"
- kiwisolver: ">=1.3.1"
libcxx: ">=16.0.6"
+ llvm-openmp: ">=17.0.4"
+ llvmlite: ">=0.41.1,<0.42.0a0"
numpy: ">=1.23.5,<2.0a0"
- packaging: ">=20.0"
- pillow: ">=8"
- pyparsing: ">=2.3.1"
python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.7"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.8.1-py311hd316c10_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.58.1-py311h9ec4793_0.conda
hash:
- md5: 8952515c597009d2dfadf9ecaec30447
- sha256: 5976a3c061b7918ac84a7e38fec1af297fe29b5e2ec9405f43feb55f77b4f6fb
+ md5: d143fecfd4a3ad7baacaff7611b21ee5
+ sha256: f4161fb906e74b79746170cb6b0e8a3a42a165e17c12f8e358eac2b533b25b61
category: main
optional: false
- - name: nbformat
- version: 5.9.2
+ - name: numexpr
+ version: 2.8.7
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- jupyter_core: ""
- python-fastjsonschema: ""
- python: ">=3.8"
- traitlets: ">=5.1"
- jsonschema: ">=2.6"
- url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ nomkl: ""
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.8.7-py311h039bad6_104.conda
hash:
- md5: 61ba076de6530d9301a0053b02f093d2
- sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992
+ md5: 525b0f41e7fcf20a17787be9e2896f49
+ sha256: 2e20fd9d64638c8c8ca18bc14a075856da99ddfab7fb318ab51ca94486b5561d
category: main
optional: false
- - name: pandera-core
- version: 0.17.2
+ - name: numexpr
+ version: 2.8.7
manager: conda
platform: osx-64
dependencies:
- numpy: ""
- pandas: ""
- typing_extensions: ""
- packaging: ""
- pydantic: ""
- wrapt: ""
- multimethod: ""
- python: ">=3.7"
- typing_inspect: ">=0.6.0"
- typeguard: ">=3.0.2"
- url: https://conda.anaconda.org/conda-forge/noarch/pandera-core-0.17.2-pyhd8ed1ab_1.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.8.7-py311h1eadf79_4.conda
hash:
- md5: 5a1b3de3f435bc9d3c0ab52d45651a28
- sha256: 298bc0b877a366af0bbae2512ec1da47e215fc6333b8b0da7571a09084307331
+ md5: 1e4eb39eb67cd4786fa381214810a9e1
+ sha256: acc0dd347f2c1a373caf7633a87ee5203b89013edbd9d605e8327f5bc30df8db
category: main
optional: false
- - name: pre-commit
- version: 3.5.0
+ - name: numexpr
+ version: 2.8.7
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- pyyaml: ">=5.1"
- identify: ">=1.0.0"
- nodeenv: ">=0.11.1"
- cfgv: ">=2.0.0"
- virtualenv: ">=20.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.8.7-py311h6e08293_4.conda
hash:
- md5: 964e3d762e427661c59263435a14c492
- sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
+ md5: f31ccd21d19edd2e2479c065302b7388
+ sha256: d37e44a13e5690db715b5c34ba7f53565daae8bfbf6f61c8feba5cf6b0ab5519
category: main
optional: false
- - name: prompt_toolkit
- version: 3.0.41
+ - name: numpy
+ version: 1.26.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
+ libblas: ">=3.9.0,<4.0a0"
+ libcblas: ">=3.9.0,<4.0a0"
+ libgcc-ng: ">=12"
+ liblapack: ">=3.9.0,<4.0a0"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.2-py311h64a7726_0.conda
hash:
- md5: b1387bd091fa0420557f801a78587678
- sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
+ md5: fd2f142dcd680413b5ede5d0fb799205
+ sha256: c68b2c0ce95b79913134ec6ba2a2f1c10adcd60133afd48e4a57fdd128b694b7
category: main
optional: false
- - name: requests-oauthlib
- version: 1.3.1
+ - name: numpy
+ version: 1.26.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.4"
- requests: ">=2.0.0"
- oauthlib: ">=3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2
+ __osx: ">=10.9"
+ libblas: ">=3.9.0,<4.0a0"
+ libcblas: ">=3.9.0,<4.0a0"
+ libcxx: ">=16.0.6"
+ liblapack: ">=3.9.0,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.2-py311h93c810c_0.conda
hash:
- md5: 61b279f051eef9c89d58f4d813e75e04
- sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0
+ md5: 94d3dd8a8c0ad89583648b31e1a7f72a
+ sha256: ea57e333df9e3067b084a1d1b5c0abb65bc8dbdca22e1ee0300e58167032cb50
category: main
optional: false
- - name: scikit-learn
- version: 1.3.2
+ - name: numpy
+ version: 1.26.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
__osx: ">=10.9"
- joblib: ">=1.1.1"
+ libblas: ">=3.9.0,<4.0a0"
+ libcblas: ">=3.9.0,<4.0a0"
libcxx: ">=16.0.6"
- llvm-openmp: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
+ liblapack: ">=3.9.0,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- scipy: ""
- threadpoolctl: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.3.2-py311h66081b9_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.2-py311h6d074dd_0.conda
hash:
- md5: a7053f3e86b6b9139593a027c54e3097
- sha256: 0b4aee092d4689d07aa95ed1d1071eeb74a5e011d34bc9ebd9b27e9b2166db7e
+ md5: 686a22bdbc601bfe7e7243f0263c10e3
+ sha256: a88e48461bea106a0ce41684625f79efe473d42cf0f0310535dcfe1d98c888ba
category: main
optional: false
- - name: timezonefinder
- version: 6.2.0
+ - name: oauthlib
+ version: 3.2.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- cffi: ">=1.15.1,<2"
- h3-py: ">=3.7.6,<4"
- numpy: ">=1.18,<2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ">=65.5"
- url: https://conda.anaconda.org/conda-forge/osx-64/timezonefinder-6.2.0-py311he705e18_2.conda
+ blinker: ""
+ cryptography: ""
+ pyjwt: ">=1.0.0"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 64122075c5e685197353fa1e5e9d1916
- sha256: 147719244fedcab5eb4b56cffd84b4ad0fed2ab1877e623c863c590966443c4b
+ md5: 8f882b197fd9c4941a787926baea4868
+ sha256: 0cfd5146a91d3974f4abfc2a45de890371d510a77238fe553e036ec8c031dc5b
category: main
optional: false
- - name: catalystcoop.ferc_xbrl_extractor
- version: 1.2.1
+ - name: oauthlib
+ version: 3.2.2
manager: conda
platform: osx-64
dependencies:
- sqlalchemy: ">=1.4,<3"
- lxml: ">=4.9.1,<5"
- python: ">=3.10,<3.13"
- coloredlogs: ">=14.0,<15.1"
- frictionless: ">=4.4,<5"
- numpy: ">=1.16,<2"
- arelle-release: ">=2.3,<3"
- pandas: ">=1.5,<2.2"
- pydantic: ">=1.9,<3"
- stringcase: ">=1.2,<2"
- url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.ferc_xbrl_extractor-1.2.1-pyhd8ed1ab_0.conda
+ cryptography: ""
+ blinker: ""
+ python: ">=3.6"
+ pyjwt: ">=1.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 901c0be7848920eeaeb14bce747c589c
- sha256: f70614208da7b61b41ead6d2260ca3b0d6c0785388b09f7aa4615b56fbf3ce37
+ md5: 8f882b197fd9c4941a787926baea4868
+ sha256: 0cfd5146a91d3974f4abfc2a45de890371d510a77238fe553e036ec8c031dc5b
category: main
optional: false
- - name: conda-lock
- version: 2.4.2
+ - name: oauthlib
+ version: 3.2.2
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ cryptography: ""
+ blinker: ""
+ python: ">=3.6"
+ pyjwt: ">=1.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2
+ hash:
+ md5: 8f882b197fd9c4941a787926baea4868
+ sha256: 0cfd5146a91d3974f4abfc2a45de890371d510a77238fe553e036ec8c031dc5b
+ category: main
+ optional: false
+ - name: openjpeg
+ version: 2.5.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ libgcc-ng: ">=12"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libstdcxx-ng: ">=12"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda
+ hash:
+ md5: 128c25b7fe6a25286a48f3a6a9b5b6f3
+ sha256: 9fe91b67289267de68fda485975bb48f0605ac503414dc663b50d8b5f29bc82a
+ category: main
+ optional: false
+ - name: openjpeg
+ version: 2.5.0
manager: conda
platform: osx-64
dependencies:
- typing_extensions: ""
- jinja2: ""
- ruamel.yaml: ""
- tomli: ""
- click-default-group: ""
- python: ">=3.8"
- pyyaml: ">=5.1"
- click: ">=8.0"
- packaging: ">=20.4"
- requests: ">=2.18"
- ensureconda: ">=1.3"
- gitpython: ">=3.1.30"
- keyring: ">=21.2.0"
- html5lib: ">=1.0"
- pydantic: ">=1.10"
- cachy: ">=0.3.0"
- clikit: ">=0.6.2"
- crashtest: ">=0.3.0"
- pkginfo: ">=1.4"
- tomlkit: ">=0.7.0"
- virtualenv: ">=20.0.26"
- toolz: ">=0.12.0,<1.0.0"
- cachecontrol-with-filecache: ">=0.12.9"
- urllib3: ">=1.26.5,<2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-2.4.2-pyhd8ed1ab_0.conda
+ libcxx: ">=15.0.7"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.0-ha4da562_3.conda
+ hash:
+ md5: 40a36f8e9a6fdf6a78c6428ee6c44188
+ sha256: fdccd9668b85bf6e798b628bceed5ff764e1114cfc4e6a4dee551cafbe549e74
+ category: main
+ optional: false
+ - name: openjpeg
+ version: 2.5.0
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ libcxx: ">=15.0.7"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.0-h4c1507b_3.conda
hash:
- md5: 068b8ae6928d477a0d216254f6eacd34
- sha256: c3a684affc774d45e6bef61306d1005a3fab75862bbe4f2adceb995e14a07193
+ md5: 4127dd217a010d9c6cbefdaae07d9f19
+ sha256: a6998c0da4643a84dc7c0b3a9e5137db258619ea922317bb7d9ae64f54b4a9ed
category: main
optional: false
- - name: dagster-graphql
- version: 1.5.9
+ - name: openpyxl
+ version: 3.1.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- requests: ""
- starlette: ""
- python: ">=3.8"
- graphene: ">=3"
- gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
+ et_xmlfile: ""
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.2-py311h459d7ec_1.conda
hash:
- md5: 7dcd105a5451f9800aa6de278d86db72
- sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
- category: dev
- optional: true
- - name: dagster-postgres
- version: 0.21.9
+ md5: 5c809fb753f06a04c2f114394404769e
+ sha256: 49cb85c8ad834e383ad447c66045e3b1beff12b209f5cde06a18c1de4e4c6754
+ category: main
+ optional: false
+ - name: openpyxl
+ version: 3.1.2
manager: conda
platform: osx-64
dependencies:
- psycopg2-binary: ""
- python: ">=3.8"
- dagster: 1.5.9.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_0.conda
+ et_xmlfile: ""
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.2-py311h2725bcf_1.conda
hash:
- md5: 18c5dd009bd4d99ec38003583134c9fc
- sha256: 83ad5a4eca4698b1258398bcd405665bbd8e41464124221cf477bb78bdc22100
+ md5: 49d96f49b6dc810211844fdb11299714
+ sha256: 0b19f81f03f1c06d0e04e59338c309d5f8ca89443e881f63abd506c78962d5a1
category: main
optional: false
- - name: fiona
- version: 1.9.5
+ - name: openpyxl
+ version: 3.1.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- attrs: ">=17"
- click: ">=4.0"
- click-plugins: ">=1.0"
- cligj: ">=0.5"
- gdal: ""
- importlib-metadata: ""
- libcxx: ">=16.0.6"
- libgdal: ">=3.8.0,<3.9.0a0"
- munch: ""
- numpy: ">=1.23.5,<2.0a0"
+ et_xmlfile: ""
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- setuptools: ""
- shapely: ""
- six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.5-py311h809632c_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.2-py311heffc1b2_0.conda
hash:
- md5: fa38d43ecb08f4db5107fc6390949414
- sha256: 80cfa5135122c959a7ec656c7c1c1fcc60398669029d86fac1cb9a3d3c5cacc1
+ md5: a08b5961a200bb86aea8625fa2826443
+ sha256: 7f29ef19fb24993653bf9034ee91a4ffca606b9b8157ef4a8a6f7b156c5a9713
category: main
optional: false
- - name: google-api-core
- version: 2.14.0
+ - name: openssl
+ version: 3.1.4
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- google-auth: ">=2.14.1,<3.0.dev0"
- googleapis-common-protos: ">=1.56.2,<2.0.dev0"
- protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- requests: ">=2.18.0,<3.0.0.dev0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
+ ca-certificates: ""
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda
hash:
- md5: cebe18c719a6818849b921748aa91750
- sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
+ md5: 412ba6938c3e2abaca8b1129ea82e238
+ sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7
category: main
optional: false
- - name: google-auth-oauthlib
- version: 1.1.0
+ - name: openssl
+ version: 3.1.4
manager: conda
platform: osx-64
dependencies:
- python: ">=3.6"
- requests-oauthlib: ">=0.7.0"
- click: ">=6.0.0"
- google-auth: ">=2.15.0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
+ ca-certificates: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.1.4-hd75f5a5_0.conda
hash:
- md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
- sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
+ md5: bc9201da6eb1e0df4107901df5371347
+ sha256: 1c436103a8de0dc82c9c56974badaa1b8b8f8cd9f37c2766bd50cd9899720f6b
category: main
optional: false
- - name: ipython
- version: 8.17.2
+ - name: openssl
+ version: 3.1.4
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- typing_extensions: ""
- decorator: ""
- __osx: ""
- exceptiongroup: ""
- stack_data: ""
- matplotlib-inline: ""
- appnope: ""
- pickleshare: ""
- python: ">=3.9"
- pygments: ">=2.4.0"
- traitlets: ">=5"
- jedi: ">=0.16"
- pexpect: ">4.3"
- prompt_toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.17.2-pyh31c8845_0.conda
+ ca-certificates: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.1.4-h0d3ecfb_0.conda
hash:
- md5: 28e743c2963d1cecaa75f7612ade74c4
- sha256: b28ec68a49d8ddc41b92f3161f536d63e62eb5493021e41bb172b5f0af54ca2d
+ md5: 5a89552fececf4cd99628318ccbb67a3
+ sha256: 3c715b1d4940c7ad6065935db18924b85a54048dde066f963cfc250340639457
category: main
optional: false
- - name: jupyter_events
- version: 0.9.0
+ - name: orc
+ version: 1.9.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- rfc3339-validator: ""
- referencing: ""
- python: ">=3.8"
- pyyaml: ">=5.3"
- rfc3986-validator: ">=0.1.1"
- traitlets: ">=5.3"
- python-json-logger: ">=2.0.4"
- jsonschema-with-format-nongpl: ">=4.18.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h4b38347_4.conda
hash:
- md5: 00ba25993f0dba38cf72a7224e33289f
- sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3
+ md5: f348d6a6bb3687dfead7c595f905732b
+ sha256: af3587f3b9a892be828d159b78379bdcd03b933c9fefddfcf105541421b77d48
category: main
optional: false
- - name: libarrow-acero
- version: 14.0.1
+ - name: orc
+ version: 1.9.0
manager: conda
platform: osx-64
dependencies:
__osx: ">=10.9"
- libarrow: 14.0.1
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-14.0.1-hc222712_3_cpu.conda
+ libcxx: ">=16.0.6"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/orc-1.9.0-hd1092d7_4.conda
hash:
- md5: 920ead842f00024ab7c3b37646288aa1
- sha256: 3c71cbabc89643b8b771ea226fe0e564baa102c06dc169cda5db033df1b2b5f2
+ md5: f6c7cd7734b3caa6d5549086590121af
+ sha256: 6a7e6835c81157ca7545917412d9d4e9bb51357d71a2e63454fe406783a55c76
category: main
optional: false
- - name: libarrow-flight
- version: 14.0.1
+ - name: orc
+ version: 1.9.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
__osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libarrow: 14.0.1
- libcxx: ">=15.0.7"
- libgrpc: ">=1.59.2,<1.60.0a0"
+ libcxx: ">=16.0.6"
libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-14.0.1-h440f1c2_3_cpu.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ snappy: ">=1.1.10,<2.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-1.9.0-h7c018df_4.conda
hash:
- md5: 729e2fc0e72d1b7b139422ed8ecf41df
- sha256: 91e001bb4208afc6fc24e3cc6bd07a2e423ab83220f659b790b1c64c1bb61af7
+ md5: 5873127225c5803d45b550024a01af1c
+ sha256: f33040335efdabbf765606b5523a5691b04547b988d65683b2671faa53bb2a1b
category: main
optional: false
- - name: libarrow-gandiva
- version: 14.0.1
+ - name: overrides
+ version: 7.4.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ typing_utils: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.4.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: 4625b7b01d7f4ac9c96300a5515acfaa
+ sha256: 29db8c3b521d261bf71897ba3cfbebc81cd61e581b30fcb984b5a713f02fe1ff
+ category: main
+ optional: false
+ - name: overrides
+ version: 7.4.0
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libcxx: ">=15.0.7"
- libllvm15: ">=15.0.7,<15.1.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libutf8proc: ">=2.8.0,<3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- re2: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-gandiva-14.0.1-heeebe7c_3_cpu.conda
+ typing_utils: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.4.0-pyhd8ed1ab_0.conda
hash:
- md5: 31559f43790c54a2494b888051b441a7
- sha256: 0658e77bf9099baf808b2fecd6b0d87f8e236ec7ccf17d0418f1cd9ac674d0ff
+ md5: 4625b7b01d7f4ac9c96300a5515acfaa
+ sha256: 29db8c3b521d261bf71897ba3cfbebc81cd61e581b30fcb984b5a713f02fe1ff
+ category: main
+ optional: false
+ - name: overrides
+ version: 7.4.0
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ typing_utils: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.4.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: 4625b7b01d7f4ac9c96300a5515acfaa
+ sha256: 29db8c3b521d261bf71897ba3cfbebc81cd61e581b30fcb984b5a713f02fe1ff
+ category: main
+ optional: false
+ - name: packaging
+ version: "23.2"
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda
+ hash:
+ md5: 79002079284aa895f883c6b7f3f88fd6
+ sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f
category: main
optional: false
- - name: libparquet
- version: 14.0.1
+ - name: packaging
+ version: "23.2"
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libcxx: ">=15.0.7"
- libthrift: ">=0.19.0,<0.19.1.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-14.0.1-h27bd29f_3_cpu.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda
hash:
- md5: e6dc5d4796ce80233fe1233e651ec983
- sha256: 92d7137e89cff12faf7f16e556bee21b71d0e1b78e3305e2e2e5da15ba8745fe
+ md5: 79002079284aa895f883c6b7f3f88fd6
+ sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f
category: main
optional: false
- - name: mapclassify
- version: 2.6.1
+ - name: packaging
+ version: "23.2"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- scikit-learn: ">=1.0"
- scipy: ">=1.8"
- numpy: ">=1.23"
- networkx: ">=2.7"
- pandas: ">=1.4,!=1.5.0"
- url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda
hash:
- md5: 6aceae1ad4f16cf7b73ee04189947f98
- sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64
+ md5: 79002079284aa895f883c6b7f3f88fd6
+ sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f
category: main
optional: false
- - name: nbclient
- version: 0.8.0
+ - name: pandas
+ version: 2.1.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- jupyter_client: ">=6.1.12"
- jupyter_core: ">=4.12,!=5.0.*"
- nbformat: ">=5.1"
- traitlets: ">=5.4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.8.1"
+ python-tzdata: ">=2022a"
+ python_abi: 3.11.*
+ pytz: ">=2020.1"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py311h320fe9a_0.conda
hash:
- md5: e78da91cf428faaf05701ce8cc8f2f9b
- sha256: 4ebd237cdf4bfa5226f92d2ae78fab8dba27696909391884dc6594ca6f9df5ff
+ md5: 3ea3486e16d559dfcb539070ed330a1e
+ sha256: d69759f8e5f3dcae2562e177cdfde5a45e4cd38db732301812aa558c1c80db57
category: main
optional: false
- - name: pygraphviz
- version: "1.11"
+ - name: pandas
+ version: 2.1.3
manager: conda
platform: osx-64
dependencies:
- graphviz: ">=8.1.0,<9.0a0"
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.8.1"
+ python-tzdata: ">=2022a"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.11-py311hc6eba27_1.conda
+ pytz: ">=2020.1"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.1.3-py311h1eadf79_0.conda
hash:
- md5: 17602bac3f0091fc1383741385b1c1b1
- sha256: b0e97e9a5bbd65edddaa9147bfb2410bbbc8105cf02dbd0c7a717355dc81ded3
- category: dev
- optional: true
- - name: recordlinkage
- version: "0.16"
+ md5: 0a1ea4be8bcc907018694b5d04ac3036
+ sha256: 2ca591570ce60be45eae8e5d39a07f08390e9ecc18997f66cb3d712953c09724
+ category: main
+ optional: false
+ - name: pandas
+ version: 2.1.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- joblib: ""
- numexpr: ""
- python: ">=3.8"
- numpy: ">=1.13"
- scikit-learn: ">=1"
- pandas: ">=1,<3"
- scipy: ">=1"
- jellyfish: ">=1"
- url: https://conda.anaconda.org/conda-forge/noarch/recordlinkage-0.16-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.8.1"
+ python-tzdata: ">=2022a"
+ python_abi: 3.11.*
+ pytz: ">=2020.1"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.1.3-py311h6e08293_0.conda
hash:
- md5: 948205d11a8b036e065c46462db0632a
- sha256: 3f3c03719d6bdef41f8a08f51fb3e58a80223a321ffca413eda0c332bfa75bf0
+ md5: 0d0ecc6bac2b7a4007bf4d96b125d674
+ sha256: eacddc0866e26372578fdeb5059e6f7edf4c6c8f59f494a8d5e64caa032b2600
category: main
optional: false
- - name: tabulator
- version: 1.53.5
+ - name: pandera-core
+ version: 0.17.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3"
- click: ">=6.0"
- six: ">=1.9"
- chardet: ">=3.0"
- unicodecsv: ">=0.14"
- requests: ">=2.8"
- boto3: ">=1.9"
- xlrd: ">=1.0"
- jsonlines: ">=1.1"
- linear-tsv: ">=1.0"
- sqlalchemy: ">=0.9.6"
- openpyxl: ">=2.6"
- ijson: ">=3.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/tabulator-1.53.5-pyhd8ed1ab_0.tar.bz2
+ multimethod: ""
+ numpy: ""
+ packaging: ""
+ pandas: ""
+ pydantic: ""
+ python: ">=3.7"
+ typeguard: ">=3.0.2"
+ typing_extensions: ""
+ typing_inspect: ">=0.6.0"
+ wrapt: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pandera-core-0.17.2-pyhd8ed1ab_1.conda
hash:
- md5: c967687222ad29a74f68e99698d08d30
- sha256: b5fb89f1154cf6b5e620c18a9c4f73c7b79afa72a7e3e840a82e225a90955335
+ md5: 5a1b3de3f435bc9d3c0ab52d45651a28
+ sha256: 298bc0b877a366af0bbae2512ec1da47e215fc6333b8b0da7571a09084307331
category: main
optional: false
- - name: dagster-webserver
- version: 1.5.9
+ - name: pandera-core
+ version: 0.17.2
manager: conda
platform: osx-64
dependencies:
- starlette: ""
- uvicorn-standard: ""
- python: ">=3.8"
- click: ">=7.0,<9.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- dagster-graphql: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
+ numpy: ""
+ pandas: ""
+ typing_extensions: ""
+ packaging: ""
+ pydantic: ""
+ wrapt: ""
+ multimethod: ""
+ python: ">=3.7"
+ typing_inspect: ">=0.6.0"
+ typeguard: ">=3.0.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/pandera-core-0.17.2-pyhd8ed1ab_1.conda
hash:
- md5: 880fa7acdbf3494cef45759bb866bb63
- sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
- category: dev
- optional: true
- - name: geopandas
- version: 0.14.1
+ md5: 5a1b3de3f435bc9d3c0ab52d45651a28
+ sha256: 298bc0b877a366af0bbae2512ec1da47e215fc6333b8b0da7571a09084307331
+ category: main
+ optional: false
+ - name: pandera-core
+ version: 0.17.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- matplotlib-base: ""
- rtree: ""
- folium: ""
- xyzservices: ""
- python: ">=3.9"
- mapclassify: ">=2.4.0"
- fiona: ">=1.8.21"
- geopandas-base: 0.14.1
- url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.1-pyhd8ed1ab_0.conda
+ numpy: ""
+ pandas: ""
+ typing_extensions: ""
+ packaging: ""
+ pydantic: ""
+ wrapt: ""
+ multimethod: ""
+ python: ">=3.7"
+ typing_inspect: ">=0.6.0"
+ typeguard: ">=3.0.2"
+ url: https://conda.anaconda.org/conda-forge/noarch/pandera-core-0.17.2-pyhd8ed1ab_1.conda
hash:
- md5: 6ce5f89fb1e2aa7e04d12c0008b3a745
- sha256: f3563ad6f1a55587c097337ece863e583c796c9a9df3ecb396bbfeec4ec309fb
+ md5: 5a1b3de3f435bc9d3c0ab52d45651a28
+ sha256: 298bc0b877a366af0bbae2512ec1da47e215fc6333b8b0da7571a09084307331
category: main
optional: false
- - name: google-cloud-core
- version: 2.3.3
+ - name: pandoc
+ version: 3.1.3
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- google-auth: ">=1.25.0,<3.0dev"
- google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
- grpcio: ">=1.38.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
+ gmp: ""
+ libzlib: ">=1.2.13,<1.3.0a0"
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.3-h32600fe_0.conda
hash:
- md5: a26b1fa8555cc1d2f0f7ff9985303e66
- sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
+ md5: 8287aeb8462e2d4b235eff788e75919d
+ sha256: 52d23e2fded05e7a19d9d7996f19ed837b46578b6e5951b8c5990cf919404ffc
category: main
optional: false
- - name: ipykernel
- version: 6.26.0
+ - name: pandoc
+ version: 3.1.3
manager: conda
platform: osx-64
dependencies:
- packaging: ""
- psutil: ""
- nest-asyncio: ""
- __osx: ""
- appnope: ""
- python: ">=3.8"
- tornado: ">=6.1"
- jupyter_client: ">=6.1.12"
- ipython: ">=7.23.1"
- matplotlib-inline: ">=0.1"
- jupyter_core: ">=4.12,!=5.0.*"
- debugpy: ">=1.6.5"
- comm: ">=0.1.1"
- pyzmq: ">=20"
- traitlets: ">=5.4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.26.0-pyh3cd1d5f_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.1.3-h9d075a6_0.conda
hash:
- md5: 3c6e2148d30e6a762d8327a433ebfb5a
- sha256: be9927d47fe23cc4d2a09d252e37e1e56ffb137767d2c0577ed882ead16f75fa
+ md5: e86a3d5c966a09b6129354114483f7a7
+ sha256: 3bc6bc31b96338c65c8f6e222bd8c65d47227ba4b59b2587157c3a29499123cc
+ category: main
+ optional: false
+ - name: pandoc
+ version: 3.1.3
+ manager: conda
+ platform: osx-arm64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.1.3-hce30654_0.conda
+ hash:
+ md5: 7edcc75acdac60dba441b229c0ec66ee
+ sha256: 858a923c8b9082791b2c13c2ff2ae87e28dd2e2655f56117c8ecb7d366002bc7
category: main
optional: false
- - name: ipywidgets
- version: 8.1.1
+ - name: pandocfilters
+ version: 1.5.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- traitlets: ">=4.3.1"
- ipython: ">=6.1.0"
- comm: ">=0.1.3"
- jupyterlab_widgets: ">=3.0.9,<3.1.0"
- widgetsnbextension: ">=4.0.9,<4.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda
+ python: "!=3.0,!=3.1,!=3.2,!=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2605fae5ee27100e5f10037baebf4d41
- sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02
+ md5: 457c2c8c08e54905d6954e79cb5b5db9
+ sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
category: main
optional: false
- - name: libarrow-dataset
- version: 14.0.1
+ - name: pandocfilters
+ version: 1.5.0
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libcxx: ">=15.0.7"
- libparquet: 14.0.1
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-14.0.1-hc222712_3_cpu.conda
+ python: "!=3.0,!=3.1,!=3.2,!=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b4e8a2dfbd7e2f2cae34158012e4d5c1
- sha256: beaf2af22a35fd4ffcf29f1b44df1ca8a77b0d9a87abff1de938aaf72b26dc4d
+ md5: 457c2c8c08e54905d6954e79cb5b5db9
+ sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
category: main
optional: false
- - name: libarrow-flight-sql
- version: 14.0.1
+ - name: pandocfilters
+ version: 1.5.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-flight: 14.0.1
- libcxx: ">=15.0.7"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-flight-sql-14.0.1-h2cc6c1c_3_cpu.conda
+ python: "!=3.0,!=3.1,!=3.2,!=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 018c16ea4875bd012b4e525246835f30
- sha256: 8f73fa15493cf0e651ae7accf9a54547967276a2ed67a7c8623eb0dabd5eb300
+ md5: 457c2c8c08e54905d6954e79cb5b5db9
+ sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
category: main
optional: false
- - name: nbconvert-core
- version: 7.11.0
+ - name: pango
+ version: 1.50.14
+ manager: conda
+ platform: linux-64
+ dependencies:
+ cairo: ">=1.16.0,<2.0a0"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ fribidi: ">=1.0.10,<2.0a0"
+ harfbuzz: ">=8.1.1,<9.0a0"
+ libgcc-ng: ">=12"
+ libglib: ">=2.76.4,<3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda
+ hash:
+ md5: 1a66c10f6a0da3dbd2f3a68127e7f6a0
+ sha256: 6ecce306b7ac4acf1184eb5b045e57e613e19e99c27d57f33eb255f8a9120a93
+ category: dev
+ optional: true
+ - name: pango
+ version: 1.50.14
manager: conda
platform: osx-64
dependencies:
- packaging: ""
- beautifulsoup4: ""
- defusedxml: ""
- bleach: ""
- tinycss2: ""
- jupyterlab_pygments: ""
- python: ">=3.8"
- jinja2: ">=3.0"
- entrypoints: ">=0.2.2"
- traitlets: ">=5.0"
- markupsafe: ">=2.0"
- pandocfilters: ">=1.4.1"
- jupyter_core: ">=4.7"
- nbformat: ">=5.1"
- pygments: ">=2.4.1"
- nbclient: ">=0.5.0"
- mistune: ">=2.0.3,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
+ cairo: ">=1.16.0,<2.0a0"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ fribidi: ">=1.0.10,<2.0a0"
+ harfbuzz: ">=8.1.1,<9.0a0"
+ libglib: ">=2.76.4,<3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pango-1.50.14-h19c1c8a_2.conda
hash:
- md5: d59e0cb1ca993f8f910cfdf393232acf
- sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
+ md5: bf0d46d9e97cb3ae5ad7ee4b688929a9
+ sha256: 639abd1c1d383fe047462ab7233b6857702d1bf40f229c337d3b59d1e5476a71
+ category: dev
+ optional: true
+ - name: pango
+ version: 1.50.14
+ manager: conda
+ platform: osx-arm64
+ dependencies:
+ cairo: ">=1.16.0,<2.0a0"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ fribidi: ">=1.0.10,<2.0a0"
+ harfbuzz: ">=8.1.1,<9.0a0"
+ libglib: ">=2.76.4,<3.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.50.14-hcf40dda_2.conda
+ hash:
+ md5: 79026cbb74d69b444e5dc2be0fb4b4a9
+ sha256: e17f649192ce06c68893b50fa2492db87d2d82ae6d3c6058cc62dcc44dde8b2e
+ category: dev
+ optional: true
+ - name: parso
+ version: 0.8.3
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2
+ hash:
+ md5: 17a565a0c3899244e938cdf417e7b094
+ sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4
category: main
optional: false
- - name: tableschema
- version: 1.19.3
+ - name: parso
+ version: 0.8.3
manager: conda
platform: osx-64
dependencies:
- python: ""
- python-dateutil: ">=2.4"
- six: ">=1.9"
- jsonschema: ">=2.5"
- requests: ">=2.5"
- unicodecsv: ">=0.14"
- isodate: ">=0.5.4"
- click: ">=3.3"
- rfc3986: ">=1.1.0"
- cached-property: ">=1.5"
- tabulator: ">=1.29"
- url: https://conda.anaconda.org/conda-forge/noarch/tableschema-1.19.3-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 57f70b39e74b4af667775c0a07f35cc3
- sha256: bc96dd4ee4d7ee5d6753158ba50aacd08c80a657847d6771cc4c56da538437e7
+ md5: 17a565a0c3899244e938cdf417e7b094
+ sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4
category: main
optional: false
- - name: datapackage
- version: 1.15.2
+ - name: parso
+ version: 0.8.3
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ""
- six: ">=1.10"
- jsonschema: ">=2.5"
- unicodecsv: ">=0.14"
- requests: ">=2.8"
- click: ">=6.7"
- cchardet: ">=1.0"
- jsonpointer: ">=1.10"
- tableschema: ">=1.1.0"
- tabulator: ">=1.24.2"
- url: https://conda.anaconda.org/conda-forge/noarch/datapackage-1.15.2-pyh44b312d_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3f1a6895ab9c423cf59de7c46e56a824
- sha256: 3344e3c1ea6a1925504f7cbfba6f4be6521465baa2de6bac86769528ea1c3d0d
+ md5: 17a565a0c3899244e938cdf417e7b094
+ sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4
category: main
optional: false
- - name: google-cloud-storage
- version: 2.13.0
+ - name: partd
+ version: 1.4.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- requests: ">=2.18.0,<3.0.0dev"
- google-api-core: ">=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
- google-cloud-core: ">=2.3.0,<3.0dev"
- google-crc32c: ">=1.0,<2.0dev"
- protobuf: <5.0.0dev
- google-resumable-media: ">=2.6.0"
- google-auth: ">=2.23.3,<3.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
+ locket: ""
+ python: ">=3.7"
+ toolz: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda
hash:
- md5: fa7d4b2576d98b63d8ca84c76052eb95
- sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
+ md5: acf4b7c0bcd5fa3b0e05801c4d2accd6
+ sha256: b248238da2bb9dfe98e680af911dc7013af86095e3ec8baf08905555632d34c7
category: main
optional: false
- - name: jupyter_console
- version: 6.6.3
+ - name: partd
+ version: 1.4.1
manager: conda
platform: osx-64
dependencies:
- ipython: ""
- pygments: ""
+ toolz: ""
+ locket: ""
python: ">=3.7"
- pyzmq: ">=17"
- jupyter_core: ">=4.12,!=5.0.*"
- jupyter_client: ">=7.0.0"
- ipykernel: ">=6.14"
- traitlets: ">=5.4"
- prompt_toolkit: ">=3.0.30"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 7cf6f52a66f8e3cd9d8b6c231262dcab
- sha256: 4e51764d5fe2f6e43d83bcfbcf8b4da6569721bf82eaf4d647be8717cd6be75a
+ md5: acf4b7c0bcd5fa3b0e05801c4d2accd6
+ sha256: b248238da2bb9dfe98e680af911dc7013af86095e3ec8baf08905555632d34c7
category: main
optional: false
- - name: jupyter_server
- version: 2.10.1
+ - name: partd
+ version: 1.4.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- packaging: ""
- jinja2: ""
- prometheus_client: ""
- websocket-client: ""
- argon2-cffi: ""
- overrides: ""
- jupyter_server_terminals: ""
- python: ">=3.8"
- terminado: ">=0.8.3"
- jupyter_core: ">=4.12,!=5.0.*"
- nbconvert-core: ">=6.4.4"
- tornado: ">=6.2.0"
- jupyter_client: ">=7.4.4"
- nbformat: ">=5.3.0"
- pyzmq: ">=24"
- traitlets: ">=5.6.0"
- anyio: ">=3.1.0"
- send2trash: ">=1.8.2"
- jupyter_events: ">=0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.1-pyhd8ed1ab_0.conda
+ toolz: ""
+ locket: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 7d15498584d83de3b357425e37086397
- sha256: b8b55ee57785b39a9096884bfd1da3858da8f27764572321d51a3dd0a990de86
+ md5: acf4b7c0bcd5fa3b0e05801c4d2accd6
+ sha256: b248238da2bb9dfe98e680af911dc7013af86095e3ec8baf08905555632d34c7
category: main
optional: false
- - name: libarrow-substrait
- version: 14.0.1
+ - name: pastel
+ version: 0.2.1
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libarrow-dataset: 14.0.1
- libcxx: ">=15.0.7"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-14.0.1-h2cc6c1c_3_cpu.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: eb66f8083a629917f4ecb94351ca1903
- sha256: fc51009762be7f0f5abc1ffed1b413122422a21bc2a309abbdb537a76b939b54
+ md5: a4eea5bff523f26442405bc5d1f52adb
+ sha256: 9153f0f38c76a09da7688a61fdbf8f3d7504e2326bef53e4ec20d994311b15bd
category: main
optional: false
- - name: nbconvert-pandoc
- version: 7.11.0
+ - name: pastel
+ version: 0.2.1
manager: conda
platform: osx-64
dependencies:
- pandoc: ""
- python: ">=3.8"
- nbconvert-core: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 51bd005efab7e5c5c2af2570327bd213
- sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ md5: a4eea5bff523f26442405bc5d1f52adb
+ sha256: 9153f0f38c76a09da7688a61fdbf8f3d7504e2326bef53e4ec20d994311b15bd
category: main
optional: false
- - name: qtconsole-base
- version: 5.5.1
+ - name: pastel
+ version: 0.2.1
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- packaging: ""
- pygments: ""
- traitlets: ""
- jupyter_core: ""
- python: ">=3.8"
- ipykernel: ">=4.1"
- jupyter_client: ">=4.1"
- qtpy: ">=2.4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 5528a3eda283b421055c89bface19a1c
- sha256: e81a294941a598aabfd9462cf9aaa3b3e2c04996420f82494bdc13233de8ca70
+ md5: a4eea5bff523f26442405bc5d1f52adb
+ sha256: 9153f0f38c76a09da7688a61fdbf8f3d7504e2326bef53e4ec20d994311b15bd
category: main
optional: false
- - name: gcsfs
- version: 2023.10.0
+ - name: pbr
+ version: 6.0.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- requests: ""
- aiohttp: ""
- google-auth-oauthlib: ""
- python: ">=3.7"
- google-auth: ">=1.2"
- decorator: ">4.1.2"
- google-cloud-storage: ">1.40"
- fsspec: 2023.10.0
- url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.10.0-pyhd8ed1ab_0.conda
+ pip: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 500521931bdcc0f6d19c1c2e2ab4a5d9
- sha256: dd7559c5297359e475a125742e9cb30938579e93a17ce7537af64a04c98407a5
+ md5: 8dbab5ba746ed14aa32cb232dc437f8f
+ sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87
category: main
optional: false
- - name: jupyter-lsp
- version: 2.2.0
+ - name: pbr
+ version: 6.0.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- importlib-metadata: ">=4.8.3"
- jupyter_server: ">=1.1.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda
+ pip: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 38589f4104d11f2a59ff01a9f4e3bfb3
- sha256: 16fc7b40024adece716ba7227e5c123a2deccc13f946a10d9a3270493908d11c
+ md5: 8dbab5ba746ed14aa32cb232dc437f8f
+ sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87
category: main
optional: false
- - name: jupyter-resource-usage
- version: 1.0.1
+ - name: pbr
+ version: 6.0.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.8"
- jupyter_server: ">=2.0.0,<3"
- psutil: ">=5.6.0,<6"
- pyzmq: ">=19"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-1.0.1-pyhd8ed1ab_0.conda
+ pip: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda
hash:
- md5: b079fd1b0ee75199a042537d036b496f
- sha256: 076d6cc25e0338e725a653eb0bb468ba920e49449143335696581fe98f86853b
- category: dev
- optional: true
- - name: jupyterlab_server
- version: 2.25.1
+ md5: 8dbab5ba746ed14aa32cb232dc437f8f
+ sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87
+ category: main
+ optional: false
+ - name: pcre2
+ version: "10.42"
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- packaging: ">=21.3"
- jinja2: ">=3.0.3"
- importlib-metadata: ">=4.8.3"
- jupyter_server: ">=1.21,<3"
- babel: ">=2.10"
- json5: ">=0.9.0"
- requests: ">=2.31"
- jsonschema: ">=4.18"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.1-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libgcc-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda
hash:
- md5: 5cf15f8fd42c77af4eb1611fe614df2f
- sha256: 5f373d9adc11b6d49bee06a4c6bea9623fff1d2a0b798edc2e3f594680aa18f3
+ md5: 679c8961826aa4b50653bce17ee52abe
+ sha256: 3ca54ff0abcda964af7d4724d389ae20d931159ae1881cfe57ad4b0ab9e6a380
category: main
optional: false
- - name: nbconvert
- version: 7.11.0
+ - name: pcre2
+ version: "10.42"
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- nbconvert-core: 7.11.0
- nbconvert-pandoc: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.42-h0ad2156_0.conda
hash:
- md5: e492b36cbea1c83d1663fa73a8abff9b
- sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
+ md5: 41de8bab2d5e5cd6daaba1896e81d366
+ sha256: 689559d94b64914e503d2ced53b78afc19562ed1ccfb284040797a6d41bb564c
category: main
optional: false
- - name: notebook-shim
- version: 0.2.3
+ - name: pcre2
+ version: "10.42"
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.7"
- jupyter_server: ">=1.8,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.42-h26f9a81_0.conda
hash:
- md5: 67e0fe74c156267d9159e9133df7fd37
- sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538
+ md5: 3e12888ecc8ee1ebee2eef9b7856357a
+ sha256: 0335a08349ecd8dce0b81699fcd61b58415e658fe953feb27316fbb994df0685
category: main
optional: false
- - name: pyarrow
- version: 14.0.1
+ - name: pendulum
+ version: 2.1.2
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libarrow-dataset: 14.0.1
- libarrow-flight: 14.0.1
- libarrow-flight-sql: 14.0.1
- libarrow-gandiva: 14.0.1
- libarrow-substrait: 14.0.1
- libcxx: ">=15.0.7"
- libparquet: 14.0.1
- numpy: ">=1.23.5,<2.0a0"
+ libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.6,<3.0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.1-py311h98a0319_3_cpu.conda
+ pytzdata: ">=2020.1"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pendulum-2.1.2-py311h459d7ec_6.conda
hash:
- md5: f574fa744f76f78af4287040a79072bb
- sha256: 6f54b81c50c5f383614b98bf05f2aff01a1831c42576557a606325753d2f7581
+ md5: 7ada98068961b6a6f1f620dcbfedd1ec
+ sha256: 59a97ea22e5bbc42981af7625b780b29eee6680bd91c52695b4e388ce786e65b
category: main
optional: false
- - name: jupyterlab
- version: 4.0.8
- manager: conda
- platform: osx-64
- dependencies:
- packaging: ""
- traitlets: ""
- tomli: ""
- ipykernel: ""
- jupyter_core: ""
- python: ">=3.8"
- jinja2: ">=3.0.3"
- tornado: ">=6.2.0"
- importlib_metadata: ">=4.8.3"
- jupyter_server: ">=2.4.0,<3"
- importlib_resources: ">=1.4"
- jupyter-lsp: ">=2.0.0"
- async-lru: ">=1.0.0"
- jupyterlab_server: ">=2.19.0,<3"
- notebook-shim: ">=0.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.8-pyhd8ed1ab_0.conda
- hash:
- md5: 299796efa08ad91c602fa4d0c5ecc86f
- sha256: fe5ca6c8bbda69af332593d7f9592aa19d9ab98d34c647ed0d8fbbae88b29a95
- category: dev
- optional: true
- - name: notebook
- version: 7.0.6
+ - name: pendulum
+ version: 2.1.2
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
- tornado: ">=6.2.0"
- jupyter_server: ">=2.4.0,<3"
- jupyterlab_server: ">=2.22.1,<3"
- notebook-shim: ">=0.2,<0.3"
- jupyterlab: ">=4.0.7,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.6-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.6,<3.0"
+ python_abi: 3.11.*
+ pytzdata: ">=2020.1"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pendulum-2.1.2-py311h2725bcf_6.conda
hash:
- md5: d60881c78a54cbf8042ae719f1f77a50
- sha256: 5259ad2fb47300407dafa6ea5e78085a2c8de8dcdbfbaa58592bf2677d7187a9
+ md5: 451e4c395833a2cbdc1e25bfc768798d
+ sha256: 1ed3d1795718a165f94da87486025ddfbdf96ac74e9bbb5eb65f3369b7193c0b
category: main
optional: false
- - name: jupyter
- version: 1.0.0
+ - name: pendulum
+ version: 2.1.2
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- ipywidgets: ""
- notebook: ""
- ipykernel: ""
- nbconvert: ""
- qtconsole-base: ""
- jupyter_console: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda
+ python: ">=3.11,<3.12.0a0"
+ python-dateutil: ">=2.6,<3.0"
+ python_abi: 3.11.*
+ pytzdata: ">=2020.1"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pendulum-2.1.2-py311heffc1b2_6.conda
hash:
- md5: 056b8cc3d9b03f54fc49e6d70d7dc359
- sha256: 308b521b149e7a1739f717538b929bc2d87b9001b94f13ee8baa939632a86150
+ md5: f21ea89567e58aa645e40ded47edbdcb
+ sha256: 9530a44bc2eb93c67ce0dbaf899e7146587d94b50f7b2da755ca08ad24ed96d6
category: main
optional: false
- - name: sphinx-autoapi
- version: 3.0.0
+ - name: petl
+ version: 1.7.14
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- pyyaml: ""
- jinja2: ""
- anyascii: ""
- python: ">=3.8"
- astroid: ">=2.7"
- sphinx: ">=6.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-3.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.14-pyhd8ed1ab_0.conda
hash:
- md5: 736b53813c2b9582b1345462d8ca66e7
- sha256: 61d127c9e32176ac75a24b85c4d1ba3e8cf7e638884331429752a2da6a3ac63a
+ md5: 65813db01f2331768d909c0852ff5d70
+ sha256: f802a980b04ea3355831be31c4b94421040ec95902e203ea08c2e3fc0a1f4286
category: main
optional: false
- - name: sphinx-basic-ng
- version: 1.0.0b2
+ - name: petl
+ version: 1.7.14
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- sphinx: ">=4.0,<8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.14-pyhd8ed1ab_0.conda
hash:
- md5: a631f5c7b7f5045448f966ad71aa2881
- sha256: 3c7a6a8bb6c9921741ef940cd61ff1694beac3c95ca7e9ad4b0ea32e2f6ac2fa
+ md5: 65813db01f2331768d909c0852ff5d70
+ sha256: f802a980b04ea3355831be31c4b94421040ec95902e203ea08c2e3fc0a1f4286
category: main
optional: false
- - name: furo
- version: 2023.9.10
+ - name: petl
+ version: 1.7.14
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- beautifulsoup4: ""
- sphinx-basic-ng: ""
- python: ">=3.7"
- pygments: ">=2.7"
- sphinx: ">=6.0,<8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.9.10-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.14-pyhd8ed1ab_0.conda
hash:
- md5: 0dcfacf6d3e49f2957c69c81356cf892
- sha256: 95f69e36078dd598f5b28b2e0d7ff94946170af9f990b7474ee5501378203bc3
+ md5: 65813db01f2331768d909c0852ff5d70
+ sha256: f802a980b04ea3355831be31c4b94421040ec95902e203ea08c2e3fc0a1f4286
category: main
optional: false
- - name: sphinx-issues
- version: 1.2.0
+ - name: pexpect
+ version: 4.8.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
+ ptyprocess: ">=0.5"
python: ""
- sphinx: ""
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-issues-1.2.0-py_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2
hash:
- md5: 2d5c0dddca9bb724dcf5a3fb295a2266
- sha256: 9d98392bff12194c45c6f13c6c93d0b15b2fe489de5746654e732009fce41a86
+ md5: 330448ce4403cc74990ac07c555942a1
+ sha256: 07706c0417ead94f359ca7278f65452d3c396448777aba1da6a11fc351bdca9a
category: main
optional: false
- - name: sphinx-reredirects
- version: 0.1.2
+ - name: pexpect
+ version: 4.8.0
manager: conda
platform: osx-64
dependencies:
- sphinx: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-reredirects-0.1.2-pyhd8ed1ab_0.conda
+ python: ""
+ ptyprocess: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2
hash:
- md5: 30e618adaaf11aa4a98912913c62a12b
- sha256: bcc792d6fbfc06298d23e98216d1aeca95eb69005ce8176094128990aed1f11c
+ md5: 330448ce4403cc74990ac07c555942a1
+ sha256: 07706c0417ead94f359ca7278f65452d3c396448777aba1da6a11fc351bdca9a
category: main
optional: false
- - name: sphinxcontrib-applehelp
- version: 1.0.7
+ - name: pexpect
+ version: 4.8.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda
+ python: ""
+ ptyprocess: ">=0.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2
hash:
- md5: aebfabcb60c33a89c1f9290cab49bc93
- sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3
+ md5: 330448ce4403cc74990ac07c555942a1
+ sha256: 07706c0417ead94f359ca7278f65452d3c396448777aba1da6a11fc351bdca9a
category: main
optional: false
- - name: sphinxcontrib-bibtex
- version: 2.6.1
+ - name: pickleshare
+ version: 0.7.5
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- dataclasses: ""
- python: ">=3.7"
- pybtex: ">=0.24"
- importlib_metadata: ">=3.6"
- pybtex-docutils: ">=1"
- docutils: ">=0.8,!=0.18.*,!=0.19.*"
- sphinx: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.1-pyhd8ed1ab_1.conda
+ python: ">=3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
hash:
- md5: 109cf3a7c844834267057e80b4f4eae3
- sha256: 2d04d3e165c0959d995faab5ccd5fa3581016c02fb94df4eb5d0e0a89fe9ff50
+ md5: 415f0ebb6198cc2801c73438a9fb5761
+ sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738
category: main
optional: false
- - name: sphinxcontrib-devhelp
- version: 1.0.5
+ - name: pickleshare
+ version: 0.7.5
manager: conda
platform: osx-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda
+ python: ">=3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
hash:
- md5: ebf08f5184d8eaa486697bc060031953
- sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672
+ md5: 415f0ebb6198cc2801c73438a9fb5761
+ sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738
category: main
optional: false
- - name: sphinxcontrib-htmlhelp
- version: 2.0.4
+ - name: pickleshare
+ version: 0.7.5
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda
+ python: ">=3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
hash:
- md5: a9a89000dfd19656ad004b937eeb6828
- sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5
+ md5: 415f0ebb6198cc2801c73438a9fb5761
+ sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738
category: main
optional: false
- - name: sphinxcontrib-qthelp
- version: 1.0.6
+ - name: pillow
+ version: 10.1.0
manager: conda
- platform: osx-64
+ platform: linux-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda
+ freetype: ">=2.12.1,<3.0a0"
+ lcms2: ">=2.15,<3.0a0"
+ libgcc-ng: ">=12"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libxcb: ">=1.15,<1.16.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ tk: ">=8.6.13,<8.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.1.0-py311ha6c5da5_0.conda
hash:
- md5: cf5c9649272c677a964a7313279e3a9b
- sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471
+ md5: 83a988daf5c49e57f7d2086fb6781fe8
+ sha256: 5b037243f76644fe2e565aa6a3764039dba47cddf8bbef8ef01643775a459b60
category: main
optional: false
- - name: sphinx
- version: 7.2.6
+ - name: pillow
+ version: 10.1.0
manager: conda
platform: osx-64
dependencies:
- sphinxcontrib-jsmath: ""
- sphinxcontrib-applehelp: ""
- sphinxcontrib-devhelp: ""
- sphinxcontrib-qthelp: ""
- python: ">=3.9"
- jinja2: ">=3.0"
- packaging: ">=21.0"
- alabaster: ">=0.7,<0.8"
- requests: ">=2.25.0"
- colorama: ">=0.4.5"
- pygments: ">=2.14"
- sphinxcontrib-htmlhelp: ">=2.0.0"
- importlib-metadata: ">=4.8"
- babel: ">=2.9"
- imagesize: ">=1.3"
- snowballstemmer: ">=2.0"
- docutils: ">=0.18.1,<0.21"
- sphinxcontrib-serializinghtml: ">=1.1.9"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda
+ freetype: ">=2.12.1,<3.0a0"
+ lcms2: ">=2.15,<3.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libxcb: ">=1.15,<1.16.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ tk: ">=8.6.13,<8.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pillow-10.1.0-py311hea5c87a_0.conda
hash:
- md5: bbfd1120d1824d2d073bc65935f0e4c0
- sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42
+ md5: ffff517d90b21a5d44ef907a5a01f695
+ sha256: 44bb951ae60cc96ab9273592ede9ee94a422857e857e52c55c261ad5f1525686
category: main
optional: false
- - name: sphinxcontrib-serializinghtml
- version: 1.1.9
+ - name: pillow
+ version: 10.1.0
manager: conda
- platform: osx-64
+ platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda
+ freetype: ">=2.12.1,<3.0a0"
+ lcms2: ">=2.15,<3.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libwebp-base: ">=1.3.2,<2.0a0"
+ libxcb: ">=1.15,<1.16.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ tk: ">=8.6.13,<8.7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.1.0-py311hb9c5795_0.conda
hash:
- md5: 0612e497d7860728f2cda421ea2aec09
- sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d
+ md5: 90fd1f60da9f3d5eccdece0945043037
+ sha256: 9699ba6886e94e32eb949009195ed78c2c949f74450235af491cd4cbe390d7b4
category: main
optional: false
- - name: aws-c-common
- version: 0.9.8
+ - name: pint
+ version: "0.22"
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.8-h93a5062_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.9"
+ typing_extensions: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
hash:
- md5: cde0cd0c85e62c192da64c49130a7ccd
- sha256: 811730643b941f7b3419fdba4824aaac745944e4bcc462c5737ba4025213158e
+ md5: a719c3f3959c529e558e9ed9f98c3f30
+ sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
category: main
optional: false
- - name: bzip2
- version: 1.0.8
+ - name: pint
+ version: "0.22"
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h93a5062_5.conda
+ platform: osx-64
+ dependencies:
+ typing_extensions: ""
+ python: ">=3.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
hash:
- md5: 1bbc659ca658bfd49a481b5ef7a0f40f
- sha256: bfa84296a638bea78a8bb29abc493ee95f2a0218775642474a840411b950fe5f
+ md5: a719c3f3959c529e558e9ed9f98c3f30
+ sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
category: main
optional: false
- - name: c-ares
- version: 1.21.0
+ - name: pint
+ version: "0.22"
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.21.0-h93a5062_0.conda
+ dependencies:
+ typing_extensions: ""
+ python: ">=3.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
hash:
- md5: b3679505660f03e94430de5ea72114bd
- sha256: 1f6436eb0bc3c6d6e14ae83610f821b2d55c4b1fd343bbeefd60a0e48fabe63d
+ md5: a719c3f3959c529e558e9ed9f98c3f30
+ sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
category: main
optional: false
- - name: ca-certificates
- version: 2023.7.22
+ - name: pip
+ version: 23.3.1
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2023.7.22-hf0a4a13_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.7"
+ setuptools: ""
+ wheel: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda
hash:
- md5: e1b99ac4dbcee71a71682996f67f7965
- sha256: b220c001b0c1448a47cc49b42a622e06a540ec60b3f7a1e057fca1f37ce515e4
+ md5: 2400c0b86889f43aa52067161e1fb108
+ sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563
category: main
optional: false
- - name: font-ttf-dejavu-sans-mono
- version: "2.37"
+ - name: pip
+ version: 23.3.1
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2
+ platform: osx-64
+ dependencies:
+ setuptools: ""
+ wheel: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda
hash:
- md5: 0c96522c6bdaed4b1566d11387caaf45
- sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b
+ md5: 2400c0b86889f43aa52067161e1fb108
+ sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563
category: main
optional: false
- - name: font-ttf-inconsolata
- version: "3.000"
+ - name: pip
+ version: 23.3.1
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2
+ dependencies:
+ setuptools: ""
+ wheel: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda
hash:
- md5: 34893075a5c9e55cdafac56607368fc6
- sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c
+ md5: 2400c0b86889f43aa52067161e1fb108
+ sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563
category: main
optional: false
- - name: font-ttf-source-code-pro
- version: "2.038"
+ - name: pixman
+ version: 0.42.2
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2
+ platform: linux-64
+ dependencies:
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.42.2-h59595ed_0.conda
hash:
- md5: 4d59c254e01d9cde7957100457e2d5fb
- sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139
+ md5: 700edd63ccd5fc66b70b1c028cea9a68
+ sha256: ae917851474eb3b08812b02c9e945d040808523ec53f828aa74a90b0cdf15f57
category: main
optional: false
- - name: font-ttf-ubuntu
- version: "0.83"
+ - name: pixman
+ version: 0.42.2
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2
+ platform: osx-64
+ dependencies:
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.42.2-he965462_0.conda
hash:
- md5: 19410c3df09dfb12d1206132a1d357c5
- sha256: 470d5db54102bd51dbb0c5990324a2f4a0bc976faa493b22193338adb9882e2e
+ md5: e4180dcfd3e3621560fe1ad522997520
+ sha256: d9181736d4b3260a03443e8fd1c47c491e189b2344913eaf5dead27947a274e4
category: main
optional: false
- - name: fribidi
- version: 1.0.10
+ - name: pixman
+ version: 0.42.2
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2
+ dependencies:
+ libcxx: ">=15.0.7"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.42.2-h13dd4ca_0.conda
hash:
- md5: c64443234ff91d70cb9c7dc926c58834
- sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303
- category: dev
- optional: true
- - name: giflib
- version: 5.2.1
+ md5: f96347021db6f33ccabe314ddeab62d4
+ sha256: 90e60dc5604e356d47ef97b23b13759ef3d8b70fa2c637f4809d29851435d7d7
+ category: main
+ optional: false
+ - name: pkginfo
+ version: 1.9.6
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.1-h1a8c8d9_3.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
hash:
- md5: f39a05d3dbb0e5024b7deabb2c0993f1
- sha256: dbf1e431d3e5e03f8eeb77ec08a4c5d6d5d9af84dbef13d4365e397dd389beb8
+ md5: be1e9f1c65a1ed0f2ae9352fec99db64
+ sha256: 7ea5a5af62a15376d9f4f9f3c134874d0b0710f39be719e849b7fa9ca8870502
category: main
optional: false
- - name: icu
- version: "73.2"
+ - name: pkginfo
+ version: 1.9.6
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
hash:
- md5: 8521bd47c0e11c5902535bb1a17c565f
- sha256: ff9cd0c6cd1349954c801fb443c94192b637e1b414514539f3c49c56a39f51b1
+ md5: be1e9f1c65a1ed0f2ae9352fec99db64
+ sha256: 7ea5a5af62a15376d9f4f9f3c134874d0b0710f39be719e849b7fa9ca8870502
category: main
optional: false
- - name: json-c
- version: "0.17"
+ - name: pkginfo
+ version: 1.9.6
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.17-h40ed0f5_0.conda
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
hash:
- md5: 7de5604deb99090c8e8c4863f60568d1
- sha256: d47138a2829ce47d2e9ec1dbe108d1a6fe58c5d8724ea904985a420ad760f93f
+ md5: be1e9f1c65a1ed0f2ae9352fec99db64
+ sha256: 7ea5a5af62a15376d9f4f9f3c134874d0b0710f39be719e849b7fa9ca8870502
category: main
optional: false
- - name: libboost-headers
- version: 1.82.0
+ - name: pkgutil-resolve-name
+ version: 1.3.10
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.82.0-hce30654_6.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
hash:
- md5: ae7c68cf82c23fe6c68f0efa064ef41a
- sha256: 19cc7fff73fda78f142a875f06f2467fcbfc5c8c3e0db92b212e425de309a27d
+ md5: 405678b942f2481cecdb3e010f4925d9
+ sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
category: main
optional: false
- - name: libbrotlicommon
- version: 1.1.0
+ - name: pkgutil-resolve-name
+ version: 1.3.10
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
hash:
- md5: cd68f024df0304be41d29a9088162b02
- sha256: 556f0fddf4bd4d35febab404d98cb6862ce3b7ca843e393da0451bfc4654cf07
+ md5: 405678b942f2481cecdb3e010f4925d9
+ sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
category: main
optional: false
- - name: libcxx
- version: 16.0.6
+ - name: pkgutil-resolve-name
+ version: 1.3.10
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-16.0.6-h4653b0c_0.conda
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
hash:
- md5: 9d7d724faf0413bf1dbc5a85935700c8
- sha256: 11d3fb51c14832d9e4f6d84080a375dec21ea8a3a381a1910e67ff9cedc20355
+ md5: 405678b942f2481cecdb3e010f4925d9
+ sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
category: main
optional: false
- - name: libdeflate
- version: "1.19"
+ - name: platformdirs
+ version: 4.0.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.19-hb547adb_0.conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.7"
+ typing_extensions: ">=4.7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: f8c1eb0e99e90b55965c6558578537cc
- sha256: 6a3d188a6ae845a742dc85c5fb3f7eb1e252726cd74f0b8a7fa25ec09db6b87a
+ md5: 6bb4ee32cd435deaeac72776c001e7ac
+ sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937
category: main
optional: false
- - name: libev
- version: "4.33"
+ - name: platformdirs
+ version: 4.0.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h642e427_1.tar.bz2
+ platform: osx-64
+ dependencies:
+ python: ">=3.7"
+ typing_extensions: ">=4.7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 566dbf70fe79eacdb3c3d3d195a27f55
- sha256: eb7325eb2e6bd4c291cb9682781b35b8c0f68cb72651c35a5b9dd22707ebd25c
+ md5: 6bb4ee32cd435deaeac72776c001e7ac
+ sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937
category: main
optional: false
- - name: libexpat
- version: 2.5.0
+ - name: platformdirs
+ version: 4.0.0
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.5.0-hb7217d7_1.conda
+ dependencies:
+ python: ">=3.7"
+ typing_extensions: ">=4.7.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 5a097ad3d17e42c148c9566280481317
- sha256: 7d143a9c991579ad4207f84c632650a571c66329090daa32b3c87cf7311c3381
+ md5: 6bb4ee32cd435deaeac72776c001e7ac
+ sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937
category: main
optional: false
- - name: libffi
- version: 3.4.2
+ - name: pluggy
+ version: 1.3.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2
+ platform: linux-64
+ dependencies:
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 086914b672be056eb70fd4285b6783b6
- sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca
+ md5: 2390bd10bed1f3fdc7a537fb5a447d8d
+ sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5
category: main
optional: false
- - name: libiconv
- version: "1.17"
+ - name: pluggy
+ version: 1.3.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-he4db4b2_0.tar.bz2
+ platform: osx-64
+ dependencies:
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 686f9c755574aa221f29fbcf36a67265
- sha256: 2eb33065783b802f71d52bef6f15ce0fafea0adc8506f10ebd0d490244087bec
+ md5: 2390bd10bed1f3fdc7a537fb5a447d8d
+ sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5
category: main
optional: false
- - name: libjpeg-turbo
- version: 3.0.0
+ - name: pluggy
+ version: 1.3.0
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda
+ dependencies:
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1
- sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993
+ md5: 2390bd10bed1f3fdc7a537fb5a447d8d
+ sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5
category: main
optional: false
- - name: libsodium
- version: 1.0.18
+ - name: poppler
+ version: 23.11.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2
+ platform: linux-64
+ dependencies:
+ cairo: ">=1.18.0,<2.0a0"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ lcms2: ">=2.15,<3.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libgcc-ng: ">=12"
+ libglib: ">=2.78.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libstdcxx-ng: ">=12"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ nspr: ">=4.35,<5.0a0"
+ nss: ">=3.94,<4.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ poppler-data: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/poppler-23.11.0-h590f24d_0.conda
hash:
- md5: 90859688dbca4735b74c02af14c4c793
- sha256: 1d95fe5e5e6a0700669aab454b2a32f97289c9ed8d1f7667c2ba98327a6f05bc
+ md5: 671439d8eca2084bb5a75561fff23a85
+ sha256: 8050002e01be124efcb82e32e740676f5ed7dfe852f335408554e6dc3b060ad9
category: main
optional: false
- - name: libtool
- version: 2.4.7
+ - name: poppler
+ version: 23.11.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libtool-2.4.7-hb7217d7_0.conda
+ platform: osx-64
+ dependencies:
+ __osx: ">=10.9"
+ cairo: ">=1.18.0,<2.0a0"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ lcms2: ">=2.15,<3.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
+ libglib: ">=2.78.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ nspr: ">=4.35,<5.0a0"
+ nss: ">=3.94,<4.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ poppler-data: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/poppler-23.11.0-hdd5a5e8_0.conda
hash:
- md5: fe8efc3385f58f0055e8100b07225055
- sha256: efe50471d2baea151f2a93f1f99c05553f8c88e3f0065cdc267e1aa2e8c42449
- category: dev
- optional: true
- - name: libutf8proc
- version: 2.8.0
+ md5: 60ffe2d3a09ff99eb2601487d6ddaeea
+ sha256: fb6a53ddac3fa8c097b4a0b7d2f40219b13bfa3324147aaf6c5a14ee5fb27521
+ category: main
+ optional: false
+ - name: poppler
+ version: 23.11.0
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2
+ dependencies:
+ __osx: ">=10.9"
+ cairo: ">=1.18.0,<2.0a0"
+ fontconfig: ">=2.14.2,<3.0a0"
+ fonts-conda-ecosystem: ""
+ freetype: ">=2.12.1,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ lcms2: ">=2.15,<3.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
+ libglib: ">=2.78.0,<3.0a0"
+ libiconv: ">=1.17,<2.0a0"
+ libjpeg-turbo: ">=3.0.0,<4.0a0"
+ libpng: ">=1.6.39,<1.7.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ nspr: ">=4.35,<5.0a0"
+ nss: ">=3.94,<4.0a0"
+ openjpeg: ">=2.5.0,<3.0a0"
+ poppler-data: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.11.0-hcdd998b_0.conda
hash:
- md5: f8c9c41a122ab3abdf8943b13f4957ee
- sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a
+ md5: 19386a03a7c57a378953bafb4f598156
+ sha256: a6677b507cbdb6202c872aa461b4bf8cfcbe5791721fe1f42615b89205d4a4a6
category: main
optional: false
- - name: libuv
- version: 1.46.0
+ - name: poppler-data
+ version: 0.4.12
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.46.0-hb547adb_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda
hash:
- md5: 5f1d535f82e8210ac80d191610b92325
- sha256: f2fe8e22a99f91761c16dc7b00408bff0f5c30d4cccc6ea562db00a4041c5579
+ md5: d8d7293c5b37f39b2ac32940621c6592
+ sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf
category: main
optional: false
- - name: libwebp-base
- version: 1.3.2
+ - name: poppler-data
+ version: 0.4.12
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.3.2-hb547adb_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda
hash:
- md5: 85dbc11098cdbe4244cd73f29a3ab795
- sha256: a159b848193043fb58465ae6a449361615dadcf27babfe0b18db2bd3eb59e958
+ md5: d8d7293c5b37f39b2ac32940621c6592
+ sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf
category: main
optional: false
- - name: libzlib
- version: 1.2.13
+ - name: poppler-data
+ version: 0.4.12
manager: conda
platform: osx-arm64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.2.13-h53f4e23_5.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda
hash:
- md5: 1a47f5236db2e06a320ffa0392f81bd8
- sha256: ab1c8aefa2d54322a63aaeeefe9cf877411851738616c4068e0dccc66b9c758a
+ md5: d8d7293c5b37f39b2ac32940621c6592
+ sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf
category: main
optional: false
- - name: llvm-openmp
- version: 17.0.5
+ - name: postgresql
+ version: "16.1"
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-17.0.5-hcd81f8e_0.conda
+ platform: linux-64
+ dependencies:
+ krb5: ">=1.21.2,<1.22.0a0"
+ libgcc-ng: ">=12"
+ libpq: "16.1"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ readline: ">=8.2,<9.0a0"
+ tzcode: ""
+ tzdata: ""
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_0.conda
hash:
- md5: 7307ed345b859c2d6680d277dfc13bdd
- sha256: d6ac131d98df60c85206455f49fe1921a9eeef9962bbe1f06ada22573c09b0e6
+ md5: 1e9ab0760262044fa00814088667e451
+ sha256: 74dfb5793a00a0a9e85296ce0944d8af0f71758574b7c8f9e7d5590250441e24
category: main
optional: false
- - name: lzo
- version: "2.10"
+ - name: postgresql
+ version: "16.1"
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h642e427_1000.tar.bz2
+ platform: osx-64
+ dependencies:
+ krb5: ">=1.21.2,<1.22.0a0"
+ libpq: "16.1"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ readline: ">=8.2,<9.0a0"
+ tzcode: ""
+ tzdata: ""
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/postgresql-16.1-h413614c_0.conda
hash:
- md5: ddab5f96f5573a9bd5e24f9994fd6ec9
- sha256: ae029e5c16893071d29a11ddbfdbdb01b2ebf10d1785f54370934439d8b71817
+ md5: b7322d27093606b939fb92fa33b92beb
+ sha256: 612393024639882d7515429e639c85fa3b712d114c5a6b3a4b3891b061e1bc89
category: main
optional: false
- - name: pandoc
- version: 3.1.3
+ - name: postgresql
+ version: "16.1"
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.1.3-hce30654_0.conda
+ dependencies:
+ krb5: ">=1.21.2,<1.22.0a0"
+ libpq: "16.1"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ openssl: ">=3.1.4,<4.0a0"
+ readline: ">=8.2,<9.0a0"
+ tzcode: ""
+ tzdata: ""
+ zlib: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_0.conda
hash:
- md5: 7edcc75acdac60dba441b229c0ec66ee
- sha256: 858a923c8b9082791b2c13c2ff2ae87e28dd2e2655f56117c8ecb7d366002bc7
+ md5: 37398d1ad2fbeaa7733711b845da863e
+ sha256: 441f5ad3fac42e7daf9c246ad0dc0962c7f0b4c9ac1044038d3a053d339320bf
category: main
optional: false
- - name: poppler-data
- version: 0.4.12
+ - name: pre-commit
+ version: 3.5.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda
+ platform: linux-64
+ dependencies:
+ cfgv: ">=2.0.0"
+ identify: ">=1.0.0"
+ nodeenv: ">=0.11.1"
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ virtualenv: ">=20.10.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
hash:
- md5: d8d7293c5b37f39b2ac32940621c6592
- sha256: 2f227e17b3c0346112815faa605502b66c1c4511a856127f2899abf15a98a2cf
+ md5: 964e3d762e427661c59263435a14c492
+ sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
category: main
optional: false
- - name: pthread-stubs
- version: "0.4"
+ - name: pre-commit
+ version: 3.5.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2
+ platform: osx-64
+ dependencies:
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ identify: ">=1.0.0"
+ nodeenv: ">=0.11.1"
+ cfgv: ">=2.0.0"
+ virtualenv: ">=20.10.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
hash:
- md5: d3f26c6494d4105d4ecb85203d687102
- sha256: 9da9e6f5d51dff6ad2e4ee0874791437ba952e0a6249942273f0fedfd07ea826
+ md5: 964e3d762e427661c59263435a14c492
+ sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
category: main
optional: false
- - name: python_abi
- version: "3.11"
+ - name: pre-commit
+ version: 3.5.0
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-4_cp311.conda
+ dependencies:
+ python: ">=3.8"
+ pyyaml: ">=5.1"
+ identify: ">=1.0.0"
+ nodeenv: ">=0.11.1"
+ cfgv: ">=2.0.0"
+ virtualenv: ">=20.10.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
hash:
- md5: 8d3751bc73d3bbb66f216fa2331d5649
- sha256: 4837089c477b9b84fa38a17f453e6634e68237267211b27a8a2f5ccd847f4e55
+ md5: 964e3d762e427661c59263435a14c492
+ sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
category: main
optional: false
- - name: tzcode
- version: 2023c
+ - name: prettier
+ version: 3.1.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/tzcode-2023c-h1a8c8d9_0.conda
+ platform: linux-64
+ dependencies:
+ __glibc: ">=2.17,<3.0.a0"
+ nodejs: ">=20.8.1,<21.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.1.0-h31abb78_0.conda
hash:
- md5: 96779d3be996d78411b083f99a51199c
- sha256: 0a60ff53272547a0f80862f0a1969a5d1cec16bd2e9098ed5b07d317682a4361
+ md5: 825c43da21ded31f538a695cca2961ee
+ sha256: a836d8d87734c76e04b64f66d2a72262ac09ce7e23c92b3f77d47bdc20267a21
category: main
optional: false
- - name: tzdata
- version: 2023c
+ - name: prettier
+ version: 3.1.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda
+ platform: osx-64
+ dependencies:
+ nodejs: ">=20.8.1,<21.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.1.0-hbd11d21_0.conda
hash:
- md5: 939e3e74d8be4dac89ce83b20de2492a
- sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55
+ md5: 0f2d6f2c329df13e0ff0bd3748b2f74f
+ sha256: 9dfd2b3d2d4c3cbdeb341263d5107b7018197ad167633387832def6f68154e55
category: main
optional: false
- - name: xorg-libxau
- version: 1.0.11
+ - name: prettier
+ version: 3.1.0
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hb547adb_0.conda
+ dependencies:
+ nodejs: ">=20.8.1,<21.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.1.0-hb67532b_0.conda
hash:
- md5: ca73dc4f01ea91e44e3ed76602c5ea61
- sha256: 02c313a1cada46912e5b9bdb355cfb4534bfe22143b4ea4ecc419690e793023b
+ md5: dfa0c94c177b8163579301aa4672f245
+ sha256: c71c69ba2420da67a4bc1a5a85deab03e3c37cb4dea44a3bef01cc91e24bb1da
category: main
optional: false
- - name: xorg-libxdmcp
- version: 1.1.3
+ - name: proj
+ version: 9.3.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-h27ca646_0.tar.bz2
+ platform: linux-64
+ dependencies:
+ libcurl: ">=8.4.0,<9.0a0"
+ libgcc-ng: ">=12"
+ libsqlite: ">=3.43.2,<4.0a0"
+ libstdcxx-ng: ">=12"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ sqlite: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/proj-9.3.0-h1d62c97_2.conda
hash:
- md5: 6738b13f7fadc18725965abdd4129c36
- sha256: d9a2fb4762779994718832f05a7d62ab2dcf6103a312235267628b5187ce88f7
+ md5: b5e57a0c643da391bef850922963eece
+ sha256: 252f6c31101719e3d524679e69ae81e6323b93b143e1360169bf50e89386bf24
category: main
optional: false
- - name: xz
- version: 5.2.6
+ - name: proj
+ version: 9.3.0
manager: conda
- platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2
+ platform: osx-64
+ dependencies:
+ libcurl: ">=8.4.0,<9.0a0"
+ libsqlite: ">=3.43.2,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ sqlite: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/proj-9.3.0-h23b96cc_2.conda
hash:
- md5: 39c6b54e94014701dd157f4f576ed211
- sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec
+ md5: 63e960e8c8020936c0b73f23bfed16dd
+ sha256: e1b0f351103555e0d8ab641aeba4076173c3b7a2f8ed738b43ec66709d51be15
category: main
optional: false
- - name: yaml
- version: 0.2.5
+ - name: proj
+ version: 9.3.0
manager: conda
platform: osx-arm64
- dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
+ dependencies:
+ libcurl: ">=8.4.0,<9.0a0"
+ libsqlite: ">=3.43.2,<4.0a0"
+ libtiff: ">=4.6.0,<4.7.0a0"
+ sqlite: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.3.0-h52fb9d0_2.conda
hash:
- md5: 4bb3f014845110883a3c5ee811fd84b4
- sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7
+ md5: 31cbb3c9d6f8611a657e1b1a4cb5c63d
+ sha256: 6a76ab5ac69b1379d874a5b1405c15f13cc9fb3622a4a8837519c3328286e781
category: main
optional: false
- - name: aws-c-cal
- version: 0.6.9
+ - name: prometheus_client
+ version: 0.19.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.6.9-hea61927_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 844a59d5740f086963219373174de1d3
- sha256: ebd4b794986b745fb9a9931162e7ca6a4a759625203d995749e5dfc0e23d0e6e
+ md5: 7baa10fa8073c371155cf451b71b848d
+ sha256: 1235a3dbb033f914163e0deaf22d244cb1c1b5d8829d0089e38c34079286acbe
category: main
optional: false
- - name: aws-c-compression
- version: 0.2.17
+ - name: prometheus_client
+ version: 0.19.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.17-hea61927_6.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 61e64f2091370b64430faf5fe021bc54
- sha256: 01f5d5397def8f38263cc8bf3a31d2063602238073847a2941fd7f28f01da617
+ md5: 7baa10fa8073c371155cf451b71b848d
+ sha256: 1235a3dbb033f914163e0deaf22d244cb1c1b5d8829d0089e38c34079286acbe
category: main
optional: false
- - name: aws-c-sdkutils
- version: 0.1.12
+ - name: prometheus_client
+ version: 0.19.0
manager: conda
platform: osx-arm64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.12-hea61927_5.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 905d930730d618d5632011cb68d6744d
- sha256: a1c60064bf93b4ddbc223bf494acb3e295b0846eb887017d435816e1bcfc51e5
+ md5: 7baa10fa8073c371155cf451b71b848d
+ sha256: 1235a3dbb033f914163e0deaf22d244cb1c1b5d8829d0089e38c34079286acbe
category: main
optional: false
- - name: aws-checksums
- version: 0.1.17
+ - name: prompt-toolkit
+ version: 3.0.41
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.17-hea61927_5.conda
+ python: ">=3.7"
+ wcwidth: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
hash:
- md5: 4fcd94ba7456d0d162d3d84e5ef4db54
- sha256: 72af0036cdb7492826fafe1513cc5f0aa0280ad5d5af4a9ebbca50b81920cbe6
+ md5: f511a993aa4336bef9dd874ee3403e67
+ sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
category: main
optional: false
- - name: expat
- version: 2.5.0
+ - name: prompt-toolkit
+ version: 3.0.41
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libexpat: 2.5.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.5.0-hb7217d7_1.conda
+ wcwidth: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
hash:
- md5: 624fa0dd6fdeaa650b71a62296fdfedf
- sha256: 9f06afbe4604decf6a2e8e7e87f5ca218a3e9049d57d5b3fcd538ca6240d21a0
+ md5: f511a993aa4336bef9dd874ee3403e67
+ sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
category: main
optional: false
- - name: fonts-conda-forge
- version: "1"
+ - name: prompt-toolkit
+ version: 3.0.41
manager: conda
platform: osx-arm64
dependencies:
- font-ttf-inconsolata: ""
- font-ttf-source-code-pro: ""
- font-ttf-dejavu-sans-mono: ""
- font-ttf-ubuntu: ""
- url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ wcwidth: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
hash:
- md5: f766549260d6815b0c52253f1fb1bb29
- sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
+ md5: f511a993aa4336bef9dd874ee3403e67
+ sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
category: main
optional: false
- - name: geos
- version: 3.12.0
+ - name: prompt_toolkit
+ version: 3.0.41
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/geos-3.12.0-h13dd4ca_0.conda
+ prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
hash:
- md5: 18eb5904d2561c782e71bfe05b2ad755
- sha256: 8c21acd399d7509f6a7c7b65d5415e9500333a043f44dee063942d724adffc4a
+ md5: b1387bd091fa0420557f801a78587678
+ sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
category: main
optional: false
- - name: gettext
- version: 0.21.1
+ - name: prompt_toolkit
+ version: 3.0.41
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libiconv: ">=1.17,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.21.1-h0186832_0.tar.bz2
+ prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
hash:
- md5: 63d2ff6fddfa74e5458488fd311bf635
- sha256: 093b2f96dc4b48e4952ab8946facec98b34b708a056251fc19c23c3aad30039e
+ md5: b1387bd091fa0420557f801a78587678
+ sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
category: main
optional: false
- - name: gflags
- version: 2.2.2
+ - name: prompt_toolkit
+ version: 3.0.41
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=11.0.0.rc1"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2
+ prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
hash:
- md5: aab9ddfad863e9ef81229a1f8852211b
- sha256: 25d4a20af2e5ace95fdec88970f6d190e77e20074d2f6d3cef766198b76a4289
+ md5: b1387bd091fa0420557f801a78587678
+ sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
category: main
optional: false
- - name: graphite2
- version: 1.3.13
+ - name: protobuf
+ version: 4.24.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=11.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-h9f76cd9_1001.tar.bz2
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libgcc-ng: ">=12"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.24.4-py311h46cbc50_0.conda
hash:
- md5: 288b591645cb9cb9c0af7309ac1114f5
- sha256: 57db1e563cdfe469cd453a2988039118e96ce4b77c9219e2f1022be0e1c2b03f
- category: dev
- optional: true
- - name: hdf4
- version: 4.2.15
+ md5: 83b241e2db8adb55d7ec110a913fea80
+ sha256: 1f664f5fc370c28809024387e2f991003fcabf8b025c787c70dbc99a8fcb2088
+ category: main
+ optional: false
+ - name: protobuf
+ version: 4.24.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/protobuf-4.24.4-py311h021eaf5_0.conda
hash:
- md5: ff5d749fd711dc7759e127db38005924
- sha256: c3b01e3c3fe4ca1c4d28c287eaa5168a4f2fd3ffd76690082ac919244c22fa90
+ md5: f8105062d22f61505797d78890b5ca75
+ sha256: 2d6e0a1681d8ce871d8a6e2a0f40ad48c14d2a3df19a8012e95a4e33ddddcde6
category: main
optional: false
- - name: lerc
- version: 4.0.0
+ - name: protobuf
+ version: 4.24.4
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=13.0.1"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2
+ __osx: ">=10.9"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
+ libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-4.24.4-py311h4d1eceb_0.conda
hash:
- md5: de462d5aacda3b30721b512c5da4e742
- sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958
+ md5: a4a36febea4880c7a5bf21c9ff9461cd
+ sha256: d34ebda375e3fe0969cc9651150ab3edce9e50c04c7093afd585a87083f7fcb6
category: main
optional: false
- - name: libabseil
- version: "20230802.1"
+ - name: psutil
+ version: 5.9.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20230802.1-cxx17_h13dd4ca_0.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py311h459d7ec_1.conda
hash:
- md5: fb6dfadc1898666616dfda242d8aea10
- sha256: 459a58f36607246b4483d7a370c2d9a03e7f824e79da2c6e3e9d62abf80393e7
+ md5: 490d7fa8675afd1aa6f1b2332d156a45
+ sha256: e92d2120fc4b98fe838b3d52d4907fae97808bdd504fb84aa33aea8c4be7bc61
category: main
optional: false
- - name: libaec
- version: 1.1.2
+ - name: psutil
+ version: 5.9.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.2-h13dd4ca_1.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/psutil-5.9.5-py311h2725bcf_1.conda
hash:
- md5: b7962cdc2cedcc9f8d12928824c11fbd
- sha256: c9d6f01d511bd3686ce590addf829f34031b95e3feb34418496cbb45924c5d17
+ md5: 16221cd0488a32152a6b3f1a301ccf19
+ sha256: 2eee900e0e5a103cff0159cdd81d401b67ccfb919be6cd868fc34c22dab981f1
category: main
optional: false
- - name: libbrotlidec
- version: 1.1.0
+ - name: psutil
+ version: 5.9.5
manager: conda
platform: osx-arm64
dependencies:
- libbrotlicommon: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-5.9.5-py311heffc1b2_1.conda
hash:
- md5: ee1a519335cc10d0ec7e097602058c0a
- sha256: c1c85937828ad3bc434ac60b7bcbde376f4d2ea4ee42d15d369bf2a591775b4a
+ md5: a40123b40642b8b08b3830a3f6bc7fd9
+ sha256: a12a525d3bcaed04e0885b2bd00f4f626c80c19d7c0ae8bb7cf7121aefb39e52
category: main
optional: false
- - name: libbrotlienc
- version: 1.1.0
+ - name: psycopg2
+ version: 2.9.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libbrotlicommon: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda
+ libgcc-ng: ">=12"
+ libpq: ">=16.0,<17.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/psycopg2-2.9.7-py311h03dec38_1.conda
hash:
- md5: d7e077f326a98b2cc60087eaff7c730b
- sha256: 690dfc98e891ee1871c54166d30f6e22edfc2d7d6b29e7988dde5f1ce271c81a
+ md5: 894f0e7a734b1f1182f87081f1ddffa3
+ sha256: 047fe0687432b83762d4d77a31cd01572044a231f945f83e10f2cd3c2b44077d
category: main
optional: false
- - name: libcrc32c
- version: 1.1.2
+ - name: psycopg2
+ version: 2.9.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libcxx: ">=11.1.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2
+ libpq: ">=16.0,<17.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.7-py311h187f0af_1.conda
hash:
- md5: 32bd82a6a625ea6ce090a81c3d34edeb
- sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929
+ md5: f777a0c47ebe4c2cc2eca6f19aea9347
+ sha256: dce8bdee2b563927c71493ad26997c9897939d8fbb0376df80b6c04154ce0412
category: main
optional: false
- - name: libgfortran5
- version: 13.2.0
+ - name: psycopg2
+ version: 2.9.7
manager: conda
platform: osx-arm64
dependencies:
- llvm-openmp: ">=8.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_1.conda
+ libpq: ">=16.0,<17.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg2-2.9.7-py311h589e011_1.conda
hash:
- md5: 4480d71b98c87faafab132d33e23135e
- sha256: cb9cb11e49a6a8466ea7556a723080d3aeefd556df9b444b941afc5b54368b22
+ md5: e5fd933c7c34b5c02a95e28f05b07f46
+ sha256: 30fb7c0c8e1651694dcb9b5b62b7cdc801ce45e06ead0a5d281ce950e1f498f5
category: main
optional: false
- - name: libllvm14
- version: 14.0.6
+ - name: psycopg2-binary
+ version: 2.9.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm14-14.0.6-hd1a9a77_4.conda
+ psycopg2: ">=2.9.7,<2.9.8.0a0"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
hash:
- md5: 9f3dce5d26ea56a9000cd74c034582bd
- sha256: 6f603914fe8633a615f0d2f1383978eb279eeb552079a78449c9fbb43f22a349
+ md5: 0212a5c5ae1ab578853364bfc5d9f657
+ sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
category: main
optional: false
- - name: libpng
- version: 1.6.39
+ - name: psycopg2-binary
+ version: 2.9.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.39-h76d750c_0.conda
+ python: ">=3.6"
+ psycopg2: ">=2.9.7,<2.9.8.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
hash:
- md5: 0078e6327c13cfdeae6ff7601e360383
- sha256: 21ab8409a8e66f9408b96428c0a36a9768faee9fe623c56614576f9e12962981
+ md5: 0212a5c5ae1ab578853364bfc5d9f657
+ sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
category: main
optional: false
- - name: libspatialindex
- version: 1.9.3
+ - name: psycopg2-binary
+ version: 2.9.7
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=11.1.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialindex-1.9.3-hbdafb3b_4.tar.bz2
+ python: ">=3.6"
+ psycopg2: ">=2.9.7,<2.9.8.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
hash:
- md5: 311816a2511df4bceeeebe7c06af63e7
- sha256: a1af21a778e7a04fd866ccd617a4503ebe8abeb4e5fe718cd219be4d6e70e778
+ md5: 0212a5c5ae1ab578853364bfc5d9f657
+ sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
category: main
optional: false
- - name: libsqlite
- version: 3.44.0
+ - name: pthread-stubs
+ version: "0.4"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.44.0-h091b4b1_0.conda
+ libgcc-ng: ">=7.5.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2
hash:
- md5: 28eb31a5b4e704353ed575758e2fcf1d
- sha256: 38e98953b572e2871f2b318fa7fe8d9997b0927970916c2d09402273b60ff832
+ md5: 22dad4df6e8630e8dff2428f6f6a7036
+ sha256: 67c84822f87b641d89df09758da498b2d4558d47b920fd1d3fe6d3a871e000ff
category: main
optional: false
- - name: libxcb
- version: "1.15"
+ - name: pthread-stubs
+ version: "0.4"
manager: conda
- platform: osx-arm64
- dependencies:
- pthread-stubs: ""
- xorg-libxau: ""
- xorg-libxdmcp: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.15-hf346824_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2
hash:
- md5: 988d5f86ab60fa6de91b3ee3a88a3af9
- sha256: 6eaa87760ff3e91bb5524189700139db46f8946ff6331f4e571e4a9356edbb0d
+ md5: addd19059de62181cd11ae8f4ef26084
+ sha256: 6e3900bb241bcdec513d4e7180fe9a19186c1a38f0b4080ed619d26014222c53
category: main
optional: false
- - name: libxml2
- version: 2.11.6
+ - name: pthread-stubs
+ version: "0.4"
manager: conda
platform: osx-arm64
- dependencies:
- icu: ">=73.2,<74.0a0"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.11.6-h0d0cfa8_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-h27ca646_1001.tar.bz2
hash:
- md5: 37e112ce9494adfcee6c0c7bf3b5d98d
- sha256: 07d2da8f3fb00fb6f84cd36b5329174b878105889f0fe21e79981f27573b47af
+ md5: d3f26c6494d4105d4ecb85203d687102
+ sha256: 9da9e6f5d51dff6ad2e4ee0874791437ba952e0a6249942273f0fedfd07ea826
category: main
optional: false
- - name: lz4-c
- version: 1.9.4
+ - name: ptyprocess
+ version: 0.7.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
hash:
- md5: 45505bec548634f7d05e02fb25262cb9
- sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24
+ md5: 359eeb6536da0e687af562ed265ec263
+ sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a
category: main
optional: false
- - name: ncurses
- version: "6.4"
+ - name: ptyprocess
+ version: 0.7.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.4-h463b476_2.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
hash:
- md5: 52b6f254a7b9663e854f44b6570ed982
- sha256: f6890634f815e8408d08f36503353f8dfd7b055e4c3b9ea2ee52180255cf4b0a
+ md5: 359eeb6536da0e687af562ed265ec263
+ sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a
category: main
optional: false
- - name: nspr
- version: "4.35"
+ - name: ptyprocess
+ version: 0.7.0
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/nspr-4.35-hb7217d7_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
hash:
- md5: f81b5ec944dbbcff3dd08375eb036efa
- sha256: 35959d36ea9e8a2c422db9f113ee0ac91a9b0c19c51b05f75d0793c3827cfa3a
+ md5: 359eeb6536da0e687af562ed265ec263
+ sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a
category: main
optional: false
- - name: openssl
- version: 3.1.4
+ - name: pure_eval
+ version: 0.2.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- ca-certificates: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.1.4-h0d3ecfb_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 5a89552fececf4cd99628318ccbb67a3
- sha256: 3c715b1d4940c7ad6065935db18924b85a54048dde066f963cfc250340639457
+ md5: 6784285c7e55cb7212efabc79e4c2883
+ sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44
category: main
optional: false
- - name: pcre2
- version: "10.42"
+ - name: pure_eval
+ version: 0.2.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.42-h26f9a81_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3e12888ecc8ee1ebee2eef9b7856357a
- sha256: 0335a08349ecd8dce0b81699fcd61b58415e658fe953feb27316fbb994df0685
+ md5: 6784285c7e55cb7212efabc79e4c2883
+ sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44
category: main
optional: false
- - name: pixman
- version: 0.42.2
+ - name: pure_eval
+ version: 0.2.2
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.42.2-h13dd4ca_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f96347021db6f33ccabe314ddeab62d4
- sha256: 90e60dc5604e356d47ef97b23b13759ef3d8b70fa2c637f4809d29851435d7d7
+ md5: 6784285c7e55cb7212efabc79e4c2883
+ sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44
category: main
optional: false
- - name: snappy
- version: 1.1.10
+ - name: pyarrow
+ version: 14.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-h17c5cce_0.conda
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libarrow-dataset: 14.0.1
+ libarrow-flight: 14.0.1
+ libarrow-flight-sql: 14.0.1
+ libarrow-gandiva: 14.0.1
+ libarrow-substrait: 14.0.1
+ libgcc-ng: ">=12"
+ libparquet: 14.0.1
+ libstdcxx-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-14.0.1-py311h39c9aba_3_cpu.conda
hash:
- md5: ac82a611d1a67a598096ebaa857198e3
- sha256: dfae03cd2339587871e53b42833657faa4c9e42e3e2c56ee9e32bc60797c7f62
+ md5: b5aa577bb166417b14e9beba61816680
+ sha256: 2e9686e59b87f519409ab726dbfaa08a641e8a6186f97b4a0b1a6d0175c2761d
category: main
optional: false
- - name: tk
- version: 8.6.13
+ - name: pyarrow
+ version: 14.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libarrow-dataset: 14.0.1
+ libarrow-flight: 14.0.1
+ libarrow-flight-sql: 14.0.1
+ libarrow-gandiva: 14.0.1
+ libarrow-substrait: 14.0.1
+ libcxx: ">=15.0.7"
+ libparquet: 14.0.1
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-14.0.1-py311h98a0319_3_cpu.conda
hash:
- md5: b50a57ba89c32b62428b71a875291c9b
- sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8
+ md5: f574fa744f76f78af4287040a79072bb
+ sha256: 6f54b81c50c5f383614b98bf05f2aff01a1831c42576557a606325753d2f7581
category: main
optional: false
- - name: uriparser
- version: 0.9.7
+ - name: pyarrow
+ version: 14.0.1
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=14.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.7-hb7217d7_1.conda
+ __osx: ">=10.9"
+ libarrow: 14.0.1
+ libarrow-acero: 14.0.1
+ libarrow-dataset: 14.0.1
+ libarrow-flight: 14.0.1
+ libarrow-flight-sql: 14.0.1
+ libarrow-gandiva: 14.0.1
+ libarrow-substrait: 14.0.1
+ libcxx: ">=15.0.7"
+ libparquet: 14.0.1
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-14.0.1-py311h637fcfe_3_cpu.conda
hash:
- md5: 4fe532e3c6b0cfa5365eb01743d32578
- sha256: bedd03f3bb30b73ae7b0dc9626f1371a8568ce6d41303df3e8299688428dfa94
+ md5: 77ebcf968cbdac3f5a676239faf6103b
+ sha256: 9ec472ee46cf2944ff328eb8d027fac5bb0d56c14653723cd63b46fc9c786042
category: main
optional: false
- - name: zeromq
- version: 4.3.5
+ - name: pyasn1
+ version: 0.5.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- libsodium: ">=1.0.18,<1.0.19.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h965bd2d_0.conda
+ python: "!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda
hash:
- md5: f460bbcb0ec8dc77989288fe8caa0f84
- sha256: 06abddc92d0bf83cd9faf25f26c98d7c2cc681cb50504011580b0584cf3cb1c5
+ md5: fb1a800972b072aa4d16450983c81418
+ sha256: 8b116da9acbb471e107203c11acaffcb259aca2367aa7e83e796e43ed5d381b3
category: main
optional: false
- - name: zlib
- version: 1.2.13
+ - name: pyasn1
+ version: 0.5.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libzlib: 1.2.13
- url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.2.13-h53f4e23_5.conda
+ python: "!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda
hash:
- md5: a08383f223b10b71492d27566fafbf6c
- sha256: de0ee1e24aa6867058d3b852a15c8d7f49f262f5828772700c647186d4a96bbe
+ md5: fb1a800972b072aa4d16450983c81418
+ sha256: 8b116da9acbb471e107203c11acaffcb259aca2367aa7e83e796e43ed5d381b3
category: main
optional: false
- - name: zstd
- version: 1.5.5
+ - name: pyasn1
+ version: 0.5.1
manager: conda
platform: osx-arm64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.5-h4f39d0f_0.conda
+ python: "!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda
hash:
- md5: 5b212cfb7f9d71d603ad891879dc7933
- sha256: 7e1fe6057628bbb56849a6741455bbb88705bae6d6646257e57904ac5ee5a481
+ md5: fb1a800972b072aa4d16450983c81418
+ sha256: 8b116da9acbb471e107203c11acaffcb259aca2367aa7e83e796e43ed5d381b3
category: main
optional: false
- - name: aws-c-io
- version: 0.13.35
+ - name: pyasn1-modules
+ version: 0.3.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.13.35-he1b4ce3_8.conda
+ pyasn1: ">=0.4.6,<0.6.0"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 2b17730ac8242c1ba995baa5cfb1641e
- sha256: c0112899e785d550ed0c16e930ab52119c312098a24eebc5d808c53d0f36effb
+ md5: 26db749166cdca55e5ef1ffdc7767d0e
+ sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b
category: main
optional: false
- - name: blosc
- version: 1.21.5
+ - name: pyasn1-modules
+ version: 0.3.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.5-hc338f07_0.conda
+ python: ">=3.6"
+ pyasn1: ">=0.4.6,<0.6.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 93fccb1150aa377576107ecd0ad375b3
- sha256: 81f206dd843fe0da894d0480ea9d689fe948fa4b3cad060f97b016af4ac7b3a1
+ md5: 26db749166cdca55e5ef1ffdc7767d0e
+ sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b
category: main
optional: false
- - name: brotli-bin
- version: 1.1.0
+ - name: pyasn1-modules
+ version: 0.3.0
manager: conda
platform: osx-arm64
dependencies:
- libbrotlidec: 1.1.0
- libbrotlienc: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hb547adb_1.conda
+ python: ">=3.6"
+ pyasn1: ">=0.4.6,<0.6.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 990d04f8c017b1b77103f9a7730a5f12
- sha256: 8fbfc2834606292016f2faffac67deea4c5cdbc21a61169f0b355e1600105a24
+ md5: 26db749166cdca55e5ef1ffdc7767d0e
+ sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b
category: main
optional: false
- - name: fonts-conda-ecosystem
- version: "1"
+ - name: pybtex
+ version: 0.24.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- fonts-conda-forge: ""
- url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
+ latexcodec: ">=1.0.4"
+ python: ">=3.6"
+ pyyaml: ">=3.01"
+ setuptools: ""
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2
hash:
- md5: fee5683a3f04bd15cbd8318b096a27ab
- sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61
+ md5: 2099b86a7399c44c0c61cdb6de6915ba
+ sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc
category: main
optional: false
- - name: freetype
- version: 2.12.1
+ - name: pybtex
+ version: 0.24.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libpng: ">=1.6.39,<1.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda
+ setuptools: ""
+ six: ""
+ python: ">=3.6"
+ latexcodec: ">=1.0.4"
+ pyyaml: ">=3.01"
+ url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2
hash:
- md5: e6085e516a3e304ce41a8ee08b9b89ad
- sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9
+ md5: 2099b86a7399c44c0c61cdb6de6915ba
+ sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc
category: main
optional: false
- - name: glog
- version: 0.6.0
+ - name: pybtex
+ version: 0.24.0
manager: conda
platform: osx-arm64
dependencies:
- gflags: ">=2.2.2,<2.3.0a0"
- libcxx: ">=12.0.1"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.6.0-h6da1cb0_0.tar.bz2
+ setuptools: ""
+ six: ""
+ python: ">=3.6"
+ latexcodec: ">=1.0.4"
+ pyyaml: ">=3.01"
+ url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2
hash:
- md5: 5a570729c7709399cf8511aeeda6f989
- sha256: 4d772c42477f64be708594ac45870feba3e838977871118eb25e00deb0e9a73c
+ md5: 2099b86a7399c44c0c61cdb6de6915ba
+ sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc
category: main
optional: false
- - name: libarchive
- version: 3.7.2
+ - name: pybtex-docutils
+ version: 1.0.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libiconv: ">=1.17,<2.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- lzo: ">=2.10,<3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.7.2-h82b9b87_0.conda
+ docutils: ">=0.14"
+ pybtex: ">=0.16"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/pybtex-docutils-1.0.3-py311h38be061_1.conda
hash:
- md5: da6ec82a0e07f738afee1c4279778b30
- sha256: d8f2a19466f11ca9d6e1bf6a82cf84a5eb60dcf55d93fa2fbf47a503b953e348
+ md5: 137a63bd93d3e1a2b6812119b671f44e
+ sha256: 2b7057a1529e190689c141d4a76a7ae2f9f978870737d7e11c3a8e03ad5b27cb
category: main
optional: false
- - name: libedit
- version: 3.1.20191231
+ - name: pybtex-docutils
+ version: 1.0.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- ncurses: ">=6.2,<7.0.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2
+ docutils: ">=0.14"
+ pybtex: ">=0.16"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/pybtex-docutils-1.0.3-py311h6eed73b_1.conda
hash:
- md5: 30e4362988a2623e9eb34337b83e01f9
- sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca
+ md5: 36996441974a061f9e0b600741599585
+ sha256: 13b6ee67378fee966f8783cb482ce57a647ee0c6d7d1e7dedee754408521641f
category: main
optional: false
- - name: libevent
- version: 2.1.12
+ - name: pybtex-docutils
+ version: 1.0.3
manager: conda
platform: osx-arm64
dependencies:
- openssl: ">=3.1.1,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda
+ docutils: ">=0.14"
+ pybtex: ">=0.16"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pybtex-docutils-1.0.3-py311h267d04e_1.conda
hash:
- md5: 1a109764bff3bdc7bdd84088347d71dc
- sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7
+ md5: a5145d3785720aea61185b626b783320
+ sha256: 7f6c4000a4d01af6621fc1774d8f9fbea8246d2c474c449e75765bb91eaae46c
category: main
optional: false
- - name: libgfortran
- version: 5.0.0
+ - name: pycparser
+ version: "2.21"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libgfortran5: 13.2.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_1.conda
+ python: 2.7.*|>=3.4
+ url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 1ad37a5c60c250bb2b4a9f75563e181c
- sha256: bc8750e7893e693fa380bf2f342d4a5ce44995467cbdf72e56a00e5106b4892d
+ md5: 076becd9e05608f8dc72757d5f3a91ff
+ sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc
category: main
optional: false
- - name: libglib
- version: 2.78.1
+ - name: pycparser
+ version: "2.21"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- gettext: ">=0.21.1,<1.0a0"
- libcxx: ">=16.0.6"
- libffi: ">=3.4,<4.0a0"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- pcre2: ">=10.42,<10.43.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.78.1-hb438215_1.conda
+ python: 2.7.*|>=3.4
+ url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3ce7984906f2ba4be662c219e8def77e
- sha256: 3d94b6d8d27301f23b0d0c8b078c5e0bf6fc4f5f6260f3794cfaf7e247fe9e20
+ md5: 076becd9e05608f8dc72757d5f3a91ff
+ sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc
category: main
optional: false
- - name: libkml
- version: 1.3.0
+ - name: pycparser
+ version: "2.21"
manager: conda
platform: osx-arm64
dependencies:
- libboost-headers: ""
- libcxx: ">=15.0.7"
- libexpat: ">=2.5.0,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- uriparser: ">=0.9.7,<1.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-h1eb4d9f_1018.conda
+ python: 2.7.*|>=3.4
+ url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f287028317d50fa3edad9c715d22e26b
- sha256: ba3833cd0c517bb7a00b235b85a35bc58096e981ef3ac392c0916d83a1abc00a
+ md5: 076becd9e05608f8dc72757d5f3a91ff
+ sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc
category: main
optional: false
- - name: libllvm15
- version: 15.0.7
+ - name: pydantic
+ version: 2.5.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15"
- libxml2: ">=2.11.4,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h504e6bf_3.conda
+ annotated-types: ">=0.4.0"
+ pydantic-core: 2.14.5
+ python: ">=3.7"
+ typing-extensions: ">=4.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda
hash:
- md5: cef4a00532f06f6797fbe2425d4db2a7
- sha256: 8fbe19f2133c501a43a45f4dab701adf5206ed61f4bd6317f287a8d87409fdee
+ md5: 3f908ebfccbfd09946961862d26bb9af
+ sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de
category: main
optional: false
- - name: libnghttp2
- version: 1.58.0
+ - name: pydantic
+ version: 2.5.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- c-ares: ">=1.21.0,<2.0a0"
- libcxx: ">=16.0.6"
- libev: ">=4.33,<4.34.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_0.conda
+ python: ">=3.7"
+ annotated-types: ">=0.4.0"
+ typing-extensions: ">=4.6.1"
+ pydantic-core: 2.14.5
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda
hash:
- md5: b93d94874cfd44bc96496c2ee69f82a9
- sha256: 3597032667444f91ae59343c553da6e93f2b3359bc2c0dd6b7f8260e41572e9c
+ md5: 3f908ebfccbfd09946961862d26bb9af
+ sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de
category: main
optional: false
- - name: libprotobuf
- version: 4.24.4
+ - name: pydantic
+ version: 2.5.2
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.24.4-hc9861d8_0.conda
+ python: ">=3.7"
+ annotated-types: ">=0.4.0"
+ typing-extensions: ">=4.6.1"
+ pydantic-core: 2.14.5
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda
hash:
- md5: ac5438d981e105e053b341eb30c44273
- sha256: 2e81e023f463ef239e2fb7f56a4e8eed61a1d8e9ca3f2f07bec1668cc369b2ce
+ md5: 3f908ebfccbfd09946961862d26bb9af
+ sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de
category: main
optional: false
- - name: libre2-11
- version: 2023.06.02
+ - name: pydantic-core
+ version: 2.14.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.06.02-h1753957_0.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ typing-extensions: ">=4.6.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.5-py311h46250e7_0.conda
hash:
- md5: 3b8652db4bf4e27fa1446526f7a78498
- sha256: 8bafee8f8ef27f4cb0afffe5404dd1abfc5fd6eac1ee9b4847a756d440bd7aa7
+ md5: 9b2d1233d958079649cc8f91d814e04f
+ sha256: c546a042316c34bf6b9c5e16da4e6993f6712554c0ac5ee3f49260260789c38f
category: main
optional: false
- - name: librttopo
- version: 1.1.0
+ - name: pydantic-core
+ version: 2.14.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- geos: ">=3.12.0,<3.12.1.0a0"
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-h667cd51_14.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ typing-extensions: ">=4.6.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.14.5-py311h5e0f0e4_0.conda
hash:
- md5: 5dfc75562bc705e4a645eb8079139c8c
- sha256: 5ed612f91b1e0bfa41dca9f6bdd9edd28039b6880c3d1b9dc40aa748b6d1d7c7
+ md5: 915ef17e91fbe6c5a2d2ea502e112ae7
+ sha256: d79248cd5511c1153981b7fdcad4ef72a17985e604488a3ad1f242e2cd1e2622
category: main
optional: false
- - name: libssh2
- version: 1.11.0
+ - name: pydantic-core
+ version: 2.14.5
manager: conda
platform: osx-arm64
dependencies:
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.1,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ typing-extensions: ">=4.6.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.14.5-py311h94f323b_0.conda
hash:
- md5: 029f7dc931a3b626b94823bc77830b01
- sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015
+ md5: 781b4ba31a7ef7f3e2b4f2726dd99a81
+ sha256: cac857e276d469d69af66b7f1972a8329f7843237d1b666ef7e2918cf9f83944
category: main
optional: false
- - name: libtiff
- version: 4.6.0
+ - name: pydantic-settings
+ version: 2.1.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- lerc: ">=4.0.0,<5.0a0"
- libcxx: ">=15.0.7"
- libdeflate: ">=1.19,<1.20.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-ha8a6c65_2.conda
+ pydantic: ">=2.3.0"
+ python: ">=3.8"
+ python-dotenv: ">=0.21.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.1.0-pyhd8ed1ab_1.conda
hash:
- md5: 596d6d949bab9a75a492d451f521f457
- sha256: b18ef36eb90f190db22c56ae5a080bccc16669c8f5b795a6211d7b0c00c18ff7
+ md5: 2a63052c1180846d4a6aaa9df7e113a3
+ sha256: 2c80df34463dabec383b37dc19da48f84a1ea97f3d828d6d0dd220110da5f4e1
category: main
optional: false
- - name: libxslt
- version: 1.1.37
+ - name: pydantic-settings
+ version: 2.1.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libxml2: ">=2.11.3,<2.12.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.37-h1728932_1.conda
+ python: ">=3.8"
+ python-dotenv: ">=0.21.0"
+ pydantic: ">=2.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.1.0-pyhd8ed1ab_1.conda
hash:
- md5: 8483366e7b7ed525a5d17ef81c26b1f4
- sha256: 2e4501c208ada1fbce18ffbcbcb50bc258d51ad314cae262cce091bab304ace5
+ md5: 2a63052c1180846d4a6aaa9df7e113a3
+ sha256: 2c80df34463dabec383b37dc19da48f84a1ea97f3d828d6d0dd220110da5f4e1
category: main
optional: false
- - name: libzip
- version: 1.10.1
+ - name: pydantic-settings
+ version: 2.1.0
manager: conda
platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.10.1-ha0bc3c6_3.conda
+ python: ">=3.8"
+ python-dotenv: ">=0.21.0"
+ pydantic: ">=2.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.1.0-pyhd8ed1ab_1.conda
hash:
- md5: e37c0da207079e488709043634d6a711
- sha256: fb42f34c2275523a06bc8464454fa57f2417203524cabb7aacca4e5de6cfeb69
+ md5: 2a63052c1180846d4a6aaa9df7e113a3
+ sha256: 2c80df34463dabec383b37dc19da48f84a1ea97f3d828d6d0dd220110da5f4e1
category: main
optional: false
- - name: minizip
- version: 4.0.3
+ - name: pygments
+ version: 2.17.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- bzip2: ">=1.0.8,<2.0a0"
- libcxx: ">=16.0.6"
- libiconv: ">=1.17,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.3-hd5cad61_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda
hash:
- md5: 8f1bf9ea12bca129b7a3d49eec9efd76
- sha256: 9db88831aa3485d98cad155d989d4de45edfec13e6cbe81b0093ba7e6ba8817d
+ md5: 140a7f159396547e9799aa98f9f0742e
+ sha256: af5f8867450dc292f98ea387d4d8945fc574284677c8f60eaa9846ede7387257
category: main
optional: false
- - name: nodejs
- version: 20.8.1
+ - name: pygments
+ version: 2.17.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- icu: ">=73.2,<74.0a0"
- libcxx: ">=16.0.6"
- libuv: ">=1.46.0,<1.47.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-20.8.1-h0950e01_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda
hash:
- md5: 1c0712dd46d145e9de1c4b83f4417751
- sha256: b9e598bb7b7d410b116440fe0caf2d3ac1def45da21036c27b04147671a641b9
+ md5: 140a7f159396547e9799aa98f9f0742e
+ sha256: af5f8867450dc292f98ea387d4d8945fc574284677c8f60eaa9846ede7387257
category: main
optional: false
- - name: nss
- version: "3.94"
+ - name: pygments
+ version: 2.17.2
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- libsqlite: ">=3.43.0,<4.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- nspr: ">=4.35,<5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/nss-3.94-hc6b9969_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda
hash:
- md5: 4dec6b96cec24e41059c2e795755760a
- sha256: 662782a095cc191c073db8e44e14bf8877252d98b1f9b69275d79c47af185bb5
+ md5: 140a7f159396547e9799aa98f9f0742e
+ sha256: af5f8867450dc292f98ea387d4d8945fc574284677c8f60eaa9846ede7387257
category: main
optional: false
- - name: readline
- version: "8.2"
+ - name: pygraphviz
+ version: "1.11"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- ncurses: ">=6.3,<7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
+ graphviz: ">=9.0.0,<10.0a0"
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.11-py311hbf5cbc9_2.conda
hash:
- md5: 8cbb776a2f641b943d413b3e19df71f4
- sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884
- category: main
- optional: false
- - name: atk-1.0
- version: 2.38.0
+ md5: e2cc4c8cc7e6fdb322315f71276e6bab
+ sha256: 2f23fe04d90a5f284878b223c53b96cea27f82a58b8fa6a47a029ad5dacaf3e4
+ category: dev
+ optional: true
+ - name: pygraphviz
+ version: "1.11"
+ manager: conda
+ platform: osx-64
+ dependencies:
+ graphviz: ">=9.0.0,<10.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/pygraphviz-1.11-py311h03ee4fc_2.conda
+ hash:
+ md5: f73fe6c66f5d6da1789e15dc0f872684
+ sha256: 58ba0d94e54ffd62ca19c0b01a62054ee7a21fedc953f7f700147928f5700096
+ category: dev
+ optional: true
+ - name: pygraphviz
+ version: "1.11"
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=14.0.4"
- libglib: ">=2.74.1,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hcb7b3dd_1.tar.bz2
+ graphviz: ">=9.0.0,<10.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.11-py311h1df6e61_2.conda
hash:
- md5: 3c98bfeed7717a9cf5af18c295f49f3a
- sha256: d40f103467fd2fa426072691919fd135a4fed4a2b03cd12256ff0fee37a98249
+ md5: 0f8f3cf61a5562b5c5b75b4aaf606ba8
+ sha256: 6ff3f17f8fb8875d33b5c37d07371593caa62e2c382296a0714e386ae0880b49
category: dev
optional: true
- - name: aws-c-event-stream
- version: 0.3.2
+ - name: pyjwt
+ version: 2.8.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.3.2-h32206d9_6.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 498485eaae26d9241fa08641e461ec41
- sha256: 2dbeab2e4211ff27ffcc8e4770df4e3083d8d9bb524154ff4ce8d42c3a35a54a
+ md5: 912c0194f898fdb783021fd25f913c31
+ sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232
category: main
optional: false
- - name: aws-c-http
- version: 0.7.14
+ - name: pyjwt
+ version: 2.8.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-compression: ">=0.2.17,<0.2.18.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.7.14-h673bc1b_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda
hash:
- md5: 8cb609edc86062a2f7a1482678c65e56
- sha256: 320b1d8faa845b25a1e58371def7694fc7561d46cf7a38d8384997ac7cab8616
+ md5: 912c0194f898fdb783021fd25f913c31
+ sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232
category: main
optional: false
- - name: brotli
- version: 1.1.0
+ - name: pyjwt
+ version: 2.8.0
manager: conda
platform: osx-arm64
dependencies:
- brotli-bin: 1.1.0
- libbrotlidec: 1.1.0
- libbrotlienc: 1.1.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hb547adb_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda
hash:
- md5: a33aa58d448cbc054f887e39dd1dfaea
- sha256: 62d1587deab752fcee07adc371eb20fcadc09f72c0c85399c22b637ca858020f
+ md5: 912c0194f898fdb783021fd25f913c31
+ sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232
category: main
optional: false
- - name: fontconfig
- version: 2.14.2
+ - name: pylev
+ version: 1.4.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- expat: ">=2.5.0,<3.0a0"
- freetype: ">=2.12.1,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda
+ python: ">=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f77d47ddb6d3cc5b39b9bdf65635afbb
- sha256: 7094917fc6758186e17c61d8ee8fd2bbbe9f303b4addac61d918fa415c497e2b
+ md5: edf8651c4379d9d1495ad6229622d150
+ sha256: 50bd91767686bfe769e50a5a1b883e238d944a6163fea43e7c0beaac54ca674f
category: main
optional: false
- - name: freexl
- version: 2.0.0
+ - name: pylev
+ version: 1.4.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libexpat: ">=2.5.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- minizip: ">=4.0.1,<5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/freexl-2.0.0-hfbad9fb_0.conda
+ python: ">=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 40722e5f48287567cda6fb2ec1f7891b
- sha256: 9cb4957d1431bc57bc95b1e99a50669d91ac3441226a78f69fa030d52f2bda77
+ md5: edf8651c4379d9d1495ad6229622d150
+ sha256: 50bd91767686bfe769e50a5a1b883e238d944a6163fea43e7c0beaac54ca674f
category: main
optional: false
- - name: gdk-pixbuf
- version: 2.42.10
+ - name: pylev
+ version: 1.4.0
manager: conda
platform: osx-arm64
dependencies:
- libglib: ">=2.78.0,<3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.10-h15fa40c_4.conda
+ python: ">=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ed5cfaa924087471c439d94a0e393364
- sha256: d0ec06b17a6c9aa13e56b7ce188b061ffb11f5e964cade7e4757156dca2aa5a7
- category: dev
- optional: true
- - name: gts
- version: 0.7.6
+ md5: edf8651c4379d9d1495ad6229622d150
+ sha256: 50bd91767686bfe769e50a5a1b883e238d944a6163fea43e7c0beaac54ca674f
+ category: main
+ optional: false
+ - name: pyobjc-core
+ version: "10.0"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libcxx: ">=15.0.7"
- libglib: ">=2.76.3,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda
+ libffi: ">=3.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.0-py311hf110eff_0.conda
hash:
- md5: 21b4dd3098f63a74cf2aa9159cbef57d
- sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba
- category: dev
- optional: true
- - name: krb5
- version: 1.21.2
+ md5: d26705887703d13c655a6098516e06e2
+ sha256: 031b8c48866f1f97a4a12d6a3ea0dc94cb6a735918871460b26f4779f5a01125
+ category: main
+ optional: false
+ - name: pyobjc-core
+ version: "10.0"
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- libedit: ">=3.1.20191231,<4.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.2-h92f50d5_0.conda
+ libffi: ">=3.4,<4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.0-py311hb702dc4_0.conda
hash:
- md5: 92f1cff174a538e0722bf2efb16fc0b2
- sha256: 70bdb9b4589ec7c7d440e485ae22b5a352335ffeb91a771d4c162996c3070875
+ md5: 5c441ab09e2d9faf6e875ea9c446b445
+ sha256: d3bb68f8da77bffad5fa690d2cc1aeb0be0608ed0b6e08a96d8fc3613f2e7135
category: main
optional: false
- - name: lcms2
- version: "2.15"
+ - name: pyobjc-framework-cocoa
+ version: "10.0"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.15-hf2736f0_3.conda
+ libffi: ">=3.4,<4.0a0"
+ pyobjc-core: 10.0.*
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.0-py311hf110eff_1.conda
hash:
- md5: bbaac531169fed3e09ae31aff80aa069
- sha256: 3d07ba04602617c3084b302c8a6fa30b2e4b20511180f45992b289c312298018
+ md5: 8fb67274a648901045368717d6221aed
+ sha256: 54530c1b3bfc361e027adbd8f9d9a23e7c102c7f58c04a169da1457f82975724
category: main
optional: false
- - name: libopenblas
- version: 0.3.24
+ - name: pyobjc-framework-cocoa
+ version: "10.0"
manager: conda
platform: osx-arm64
dependencies:
- libgfortran: 5.*
- libgfortran5: ">=12.3.0"
- llvm-openmp: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda
+ libffi: ">=3.4,<4.0a0"
+ pyobjc-core: 10.0.*
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.0-py311hb702dc4_1.conda
hash:
- md5: aacb05989f358affe1bafd4ea7294db4
- sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3
+ md5: ee9430e4e9b69a6270c966bb7439c9a0
+ sha256: 31a7542b8ced5cb3bc236be0b5777dab4bc0e57fbfc5423e9d0ae09ce8eae16c
category: main
optional: false
- - name: libthrift
- version: 0.19.0
+ - name: pyopenssl
+ version: 23.3.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- libevent: ">=2.1.12,<2.1.13.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda
+ cryptography: ">=41.0.5,<42"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 4b8b21eb00d9019e9fa351141da2a6ac
- sha256: b2c1b30d36f0412c0c0313db76a0236d736f3a9b887b8ed16182f531e4b7cb80
+ md5: 7819533e674dbbc51468f3228b9b1bb6
+ sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010
category: main
optional: false
- - name: libwebp
- version: 1.3.2
+ - name: pyopenssl
+ version: 23.3.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- giflib: ">=5.2.1,<5.3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-1.3.2-hf30222e_1.conda
+ python: ">=3.7"
+ cryptography: ">=41.0.5,<42"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda
hash:
- md5: a07cf7f5425eb51b79880fb66837200f
- sha256: 5ee611009277c8aaef1a5355df6a05100e563735ec33ef019f6415db0b83d548
- category: dev
- optional: true
- - name: openjpeg
- version: 2.5.0
+ md5: 7819533e674dbbc51468f3228b9b1bb6
+ sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010
+ category: main
+ optional: false
+ - name: pyopenssl
+ version: 23.3.0
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.0-h4c1507b_3.conda
+ python: ">=3.7"
+ cryptography: ">=41.0.5,<42"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 4127dd217a010d9c6cbefdaae07d9f19
- sha256: a6998c0da4643a84dc7c0b3a9e5137db258619ea922317bb7d9ae64f54b4a9ed
+ md5: 7819533e674dbbc51468f3228b9b1bb6
+ sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010
category: main
optional: false
- - name: orc
- version: 1.9.0
+ - name: pyparsing
+ version: 3.1.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-1.9.0-h7c018df_4.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda
+ hash:
+ md5: 176f7d56f0cfe9008bdf1bccd7de02fb
+ sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b
+ category: main
+ optional: false
+ - name: pyparsing
+ version: 3.1.1
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda
hash:
- md5: 5873127225c5803d45b550024a01af1c
- sha256: f33040335efdabbf765606b5523a5691b04547b988d65683b2671faa53bb2a1b
+ md5: 176f7d56f0cfe9008bdf1bccd7de02fb
+ sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b
category: main
optional: false
- - name: prettier
- version: 3.1.0
+ - name: pyparsing
+ version: 3.1.1
manager: conda
platform: osx-arm64
dependencies:
- nodejs: ">=20.8.1,<21.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.1.0-hb67532b_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda
hash:
- md5: dfa0c94c177b8163579301aa4672f245
- sha256: c71c69ba2420da67a4bc1a5a85deab03e3c37cb4dea44a3bef01cc91e24bb1da
+ md5: 176f7d56f0cfe9008bdf1bccd7de02fb
+ sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b
category: main
optional: false
- - name: python
- version: 3.11.6
+ - name: pyproj
+ version: 3.6.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libffi: ">=3.4,<4.0a0"
- libsqlite: ">=3.43.0,<4.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- ncurses: ">=6.4,<7.0a0"
- openssl: ">=3.1.3,<4.0a0"
- readline: ">=8.2,<9.0a0"
- tk: ">=8.6.13,<8.7.0a0"
- tzdata: ""
- xz: ">=5.2.6,<6.0a0"
- pip: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.6-h47c9636_0_cpython.conda
+ certifi: ""
+ libgcc-ng: ">=12"
+ proj: ">=9.3.0,<9.3.1.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py311h1facc83_4.conda
hash:
- md5: 2271df1db9534f5cac7c2d0820c3359d
- sha256: 77054fa9a8fc30f71a18f599ee2897905a3c515202b614fa0f793add7a04a155
+ md5: 75d504c6787edc377ebdba087a26a61b
+ sha256: 4eb94c421b5c635b770e5fbd2774cf1dd4570ad69baf1c248f978943df352896
category: main
optional: false
- - name: re2
- version: 2023.06.02
+ - name: pyproj
+ version: 3.6.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libre2-11: 2023.06.02
- url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.06.02-h6135d0a_0.conda
+ certifi: ""
+ proj: ">=9.3.0,<9.3.1.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.6.1-py311he36daed_4.conda
hash:
- md5: 8f23674174b155300696a2be8b5c1407
- sha256: 963847258a82d9647311c5eb8829a49ac2161df12a304d5d6e61f788f0563442
+ md5: 28930c73c9c05d44d053620d44397b79
+ sha256: d1d44bb257545006b128d30b4454c42e3f7cd133a1c53998afcf7253529f8263
category: main
optional: false
- - name: sqlite
- version: 3.44.0
+ - name: pyproj
+ version: 3.6.1
manager: conda
platform: osx-arm64
dependencies:
- libsqlite: 3.44.0
- libzlib: ">=1.2.13,<1.3.0a0"
- ncurses: ">=6.4,<7.0a0"
- readline: ">=8.2,<9.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.44.0-hf2abe2d_0.conda
+ certifi: ""
+ proj: ">=9.3.0,<9.3.1.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.6.1-py311h20a9b75_4.conda
hash:
- md5: 0080e3f5d7d13d3b1e244ed24642ca9e
- sha256: 8263043d2a5762a5bbbb4ceee28382d97e70182fff8d45371b65fedda0b709ee
+ md5: c55fab7aa4252057e5e5efa90bd10cbe
+ sha256: 9d9923063e21aac5831b3dca820be3a824366f6871c839ea545f9b5e7358c844
category: main
optional: false
- - name: aiofiles
- version: 23.2.1
+ - name: pyproject_hooks
+ version: 1.0.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda
+ tomli: ">=1.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda
hash:
- md5: a2ee5b45771a700cf442a2edb151594e
- sha256: 98c9b4480dba1ae72c9a187cee7164ed1704f03c82576940311b5c3b55118ee5
+ md5: 21de50391d584eb7f4441b9de1ad773f
+ sha256: 016340837fcfef57b351febcbe855eedf0c1f0ecfc910ed48c7fbd20535f9847
category: main
optional: false
- - name: alabaster
- version: 0.7.13
+ - name: pyproject_hooks
+ version: 1.0.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.13-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ tomli: ">=1.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 06006184e203b61d3525f90de394471e
- sha256: b2d160a050996950434c6e87a174fc01c4a937cbeffbdd20d1b46126b4478a95
+ md5: 21de50391d584eb7f4441b9de1ad773f
+ sha256: 016340837fcfef57b351febcbe855eedf0c1f0ecfc910ed48c7fbd20535f9847
category: main
optional: false
- - name: anyascii
- version: 0.3.2
+ - name: pyproject_hooks
+ version: 1.0.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/anyascii-0.3.2-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ tomli: ">=1.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 70b6fc71d80ea6176f5302ebbeb13d8a
- sha256: 8ad0591c262e63f3a66fe093886a4b5d00d3ad6223560fc2a88da441c672fddc
+ md5: 21de50391d584eb7f4441b9de1ad773f
+ sha256: 016340837fcfef57b351febcbe855eedf0c1f0ecfc910ed48c7fbd20535f9847
category: main
optional: false
- - name: appdirs
- version: 1.4.4
+ - name: pysocks
+ version: 1.7.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
hash:
- md5: 5f095bc6454094e96f146491fd03633b
- sha256: ae9fb8f68281f84482f2c234379aa12405a9e365151d43af20b3ae1f17312111
+ md5: 2a7de29fb590ca14b5243c4c812c8025
+ sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
category: main
optional: false
- - name: appnope
- version: 0.1.3
+ - name: pysocks
+ version: 1.7.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.3-pyhd8ed1ab_0.tar.bz2
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
hash:
- md5: 54ac328d703bff191256ffa1183126d1
- sha256: b209a68ac55eb9ecad7042f0d4eedef5da924699f6cdf54ac1826869cfdae742
+ md5: 2a7de29fb590ca14b5243c4c812c8025
+ sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
category: main
optional: false
- - name: astroid
- version: 3.0.1
+ - name: pysocks
+ version: 1.7.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-3.0.1-py311h267d04e_0.conda
+ __unix: ""
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
hash:
- md5: 1f1ed24d8d83b882f223403c119a1e44
- sha256: 97c2611101771a148a8c0b4fff48e93e2e969a2f5998f21d6aa034ca339fc209
+ md5: 2a7de29fb590ca14b5243c4c812c8025
+ sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
category: main
optional: false
- - name: attrs
- version: 23.1.0
+ - name: pytest
+ version: 7.4.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ colorama: ""
+ exceptiongroup: ">=1.0.0rc8"
+ iniconfig: ""
+ packaging: ""
+ pluggy: ">=0.12,<2.0"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda
+ tomli: ">=1.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda
hash:
- md5: 3edfead7cedd1ab4400a6c588f3e75f8
- sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821
+ md5: 5bdca0aca30b0ee62bb84854e027eae0
+ sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0
category: main
optional: false
- - name: aws-c-auth
- version: 0.7.6
+ - name: pytest
+ version: 7.4.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.6-h30f9597_0.conda
+ packaging: ""
+ colorama: ""
+ iniconfig: ""
+ python: ">=3.7"
+ exceptiongroup: ">=1.0.0rc8"
+ tomli: ">=1.0.0"
+ pluggy: ">=0.12,<2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda
hash:
- md5: 91a5e2b3608eaa0760c0921e00cad72c
- sha256: 349efb5d66e108cfe21df0cf62209f5175b7a59b99ef7bf96f841274ccb2cc56
+ md5: 5bdca0aca30b0ee62bb84854e027eae0
+ sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0
category: main
optional: false
- - name: aws-c-mqtt
- version: 0.9.9
+ - name: pytest
+ version: 7.4.3
manager: conda
platform: osx-arm64
dependencies:
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.9.9-h2364c62_0.conda
+ packaging: ""
+ colorama: ""
+ iniconfig: ""
+ python: ">=3.7"
+ exceptiongroup: ">=1.0.0rc8"
+ tomli: ">=1.0.0"
+ pluggy: ">=0.12,<2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda
hash:
- md5: f6fa220e8b10a832127be45ddb7f6f04
- sha256: f82dd9660edecf32482004d98a09ed6b2929cb3787be43e54f5db71be1d08b62
+ md5: 5bdca0aca30b0ee62bb84854e027eae0
+ sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0
category: main
optional: false
- - name: backoff
- version: 2.2.1
+ - name: pytest-console-scripts
+ version: 1.4.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ importlib-metadata: ">=3.6"
+ pytest: ">=4.0.0"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2
- hash:
- md5: 4600709bd85664d8606ae0c76642f8db
- sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de
- category: dev
- optional: true
- - name: backports
- version: "1.0"
- manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-console-scripts-1.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 54ca2e08b3220c148a1d8329c2678e02
- sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd
+ md5: ee8808504c73665bed76e20ede28bd56
+ sha256: d6603e211019f2581c9f3c0922133b190a46e4ceaad3e3e0e6149f31bc593fa1
category: main
optional: false
- - name: backports.zoneinfo
- version: 0.2.1
+ - name: pytest-console-scripts
+ version: 1.4.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zoneinfo-0.2.1-py311h267d04e_8.conda
+ python: ">=3.7"
+ importlib-metadata: ">=3.6"
+ pytest: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-console-scripts-1.4.1-pyhd8ed1ab_0.conda
hash:
- md5: acbef984789bc78fc49cca2e736b8006
- sha256: a1cdbc446ff4db99e9e39b73b1611932dc9c5111ecd90dd131fa6fdf62de904d
+ md5: ee8808504c73665bed76e20ede28bd56
+ sha256: d6603e211019f2581c9f3c0922133b190a46e4ceaad3e3e0e6149f31bc593fa1
category: main
optional: false
- - name: blinker
- version: 1.7.0
+ - name: pytest-console-scripts
+ version: 1.4.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ importlib-metadata: ">=3.6"
+ pytest: ">=4.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-console-scripts-1.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 550da20b2c2e38be9cc44bb819fda5d5
- sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177
+ md5: ee8808504c73665bed76e20ede28bd56
+ sha256: d6603e211019f2581c9f3c0922133b190a46e4ceaad3e3e0e6149f31bc593fa1
category: main
optional: false
- - name: brotli-python
- version: 1.1.0
+ - name: pytest-cov
+ version: 4.1.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311ha891d26_1.conda
+ coverage: ">=5.2.1"
+ pytest: ">=4.6"
+ python: ">=3.7"
+ toml: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 5e802b015e33447d1283d599d21f052b
- sha256: 2d78c79ccf2c17236c52ef217a4c34b762eb7908a6903d94439f787aac1c8f4b
+ md5: 06eb685a3a0b146347a58dda979485da
+ sha256: f07d3b44cabbed7843de654c4a6990a08475ce3b708bb735c7da9842614586f2
category: main
optional: false
- - name: cached_property
- version: 1.5.2
+ - name: pytest-cov
+ version: 4.1.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2
+ toml: ""
+ python: ">=3.7"
+ pytest: ">=4.6"
+ coverage: ">=5.2.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 576d629e47797577ab0f1b351297ef4a
- sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7
+ md5: 06eb685a3a0b146347a58dda979485da
+ sha256: f07d3b44cabbed7843de654c4a6990a08475ce3b708bb735c7da9842614586f2
category: main
optional: false
- - name: cachetools
- version: 5.3.2
+ - name: pytest-cov
+ version: 4.1.0
manager: conda
platform: osx-arm64
dependencies:
+ toml: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.2-pyhd8ed1ab_0.conda
+ pytest: ">=4.6"
+ coverage: ">=5.2.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 185cc1bf1d5af90020292888a3c7eb5d
- sha256: cb8a6688d5650e4546a5f3c5b825bfe3c82594f1f588a93817f1bdb23e74baad
+ md5: 06eb685a3a0b146347a58dda979485da
+ sha256: f07d3b44cabbed7843de654c4a6990a08475ce3b708bb735c7da9842614586f2
category: main
optional: false
- - name: cachy
- version: 0.3.0
+ - name: pytest-mock
+ version: 3.12.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/cachy-0.3.0-pyhd8ed1ab_1.tar.bz2
+ pytest: ">=5.0"
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda
hash:
- md5: 5dfee17f24e2dfd18d7392b48c9351e2
- sha256: 9b193a4e483c4d0004bc5b88fac7a02516b6311137ab61b8db85aa9741422e35
+ md5: ac9fedc9a0c397f2318e82525491dd83
+ sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0
category: main
optional: false
- - name: cairo
- version: 1.18.0
+ - name: pytest-mock
+ version: 3.12.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- icu: ">=73.2,<74.0a0"
- libcxx: ">=16.0.6"
- libglib: ">=2.78.0,<3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- pixman: ">=0.42.2,<1.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hd1e100b_0.conda
+ python: ">=3.8"
+ pytest: ">=5.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda
hash:
- md5: 3fa6eebabb77f65e82f86b72b95482db
- sha256: 599f8820553b3a3405706d9cad390ac199e24515a0a82c87153c9b5b5fdba3b8
+ md5: ac9fedc9a0c397f2318e82525491dd83
+ sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0
category: main
optional: false
- - name: catalystcoop.dbfread
- version: 3.0.0
+ - name: pytest-mock
+ version: 3.12.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.dbfread-3.0.0-py_0.tar.bz2
+ python: ">=3.8"
+ pytest: ">=5.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda
hash:
- md5: 301d8b0d49e76f6bd586d2c96c2e259e
- sha256: bfba35085bcf84c3368b38ed0c5e6f03aeadf0712e866cb9e89283d6ff5292d7
+ md5: ac9fedc9a0c397f2318e82525491dd83
+ sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0
category: main
optional: false
- - name: cchardet
- version: 2.1.7
+ - name: pytest-xdist
+ version: 3.5.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/cchardet-2.1.7-py311ha891d26_5.conda
+ execnet: ">=1.1"
+ pytest: ">=6.2.0"
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda
hash:
- md5: a13c24d173619a3d04af20fb9824414c
- sha256: 6834d37c1c301f9bd7361c294559aff01b3680d65448f638f5c53eb7b7c44c03
+ md5: d5f595da2daead898ca958ac62f0307b
+ sha256: 8dc1d422e48e5a80eb72e26ed0135bb4843cf508d3b1cb006c3257c8639784d1
category: main
optional: false
- - name: certifi
- version: 2023.7.22
+ - name: pytest-xdist
+ version: 3.5.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda
+ execnet: ">=1.1"
+ pytest: ">=6.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda
hash:
- md5: 7f3dbc9179b4dde7da98dfb151d0ad22
- sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31
+ md5: d5f595da2daead898ca958ac62f0307b
+ sha256: 8dc1d422e48e5a80eb72e26ed0135bb4843cf508d3b1cb006c3257c8639784d1
category: main
optional: false
- - name: cfgv
- version: 3.3.1
+ - name: pytest-xdist
+ version: 3.5.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ execnet: ">=1.1"
+ pytest: ">=6.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.5.0-pyhd8ed1ab_0.conda
hash:
- md5: ebb5f5f7dc4f1a3780ef7ea7738db08c
- sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c
+ md5: d5f595da2daead898ca958ac62f0307b
+ sha256: 8dc1d422e48e5a80eb72e26ed0135bb4843cf508d3b1cb006c3257c8639784d1
category: main
optional: false
- - name: chardet
- version: 5.2.0
+ - name: python
+ version: 3.11.6
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/chardet-5.2.0-py311h267d04e_1.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ ld_impl_linux-64: ">=2.36.1"
+ libexpat: ">=2.5.0,<3.0a0"
+ libffi: ">=3.4,<4.0a0"
+ libgcc-ng: ">=12"
+ libnsl: ">=2.0.0,<2.1.0a0"
+ libsqlite: ">=3.43.0,<4.0a0"
+ libuuid: ">=2.38.1,<3.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ ncurses: ">=6.4,<7.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ readline: ">=8.2,<9.0a0"
+ tk: ">=8.6.13,<8.7.0a0"
+ tzdata: ""
+ xz: ">=5.2.6,<6.0a0"
+ pip: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.6-hab00c5b_0_cpython.conda
hash:
- md5: 2aa7eb0b906818f900e2075fc244976f
- sha256: 69541a0c834baa0b404cb55f8389bb53f8e9d6962055d68285635d6fbc04334c
+ md5: b0dfbe2fcbfdb097d321bfd50ecddab1
+ sha256: 84f13bd70cff5dcdaee19263b2d4291d5793856a718efc1b63a9cfa9eb6e2ca1
category: main
optional: false
- - name: charset-normalizer
- version: 3.3.2
+ - name: python
+ version: 3.11.6
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libffi: ">=3.4,<4.0a0"
+ libsqlite: ">=3.43.0,<4.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ ncurses: ">=6.4,<7.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ readline: ">=8.2,<9.0a0"
+ tk: ">=8.6.13,<8.7.0a0"
+ tzdata: ""
+ xz: ">=5.2.6,<6.0a0"
+ pip: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.6-h30d4d87_0_cpython.conda
hash:
- md5: 7f4a9e3fcff3f6356ae99244a014da6a
- sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9
+ md5: 4d66c5fc01e9be526afe5d828d4de24d
+ sha256: e3ed331204fbeb03a9a2c2fa834e74997ad4f732ba2124b36f327d38b0cded93
category: main
optional: false
- - name: click
- version: 8.1.7
+ - name: python
+ version: 3.11.6
manager: conda
platform: osx-arm64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libexpat: ">=2.5.0,<3.0a0"
+ libffi: ">=3.4,<4.0a0"
+ libsqlite: ">=3.43.0,<4.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ ncurses: ">=6.4,<7.0a0"
+ openssl: ">=3.1.3,<4.0a0"
+ readline: ">=8.2,<9.0a0"
+ tk: ">=8.6.13,<8.7.0a0"
+ tzdata: ""
+ xz: ">=5.2.6,<6.0a0"
+ pip: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.6-h47c9636_0_cpython.conda
hash:
- md5: f3ad426304898027fc619827ff428eca
- sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec
+ md5: 2271df1db9534f5cac7c2d0820c3359d
+ sha256: 77054fa9a8fc30f71a18f599ee2897905a3c515202b614fa0f793add7a04a155
category: main
optional: false
- - name: cloudpickle
- version: 3.0.0
+ - name: python-build
+ version: 1.0.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda
+ colorama: ""
+ importlib-metadata: ">=4.6"
+ packaging: ">=19.0"
+ pyproject_hooks: ""
+ python: ">=3.7"
+ tomli: ">=1.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda
hash:
- md5: 753d29fe41bb881e4b9c004f0abf973f
- sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754
+ md5: d9ccabf228cb98419ca3d5694b25e1a2
+ sha256: f32748beb76abf5173ee956f30a82c9e9b4a3d9924b0960f1e19e267ea4f01de
category: main
optional: false
- - name: colorama
- version: 0.4.6
+ - name: python-build
+ version: 1.0.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
+ colorama: ""
+ pyproject_hooks: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2
+ tomli: ">=1.1.0"
+ packaging: ">=19.0"
+ importlib-metadata: ">=4.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda
hash:
- md5: 3faab06a954c2a04039983f2c4a50d99
- sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698
+ md5: d9ccabf228cb98419ca3d5694b25e1a2
+ sha256: f32748beb76abf5173ee956f30a82c9e9b4a3d9924b0960f1e19e267ea4f01de
category: main
optional: false
- - name: crashtest
- version: 0.4.1
+ - name: python-build
+ version: 1.0.3
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/crashtest-0.4.1-pyhd8ed1ab_0.tar.bz2
+ colorama: ""
+ pyproject_hooks: ""
+ python: ">=3.7"
+ tomli: ">=1.1.0"
+ packaging: ">=19.0"
+ importlib-metadata: ">=4.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda
hash:
- md5: 709a2295dd907bb34afb57d54320642f
- sha256: 2f05954a3faf0700c14c1deddc085385160ee32abe111699c78d9cb277e915cc
+ md5: d9ccabf228cb98419ca3d5694b25e1a2
+ sha256: f32748beb76abf5173ee956f30a82c9e9b4a3d9924b0960f1e19e267ea4f01de
category: main
optional: false
- - name: cycler
- version: 0.12.1
+ - name: python-dateutil
+ version: 2.8.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ six: ">=1.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 5cd86562580f274031ede6aa6aa24441
- sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8
+ md5: dd999d1cc9f79e67dbb855c8924c7984
+ sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da
category: main
optional: false
- - name: dagster-pipes
- version: 1.5.9
+ - name: python-dateutil
+ version: 2.8.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ six: ">=1.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 0a9787859365c4d2425e589ac53c462b
- sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
+ md5: dd999d1cc9f79e67dbb855c8924c7984
+ sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da
category: main
optional: false
- - name: dataclasses
- version: "0.8"
+ - name: python-dateutil
+ version: 2.8.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2
+ python: ">=3.6"
+ six: ">=1.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: a362b2124b06aad102e2ee4581acee7d
- sha256: 63a83e62e0939bc1ab32de4ec736f6403084198c4639638b354a352113809c92
+ md5: dd999d1cc9f79e67dbb855c8924c7984
+ sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da
category: main
optional: false
- - name: debugpy
- version: 1.8.0
+ - name: python-dotenv
+ version: 1.0.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.0-py311ha891d26_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.0-pyhd8ed1ab_1.conda
hash:
- md5: 575b875f1e7901213e9a0f44db9deccc
- sha256: a7c3b4abf2d3d5256be7e891e76c86dd52e3893e9495d468e3c95e82932b9d7b
+ md5: 111e7f9edd31865e2659fa9aad8ec8fd
+ sha256: bc5663f224ff6d8a399ec6bd8517e0c0f87a69ead438f82e5ce5c30f00077586
category: main
optional: false
- - name: decorator
- version: 5.1.1
+ - name: python-dotenv
+ version: 1.0.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.0-pyhd8ed1ab_1.conda
hash:
- md5: 43afe5ab04e35e17ba28649471dd7364
- sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2
+ md5: 111e7f9edd31865e2659fa9aad8ec8fd
+ sha256: bc5663f224ff6d8a399ec6bd8517e0c0f87a69ead438f82e5ce5c30f00077586
category: main
optional: false
- - name: defusedxml
- version: 0.7.1
+ - name: python-dotenv
+ version: 1.0.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.0-pyhd8ed1ab_1.conda
hash:
- md5: 961b3a227b437d82ad7054484cfa71b2
- sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be
+ md5: 111e7f9edd31865e2659fa9aad8ec8fd
+ sha256: bc5663f224ff6d8a399ec6bd8517e0c0f87a69ead438f82e5ce5c30f00077586
category: main
optional: false
- - name: distlib
- version: 0.3.7
+ - name: python-fastjsonschema
+ version: 2.19.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: 2.7|>=3.6
- url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
+ python: ">=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 12d8aae6994f342618443a8f05c652a0
- sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
+ md5: e4dbdb3585c0266b4710467fe7b75cf4
+ sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
category: main
optional: false
- - name: docstring_parser
- version: "0.15"
+ - name: python-fastjsonschema
+ version: 2.19.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/docstring_parser-0.15-pyhd8ed1ab_0.conda
+ python: ">=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: 031fcb28b8e80c1f7bec22ccdf4904b2
- sha256: 9b22e1f1d0decc26cc0743ce929e1a7e233fd7921d1b5c390db0691b8042a706
+ md5: e4dbdb3585c0266b4710467fe7b75cf4
+ sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
category: main
optional: false
- - name: docutils
- version: 0.20.1
+ - name: python-fastjsonschema
+ version: 2.19.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_2.conda
+ python: ">=3.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: e82ee6e9db96d5f7ddf289399744240d
- sha256: 3bc810b946ef8f87681ea4bee2610e8c418f9f61772f5d1ff3ffa803ae7cfbb6
+ md5: e4dbdb3585c0266b4710467fe7b75cf4
+ sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
category: main
optional: false
- - name: entrypoints
- version: "0.4"
+ - name: python-json-logger
+ version: 2.0.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda
hash:
- md5: 3cf04868fee0a029769bd41f4b2fbf2d
- sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af
+ md5: a61bf9ec79426938ff785eb69dbb1960
+ sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca
category: main
optional: false
- - name: et_xmlfile
- version: 1.1.0
+ - name: python-json-logger
+ version: 2.0.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-1.1.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda
hash:
- md5: a2f2138597905eaa72e561d8efb42cf3
- sha256: 0c7bb50e1382615a660468dc531b8b17c5b91b88a02ed131c8e3cc63db507ce2
+ md5: a61bf9ec79426938ff785eb69dbb1960
+ sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca
category: main
optional: false
- - name: exceptiongroup
- version: 1.1.3
+ - name: python-json-logger
+ version: 2.0.7
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda
hash:
- md5: e6518222753f519e911e83136d2158d9
- sha256: c28f715e049fe0f09785660bcbffa175ffb438720e5bc5a60d56d4b08364b315
+ md5: a61bf9ec79426938ff785eb69dbb1960
+ sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca
category: main
optional: false
- - name: execnet
- version: 2.0.2
+ - name: python-multipart
+ version: 0.0.6
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/execnet-2.0.2-pyhd8ed1ab_0.conda
- hash:
- md5: 67de0d8241e1060a479e3c37793e26f9
- sha256: 88ea68a360198af39368beecf057af6b31f0ae38071b2bdb2aa961b6ae5427c0
- category: main
- optional: false
- - name: executing
- version: 2.0.1
- manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.6-pyhd8ed1ab_0.conda
hash:
- md5: e16be50e378d8a4533b989035b196ab8
- sha256: c738804ab1e6376f8ea63372229a04c8d658dc90fd5a218c6273a2eaf02f4057
+ md5: f4f642eeda814c1b65f46fbdf7e89096
+ sha256: 2a9b8d02a6ec9862433cfc2741c4cbfe321e4ae3bab066f7ed84bc00effb73d7
category: main
optional: false
- - name: filelock
- version: 3.13.1
+ - name: python-multipart
+ version: 0.0.6
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.6-pyhd8ed1ab_0.conda
hash:
- md5: 0c1729b74a8152fde6a38ba0a2ab9f45
- sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b
+ md5: f4f642eeda814c1b65f46fbdf7e89096
+ sha256: 2a9b8d02a6ec9862433cfc2741c4cbfe321e4ae3bab066f7ed84bc00effb73d7
category: main
optional: false
- - name: frozenlist
- version: 1.4.0
+ - name: python-multipart
+ version: 0.0.6
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.4.0-py311heffc1b2_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.6-pyhd8ed1ab_0.conda
hash:
- md5: 38016fce1505beb7f18bcb86ee02d276
- sha256: 48e086e66914cde5e4d76d855312be8faabb16df7062aad5915be31ee12dee44
+ md5: f4f642eeda814c1b65f46fbdf7e89096
+ sha256: 2a9b8d02a6ec9862433cfc2741c4cbfe321e4ae3bab066f7ed84bc00effb73d7
category: main
optional: false
- - name: fsspec
- version: 2023.10.0
+ - name: python-slugify
+ version: 8.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda
+ python: ">=3.7"
+ text-unidecode: ">=1.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.1-pyhd8ed1ab_2.conda
hash:
- md5: 5b86cf1ceaaa9be2ec4627377e538db1
- sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6
+ md5: 519897ff446e0dc056e12402e6785cd5
+ sha256: 68ac5a6a467b9c0a98e326ec4cc8e3c01d4514f1200c1b44102923424e8ed1eb
category: main
optional: false
- - name: google-cloud-sdk
- version: 455.0.0
+ - name: python-slugify
+ version: 8.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/google-cloud-sdk-455.0.0-py311h267d04e_0.conda
+ python: ">=3.7"
+ text-unidecode: ">=1.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.1-pyhd8ed1ab_2.conda
hash:
- md5: 2f60b4b18d39e85bdf3557f19bd407be
- sha256: 9511a6c98a01a1e5013c73d8e7cb0d1200643e9d531cbc49ebebfb5cd9e71f27
+ md5: 519897ff446e0dc056e12402e6785cd5
+ sha256: 68ac5a6a467b9c0a98e326ec4cc8e3c01d4514f1200c1b44102923424e8ed1eb
category: main
optional: false
- - name: greenlet
- version: 3.0.1
+ - name: python-slugify
+ version: 8.0.1
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.1-py311hbaf5611_0.conda
+ python: ">=3.7"
+ text-unidecode: ">=1.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.1-pyhd8ed1ab_2.conda
hash:
- md5: 9136cd518f65a952b2a37c80645ef610
- sha256: 6c8e2e5024ee26099d396a95a55c49ffe3eb8985c764ce875e95f01711f4c2a7
+ md5: 519897ff446e0dc056e12402e6785cd5
+ sha256: 68ac5a6a467b9c0a98e326ec4cc8e3c01d4514f1200c1b44102923424e8ed1eb
category: main
optional: false
- - name: hpack
- version: 4.0.0
+ - name: python-tzdata
+ version: "2023.3"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda
hash:
- md5: 914d6646c4dbb1fd3ff539830a12fd71
- sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8
+ md5: 2590495f608a63625e165915fb4e2e34
+ sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6
category: main
optional: false
- - name: httptools
- version: 0.6.1
+ - name: python-tzdata
+ version: "2023.3"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py311h05b510d_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda
hash:
- md5: be46012a5eafd7944c8e72dc129464c7
- sha256: 7fa4b77928382b5d187380a437435f8c6726253387742a1944db03407b8c7a67
- category: dev
- optional: true
- - name: humanfriendly
- version: "10.0"
+ md5: 2590495f608a63625e165915fb4e2e34
+ sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6
+ category: main
+ optional: false
+ - name: python-tzdata
+ version: "2023.3"
manager: conda
platform: osx-arm64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda
hash:
- md5: 2ed1fe4b9079da97c44cfe9c2e5078fd
- sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1
+ md5: 2590495f608a63625e165915fb4e2e34
+ sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6
category: main
optional: false
- - name: hupper
- version: "1.12"
+ - name: python_abi
+ version: "3.11"
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/hupper-1.12-pyhd8ed1ab_0.conda
+ platform: linux-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda
hash:
- md5: 2654ff96e839bc699e5c3780689a596b
- sha256: 0b172391000a008029f32e4a34d37d79b114d4ea3b6948d2be72a78568fdadcd
+ md5: d786502c97404c94d7d58d258a445a65
+ sha256: 0be3ac1bf852d64f553220c7e6457e9c047dfb7412da9d22fbaa67e60858b3cf
category: main
optional: false
- - name: hyperframe
- version: 6.0.1
+ - name: python_abi
+ version: "3.11"
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-4_cp311.conda
hash:
- md5: 9f765cbfab6870c8435b9eefecd7a1f4
- sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330
+ md5: fef7a52f0eca6bae9e8e2e255bc86394
+ sha256: f56dfe2a57b3b27bad3f9527f943548e8b2526e949d9d6fc0a383020d9359afe
category: main
optional: false
- - name: idna
- version: "3.4"
+ - name: python_abi
+ version: "3.11"
manager: conda
platform: osx-arm64
- dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-4_cp311.conda
hash:
- md5: 34272b248891bddccc64479f9a7fffed
- sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09
+ md5: 8d3751bc73d3bbb66f216fa2331d5649
+ sha256: 4837089c477b9b84fa38a17f453e6634e68237267211b27a8a2f5ccd847f4e55
category: main
optional: false
- - name: ijson
- version: 3.2.3
+ - name: pytz
+ version: 2023.3.post1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/ijson-3.2.3-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda
hash:
- md5: 6b1e4cb33f797d6487efd3ebad39d103
- sha256: 133fb51b4c638c453ef7de37cc4d412b9a4442839a9c7ad986b9bf473234b585
+ md5: c93346b446cd08c169d843ae5fc0da97
+ sha256: 6b680e63d69aaf087cd43ca765a23838723ef59b0a328799e6363eb13f52c49e
category: main
optional: false
- - name: imagesize
- version: 1.4.1
+ - name: pytz
+ version: 2023.3.post1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda
hash:
- md5: 7de5386c8fea29e76b303f37dde4c352
- sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460
+ md5: c93346b446cd08c169d843ae5fc0da97
+ sha256: 6b680e63d69aaf087cd43ca765a23838723ef59b0a328799e6363eb13f52c49e
category: main
optional: false
- - name: iniconfig
- version: 2.0.0
+ - name: pytz
+ version: 2023.3.post1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda
hash:
- md5: f800d2da156d08e289b14e87e43c1ae5
- sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666
+ md5: c93346b446cd08c169d843ae5fc0da97
+ sha256: 6b680e63d69aaf087cd43ca765a23838723ef59b0a328799e6363eb13f52c49e
category: main
optional: false
- - name: itsdangerous
- version: 2.1.2
+ - name: pytzdata
+ version: "2020.1"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 3c3de74912f11d2b590184f03c7cd09b
- sha256: 31e3492686b4e92b53db9b48bc0eb03873b1caaf28629fee7d2d47627a2c56d3
+ md5: 7dd824593f3a861130ac17c6571546e2
+ sha256: e7e628c1247b096e3af147b1c32d5ac328266fa95656e27b79f71bb410251356
category: main
optional: false
- - name: jellyfish
- version: 1.0.1
+ - name: pytzdata
+ version: "2020.1"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/jellyfish-1.0.1-py311h0563b04_1.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: edfdb1003442aef78df1f53fe2eb2404
- sha256: c6ca4d92eddd8c8ecbe476e60b62ec05fa38d8cd0025e4585956b11c77b30315
+ md5: 7dd824593f3a861130ac17c6571546e2
+ sha256: e7e628c1247b096e3af147b1c32d5ac328266fa95656e27b79f71bb410251356
category: main
optional: false
- - name: jmespath
- version: 1.0.1
+ - name: pytzdata
+ version: "2020.1"
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 2cfa3e1cf3fb51bb9b17acc5b5e9ea11
- sha256: 95ac5f9ee95fd4e34dc051746fc86016d3d4f6abefed113e2ede049d59ec2991
+ md5: 7dd824593f3a861130ac17c6571546e2
+ sha256: e7e628c1247b096e3af147b1c32d5ac328266fa95656e27b79f71bb410251356
category: main
optional: false
- - name: json5
- version: 0.9.14
+ - name: pyu2f
+ version: 0.1.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.14-pyhd8ed1ab_0.conda
+ python: ">=2.7"
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2
hash:
- md5: dac1dabba2b5a9d1aee175c5fcc7b436
- sha256: 41514104208c092959bef0713cbd795e72c535f2f939b7903d8c97809f2adaa7
+ md5: caabbeaa83928d0c3e3949261daa18eb
+ sha256: 667a5a30b65a60b15f38fa4cb09efd6d2762b5a0a9563acd9555eaa5e0b953a2
category: main
optional: false
- - name: jsonpointer
- version: "2.4"
+ - name: pyu2f
+ version: 0.1.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-2.4-py311h267d04e_3.conda
+ six: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b6008a5b9180e58a235f5e45432dfe2e
- sha256: 807d6c44f3e34139bfd25db4409381a6ce37fad2902c58f10fa7e1c30a64333d
+ md5: caabbeaa83928d0c3e3949261daa18eb
+ sha256: 667a5a30b65a60b15f38fa4cb09efd6d2762b5a0a9563acd9555eaa5e0b953a2
category: main
optional: false
- - name: jupyterlab_widgets
- version: 3.0.9
+ - name: pyu2f
+ version: 0.1.5
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.9-pyhd8ed1ab_0.conda
+ six: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 8370e0a9dc443f9b45a23fd30e7a6b3b
- sha256: ec66991d2175f7b1f35973d6c4f56ad9a49666f77acf1037d72f3bc6e37224f3
+ md5: caabbeaa83928d0c3e3949261daa18eb
+ sha256: 667a5a30b65a60b15f38fa4cb09efd6d2762b5a0a9563acd9555eaa5e0b953a2
category: main
optional: false
- - name: kiwisolver
- version: 1.4.5
+ - name: pywin32-on-windows
+ version: 0.1.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.5-py311he4fd1f5_1.conda
+ __unix: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2
hash:
- md5: 4c871d65040b8c7bbb914df7f8f11492
- sha256: 907af50734789d47b3e8b2148dde763699dc746c64e5849baf6bd720c8cd0235
+ md5: 2807a0becd1d986fe1ef9b7f8135f215
+ sha256: 6502696aaef571913b22a808b15c185bd8ea4aabb952685deb29e6a6765761cb
category: main
optional: false
- - name: libblas
- version: 3.9.0
+ - name: pywin32-on-windows
+ version: 0.1.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libopenblas: ">=0.3.24,<1.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda
+ __unix: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2
hash:
- md5: f50b1fd98593278e18319653cff9c475
- sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d
+ md5: 2807a0becd1d986fe1ef9b7f8135f215
+ sha256: 6502696aaef571913b22a808b15c185bd8ea4aabb952685deb29e6a6765761cb
category: main
optional: false
- - name: libcurl
- version: 8.4.0
+ - name: pywin32-on-windows
+ version: 0.1.0
manager: conda
platform: osx-arm64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libnghttp2: ">=1.52.0,<2.0a0"
- libssh2: ">=1.11.0,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.4.0-h2d989ff_0.conda
+ __unix: ""
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2
hash:
- md5: afabb3372209028627ec03e206f4d967
- sha256: 5ca24ab030b1c56ce07921bf901ea99076e8b7e45586b4a04e5187cc67c87273
+ md5: 2807a0becd1d986fe1ef9b7f8135f215
+ sha256: 6502696aaef571913b22a808b15c185bd8ea4aabb952685deb29e6a6765761cb
category: main
optional: false
- - name: libgd
- version: 2.3.3
- manager: conda
- platform: osx-arm64
- dependencies:
- expat: ""
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- icu: ">=73.2,<74.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp: ""
- libwebp-base: ">=1.3.2,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hfdf3952_9.conda
- hash:
- md5: 0d847466f115fbdaaf2b6926f2e33278
- sha256: cfdecfaa27807abc2728bd8c60b923ce1b44020553e122e9a56fc3acb77acaec
- category: dev
- optional: true
- - name: libgrpc
- version: 1.59.2
+ - name: pyxlsb
+ version: 1.0.10
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- c-ares: ">=1.20.1,<2.0a0"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- re2: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.59.2-hbcf6334_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 773cf509934965514cc62d97fb38a2d7
- sha256: fc7d7aecf633904bd945c7e4e0620d1485e90801405eb7d12269e57242916ae0
+ md5: 0c14e44bc93a99cdc11398311c3c0dcf
+ sha256: 7e6e7064ad976ba6d38e7cf5a893c93a47025d4074b888e8db31386a914935fb
category: main
optional: false
- - name: libpq
- version: "16.1"
+ - name: pyxlsb
+ version: 1.0.10
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-hd435d45_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 883bbf64780c91608f1a7df9203b79a5
- sha256: 1b5c86d5f247b3e154ae373dcebea6979368c4a0ee722d39ec33ee2fc8528c04
+ md5: 0c14e44bc93a99cdc11398311c3c0dcf
+ sha256: 7e6e7064ad976ba6d38e7cf5a893c93a47025d4074b888e8db31386a914935fb
category: main
optional: false
- - name: llvmlite
- version: 0.41.1
+ - name: pyxlsb
+ version: 1.0.10
manager: conda
platform: osx-arm64
dependencies:
- libllvm14: ">=14.0.6,<14.1.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.41.1-py311hf5d242d_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 0ef98376c9ffd4d344d1de563f405406
- sha256: 5957c1bb252221a0ab595f0341d7ae465caf096532fbd4f2180aaa6857e6f032
+ md5: 0c14e44bc93a99cdc11398311c3c0dcf
+ sha256: 7e6e7064ad976ba6d38e7cf5a893c93a47025d4074b888e8db31386a914935fb
category: main
optional: false
- - name: locket
- version: 1.0.0
+ - name: pyyaml
+ version: 6.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
- url: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ yaml: ">=0.2.5,<0.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda
hash:
- md5: 91e27ef3d05cc772ce627e51cff111c4
- sha256: 9afe0b5cfa418e8bdb30d8917c5a6cec10372b037924916f1f85b9f4899a67a6
+ md5: 52719a74ad130de8fb5d047dc91f247a
+ sha256: 28729ef1ffa7f6f9dfd54345a47c7faac5d34296d66a2b9891fb147f4efe1348
category: main
optional: false
- - name: lxml
- version: 4.9.3
+ - name: pyyaml
+ version: 6.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libxml2: ">=2.11.5,<2.12.0a0"
- libxslt: ">=1.1.37,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-4.9.3-py311hbafe683_1.conda
+ yaml: ">=0.2.5,<0.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.1-py311h2725bcf_1.conda
hash:
- md5: 5cfed11a5103844a5654446cf4d3f42a
- sha256: e7ac6818b94242a5a1800a66d362a5e0262473e2399e731dd2061737b88c09b5
+ md5: 9283f991b5e5856a99f8aabba9927df5
+ sha256: 8ce2ba443414170a2570514d0ce6d03625a847e91af9763d48dc58c338e6f7f3
category: main
optional: false
- - name: marko
- version: 1.3.1
+ - name: pyyaml
+ version: 6.0.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/marko-1.3.1-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ yaml: ">=0.2.5,<0.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.1-py311heffc1b2_1.conda
hash:
- md5: 9651c1c1c19dbc072c557e3e2da38329
- sha256: 42a84421edb86e09b83aaaa340921b8f2c78daa787305895e886ade6913d8690
+ md5: d310bfbb8230b9175c0cbc10189ad804
+ sha256: b155f5c27f0e2951256774628c4b91fdeee3267018eef29897a74e3d1316c8b0
category: main
optional: false
- - name: markupsafe
- version: 2.1.3
+ - name: pyzmq
+ version: 25.1.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ libgcc-ng: ">=12"
+ libsodium: ">=1.0.18,<1.0.19.0a0"
+ libstdcxx-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.3-py311heffc1b2_1.conda
+ zeromq: ">=4.3.5,<4.4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.1-py311h34ded2d_2.conda
hash:
- md5: 5a7b68cb9eea46bea31aaf2d11d0dd2f
- sha256: 307c1e3b2e4a2a992a6c94975910adff88cc523e2c9a41e81b2d506d8c9e7359
+ md5: ea365280db99687905b4d76cf6a3568c
+ sha256: a5ed6592f32b0caf3883a2f863e8a6258845310d4eebeab2eaf1c5abed04d6b8
category: main
optional: false
- - name: mdurl
- version: 0.1.0
+ - name: pyzmq
+ version: 25.1.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.0-pyhd8ed1ab_0.tar.bz2
+ libsodium: ">=1.0.18,<1.0.19.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ zeromq: ">=4.3.5,<4.4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.1-py311he3804a1_2.conda
hash:
- md5: f8dab71fdc13b1bf29a01248b156d268
- sha256: c678b9194e025b1fb665bec30ee20aab93399203583875b1dcc0a3b52a8f5523
+ md5: 9b1ea037c51fcdb06bd2d95804270860
+ sha256: 7a9af16e04752c50675ca99ab06888aaf8305efb5d292f62f7268ad911c967f4
category: main
optional: false
- - name: mergedeep
- version: 1.3.4
+ - name: pyzmq
+ version: 25.1.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_0.tar.bz2
+ libsodium: ">=1.0.18,<1.0.19.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ zeromq: ">=4.3.5,<4.4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-25.1.1-py311he9c0408_2.conda
hash:
- md5: 1a160a3cab5cb6bd46264b52cd6f69a2
- sha256: 41ad8c16876820981adfc6e17a62935c950214bd9a9bb092e6aaefdc89a33f0b
+ md5: 51b7458a36011c4982261478fcc62026
+ sha256: 03b78fe912c02547b284bc3404194bb4c1d9a2680e4b46f45c131a0d13d10b48
category: main
optional: false
- - name: mistune
- version: 3.0.2
+ - name: qtconsole-base
+ version: 5.5.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda
+ ipykernel: ">=4.1"
+ jupyter_client: ">=4.1"
+ jupyter_core: ""
+ packaging: ""
+ pygments: ""
+ python: ">=3.8"
+ qtpy: ">=2.4.0"
+ traitlets: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda
hash:
- md5: 5cbee699846772cc939bef23a0d524ed
- sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c
+ md5: 5528a3eda283b421055c89bface19a1c
+ sha256: e81a294941a598aabfd9462cf9aaa3b3e2c04996420f82494bdc13233de8ca70
category: main
optional: false
- - name: more-itertools
- version: 10.1.0
+ - name: qtconsole-base
+ version: 5.5.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
+ packaging: ""
+ pygments: ""
+ traitlets: ""
+ jupyter_core: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda
+ ipykernel: ">=4.1"
+ jupyter_client: ">=4.1"
+ qtpy: ">=2.4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda
hash:
- md5: 8549fafed0351bbfaa1ddaa15fdf9b4e
- sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f
+ md5: 5528a3eda283b421055c89bface19a1c
+ sha256: e81a294941a598aabfd9462cf9aaa3b3e2c04996420f82494bdc13233de8ca70
category: main
optional: false
- - name: msgpack-python
- version: 1.0.6
+ - name: qtconsole-base
+ version: 5.5.1
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.6-py311he4fd1f5_0.conda
+ packaging: ""
+ pygments: ""
+ traitlets: ""
+ jupyter_core: ""
+ python: ">=3.8"
+ ipykernel: ">=4.1"
+ jupyter_client: ">=4.1"
+ qtpy: ">=2.4.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda
hash:
- md5: f53f91443f7a3e2f0370fcb1709561ed
- sha256: bcc4d2d6d70a0a3ccb503517ce4cc85d14d5b33fab48287a75d14976a10da892
+ md5: 5528a3eda283b421055c89bface19a1c
+ sha256: e81a294941a598aabfd9462cf9aaa3b3e2c04996420f82494bdc13233de8ca70
category: main
optional: false
- - name: multidict
- version: 6.0.4
+ - name: qtpy
+ version: 2.4.1
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.0.4-py311he2be06e_1.conda
+ platform: linux-64
+ dependencies:
+ packaging: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 8713dd014bb36a581c42dcbe9c4a5216
- sha256: a58bfc6c78b60ff31507c6b8412ad56df02d3fe5675fbb70a89f8e39c498018f
+ md5: 7f391bd70d2abfb70f304ba5aa4e1261
+ sha256: 925bf48e747af6ceff1b073c10b12fc94ef79c88a34729059d253e43466a33f1
category: main
optional: false
- - name: multimethod
- version: 1.9.1
+ - name: qtpy
+ version: 2.4.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/multimethod-1.9.1-pyhd8ed1ab_0.conda
+ packaging: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 48223af3f697ccd9b114adb6a66e0f11
- sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
+ md5: 7f391bd70d2abfb70f304ba5aa4e1261
+ sha256: 925bf48e747af6ceff1b073c10b12fc94ef79c88a34729059d253e43466a33f1
category: main
optional: false
- - name: munch
- version: 4.0.0
+ - name: qtpy
+ version: 2.4.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
+ packaging: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: 376b32e8f9d3eacbd625f37d39bd507d
- sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
+ md5: 7f391bd70d2abfb70f304ba5aa4e1261
+ sha256: 925bf48e747af6ceff1b073c10b12fc94ef79c88a34729059d253e43466a33f1
category: main
optional: false
- - name: munkres
- version: 1.1.4
+ - name: rdma-core
+ version: "28.9"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2
+ __glibc: ">=2.17,<3.0.a0"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda
hash:
- md5: 2ba8498c1018c1e9c61eb99b973dfe19
- sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306
+ md5: aeffb7c06b5f65e55e6c637408dc4100
+ sha256: 832f9393ab3144ce6468c6f150db9d398fad4451e96a8879afb3059f0c9902f6
category: main
optional: false
- - name: mypy_extensions
- version: 1.0.0
+ - name: re2
+ version: 2023.06.02
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda
+ libre2-11: 2023.06.02
+ url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.06.02-h2873b5e_0.conda
hash:
- md5: 4eccaeba205f0aed9ac3a9ea58568ca3
- sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3
+ md5: bb2d5e593ef13fe4aff0bc9440f945ae
+ sha256: 3e0bfb04b6d43312d711c5b49dbc3c7660b2e6e681ed504b1b322794462a1bcd
category: main
optional: false
- - name: nest-asyncio
- version: 1.5.8
+ - name: re2
+ version: 2023.06.02
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.5.8-pyhd8ed1ab_0.conda
+ libre2-11: 2023.06.02
+ url: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.06.02-hd34609a_0.conda
hash:
- md5: a4f0e4519bc50eee4f53f689be9607f7
- sha256: d7b795b4e754136841c6da3f9fa1a0f7ec37bc7167e7dd68c5b45e657133e008
+ md5: e498042c254db56d398b6ee858888b9d
+ sha256: dd749346b868ac9a8765cd18e102f808103330b3fc1fac5d267fbf4257ea31c9
category: main
optional: false
- - name: networkx
- version: 3.2.1
+ - name: re2
+ version: 2023.06.02
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda
+ libre2-11: 2023.06.02
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.06.02-h6135d0a_0.conda
hash:
- md5: 425fce3b531bed6ec3c74fab3e5f0a1c
- sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d
+ md5: 8f23674174b155300696a2be8b5c1407
+ sha256: 963847258a82d9647311c5eb8829a49ac2161df12a304d5d6e61f788f0563442
category: main
optional: false
- - name: packaging
- version: "23.2"
+ - name: readline
+ version: "8.2"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ ncurses: ">=6.3,<7.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda
hash:
- md5: 79002079284aa895f883c6b7f3f88fd6
- sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f
+ md5: 47d31b792659ce70f470b5c82fdfb7a4
+ sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7
category: main
optional: false
- - name: pandocfilters
- version: 1.5.0
+ - name: readline
+ version: "8.2"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: "!=3.0,!=3.1,!=3.2,!=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2
+ ncurses: ">=6.3,<7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda
hash:
- md5: 457c2c8c08e54905d6954e79cb5b5db9
- sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f
+ md5: f17f77f2acf4d344734bda76829ce14e
+ sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568
category: main
optional: false
- - name: parso
- version: 0.8.3
+ - name: readline
+ version: "8.2"
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2
+ ncurses: ">=6.3,<7.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda
hash:
- md5: 17a565a0c3899244e938cdf417e7b094
- sha256: 4e26d5daf5de0e31aa5e74ac56386a361b202433b83f024fdadbf07d4a244da4
+ md5: 8cbb776a2f641b943d413b3e19df71f4
+ sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884
category: main
optional: false
- - name: pastel
- version: 0.2.1
+ - name: readthedocs-sphinx-ext
+ version: 2.2.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2
+ jinja2: ">=2.9"
+ packaging: ""
+ python: ">=3.6"
+ requests: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
hash:
- md5: a4eea5bff523f26442405bc5d1f52adb
- sha256: 9153f0f38c76a09da7688a61fdbf8f3d7504e2326bef53e4ec20d994311b15bd
+ md5: 6bc1a00f5502f9ed13526e4c6bea6900
+ sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
category: main
optional: false
- - name: pathspec
- version: 0.11.2
+ - name: readthedocs-sphinx-ext
+ version: 2.2.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.11.2-pyhd8ed1ab_0.conda
+ requests: ""
+ packaging: ""
+ python: ">=3.6"
+ jinja2: ">=2.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
hash:
- md5: e41debb259e68490e3ab81e46b639ab6
- sha256: 7bcfa6d86359d45572ba9ccaeaedc04b0452e2654fe44b6fe378d0d37b8745e1
+ md5: 6bc1a00f5502f9ed13526e4c6bea6900
+ sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
category: main
optional: false
- - name: petl
- version: 1.7.14
+ - name: readthedocs-sphinx-ext
+ version: 2.2.3
manager: conda
platform: osx-arm64
dependencies:
+ requests: ""
+ packaging: ""
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.14-pyhd8ed1ab_0.conda
+ jinja2: ">=2.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
hash:
- md5: 65813db01f2331768d909c0852ff5d70
- sha256: f802a980b04ea3355831be31c4b94421040ec95902e203ea08c2e3fc0a1f4286
+ md5: 6bc1a00f5502f9ed13526e4c6bea6900
+ sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
category: main
optional: false
- - name: pickleshare
- version: 0.7.5
+ - name: recordlinkage
+ version: "0.16"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3"
- url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2
+ jellyfish: ">=1"
+ joblib: ""
+ numexpr: ""
+ numpy: ">=1.13"
+ pandas: ">=1,<3"
+ python: ">=3.8"
+ scikit-learn: ">=1"
+ scipy: ">=1"
+ url: https://conda.anaconda.org/conda-forge/noarch/recordlinkage-0.16-pyhd8ed1ab_0.conda
hash:
- md5: 415f0ebb6198cc2801c73438a9fb5761
- sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738
+ md5: 948205d11a8b036e065c46462db0632a
+ sha256: 3f3c03719d6bdef41f8a08f51fb3e58a80223a321ffca413eda0c332bfa75bf0
category: main
optional: false
- - name: pillow
- version: 10.1.0
+ - name: recordlinkage
+ version: "0.16"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- freetype: ">=2.12.1,<3.0a0"
- lcms2: ">=2.15,<3.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libxcb: ">=1.15,<1.16.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- tk: ">=8.6.13,<8.7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.1.0-py311hb9c5795_0.conda
+ joblib: ""
+ numexpr: ""
+ python: ">=3.8"
+ numpy: ">=1.13"
+ scikit-learn: ">=1"
+ pandas: ">=1,<3"
+ scipy: ">=1"
+ jellyfish: ">=1"
+ url: https://conda.anaconda.org/conda-forge/noarch/recordlinkage-0.16-pyhd8ed1ab_0.conda
hash:
- md5: 90fd1f60da9f3d5eccdece0945043037
- sha256: 9699ba6886e94e32eb949009195ed78c2c949f74450235af491cd4cbe390d7b4
+ md5: 948205d11a8b036e065c46462db0632a
+ sha256: 3f3c03719d6bdef41f8a08f51fb3e58a80223a321ffca413eda0c332bfa75bf0
category: main
optional: false
- - name: pkginfo
- version: 1.9.6
+ - name: recordlinkage
+ version: "0.16"
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
+ joblib: ""
+ numexpr: ""
+ python: ">=3.8"
+ numpy: ">=1.13"
+ scikit-learn: ">=1"
+ pandas: ">=1,<3"
+ scipy: ">=1"
+ jellyfish: ">=1"
+ url: https://conda.anaconda.org/conda-forge/noarch/recordlinkage-0.16-pyhd8ed1ab_0.conda
hash:
- md5: be1e9f1c65a1ed0f2ae9352fec99db64
- sha256: 7ea5a5af62a15376d9f4f9f3c134874d0b0710f39be719e849b7fa9ca8870502
+ md5: 948205d11a8b036e065c46462db0632a
+ sha256: 3f3c03719d6bdef41f8a08f51fb3e58a80223a321ffca413eda0c332bfa75bf0
category: main
optional: false
- - name: pkgutil-resolve-name
- version: 1.3.10
+ - name: referencing
+ version: 0.31.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda
+ attrs: ">=22.2.0"
+ python: ">=3.8"
+ rpds-py: ">=0.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.1-pyhd8ed1ab_0.conda
hash:
- md5: 405678b942f2481cecdb3e010f4925d9
- sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a
+ md5: ae08039cf63eb82637b867aea3f04758
+ sha256: efb91b7d2f6e729c01676e52e99071db819628a9f0a3a519c8969f0d2350a371
category: main
optional: false
- - name: pluggy
- version: 1.3.0
+ - name: referencing
+ version: 0.31.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda
+ attrs: ">=22.2.0"
+ rpds-py: ">=0.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.1-pyhd8ed1ab_0.conda
hash:
- md5: 2390bd10bed1f3fdc7a537fb5a447d8d
- sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5
+ md5: ae08039cf63eb82637b867aea3f04758
+ sha256: efb91b7d2f6e729c01676e52e99071db819628a9f0a3a519c8969f0d2350a371
category: main
optional: false
- - name: prometheus_client
- version: 0.18.0
+ - name: referencing
+ version: 0.31.1
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.18.0-pyhd8ed1ab_1.conda
+ attrs: ">=22.2.0"
+ rpds-py: ">=0.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.1-pyhd8ed1ab_0.conda
hash:
- md5: 46f6be657443caffcc7201d51c07aadf
- sha256: dca35462761fe9a06f348a0e6216a7a5934e3e29c33bc8e173fb344116568a95
+ md5: ae08039cf63eb82637b867aea3f04758
+ sha256: efb91b7d2f6e729c01676e52e99071db819628a9f0a3a519c8969f0d2350a371
category: main
optional: false
- - name: psutil
- version: 5.9.5
+ - name: regex
+ version: 2023.10.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-5.9.5-py311heffc1b2_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.10.3-py311h459d7ec_0.conda
hash:
- md5: a40123b40642b8b08b3830a3f6bc7fd9
- sha256: a12a525d3bcaed04e0885b2bd00f4f626c80c19d7c0ae8bb7cf7121aefb39e52
+ md5: c690bffc22c33b3a976d588937eb32bf
+ sha256: 80b761ea8ed126b3d12a0466ea925db6116527675f8eb8bd0f68b260f292e9e6
category: main
optional: false
- - name: ptyprocess
- version: 0.7.0
+ - name: regex
+ version: 2023.10.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/regex-2023.10.3-py311h2725bcf_0.conda
hash:
- md5: 359eeb6536da0e687af562ed265ec263
- sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a
+ md5: df03957834e3b3a0d7aa8abc3d4268f9
+ sha256: 27cdb63cda3f69400b643cfa6207092089818c4ed616016fe0b93347357a4fea
category: main
optional: false
- - name: pure_eval
- version: 0.2.2
+ - name: regex
+ version: 2023.10.3
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2023.10.3-py311heffc1b2_0.conda
hash:
- md5: 6784285c7e55cb7212efabc79e4c2883
- sha256: 72792f9fc2b1820e37cc57f84a27bc819c71088c3002ca6db05a2e56404f9d44
+ md5: 18ea2eabd7cdd354b52f6bd47ff6fbb8
+ sha256: 624a9025e914890a8156f09608def26970197cd60767c89e6844bbf62b5690f8
category: main
optional: false
- - name: pyasn1
- version: 0.5.0
+ - name: requests
+ version: 2.31.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: "!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda
+ certifi: ">=2017.4.17"
+ charset-normalizer: ">=2,<4"
+ idna: ">=2.5,<4"
+ python: ">=3.7"
+ urllib3: ">=1.21.1,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda
hash:
- md5: 4b1c0db24e212190be1969b0aa490ad8
- sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82
+ md5: a30144e4156cdbb236f99ebb49828f8b
+ sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad
category: main
optional: false
- - name: pycparser
- version: "2.21"
+ - name: requests
+ version: 2.31.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: 2.7.*|>=3.4
- url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ idna: ">=2.5,<4"
+ certifi: ">=2017.4.17"
+ charset-normalizer: ">=2,<4"
+ urllib3: ">=1.21.1,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda
hash:
- md5: 076becd9e05608f8dc72757d5f3a91ff
- sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc
+ md5: a30144e4156cdbb236f99ebb49828f8b
+ sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad
category: main
optional: false
- - name: pygments
- version: 2.16.1
+ - name: requests
+ version: 2.31.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda
+ idna: ">=2.5,<4"
+ certifi: ">=2017.4.17"
+ charset-normalizer: ">=2,<4"
+ urllib3: ">=1.21.1,<3"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda
hash:
- md5: 40e5cb18165466773619e5c963f00a7b
- sha256: 3f0f0fadc6084960ec8cc00a32a03529c562ffea3b527eb73b1653183daad389
+ md5: a30144e4156cdbb236f99ebb49828f8b
+ sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad
category: main
optional: false
- - name: pyjwt
- version: 2.8.0
+ - name: requests-oauthlib
+ version: 1.3.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_0.conda
+ oauthlib: ">=3.0.0"
+ python: ">=3.4"
+ requests: ">=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 912c0194f898fdb783021fd25f913c31
- sha256: 88ac94c42ade15113397e30d1831dd341399b5262fb5330b9240f915c33cd232
+ md5: 61b279f051eef9c89d58f4d813e75e04
+ sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0
category: main
optional: false
- - name: pylev
- version: 1.4.0
+ - name: requests-oauthlib
+ version: 1.3.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/pylev-1.4.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.4"
+ requests: ">=2.0.0"
+ oauthlib: ">=3.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: edf8651c4379d9d1495ad6229622d150
- sha256: 50bd91767686bfe769e50a5a1b883e238d944a6163fea43e7c0beaac54ca674f
+ md5: 61b279f051eef9c89d58f4d813e75e04
+ sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0
category: main
optional: false
- - name: pyparsing
- version: 3.1.1
+ - name: requests-oauthlib
+ version: 1.3.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda
+ python: ">=3.4"
+ requests: ">=2.0.0"
+ oauthlib: ">=3.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 176f7d56f0cfe9008bdf1bccd7de02fb
- sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b
+ md5: 61b279f051eef9c89d58f4d813e75e04
+ sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0
category: main
optional: false
- - name: pysocks
- version: 1.7.1
+ - name: requests-toolbelt
+ version: 0.10.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __unix: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2
+ python: ">=3.6"
+ requests: ">=2.0.1,<=3.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.10.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2a7de29fb590ca14b5243c4c812c8025
- sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b
- category: main
- optional: false
- - name: python-dotenv
- version: 1.0.0
+ md5: a4cd20af9711434f89d1ec0d2b3ae6ba
+ sha256: 7f4c9c829add7a65a1f536c30539c541bb3c9dddbd03d7ba318f224b4add0d6d
+ category: dev
+ optional: true
+ - name: requests-toolbelt
+ version: 0.10.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.0-pyhd8ed1ab_1.conda
+ python: ">=3.6"
+ requests: ">=2.0.1,<=3.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.10.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 111e7f9edd31865e2659fa9aad8ec8fd
- sha256: bc5663f224ff6d8a399ec6bd8517e0c0f87a69ead438f82e5ce5c30f00077586
- category: main
- optional: false
- - name: python-fastjsonschema
- version: 2.19.0
+ md5: a4cd20af9711434f89d1ec0d2b3ae6ba
+ sha256: 7f4c9c829add7a65a1f536c30539c541bb3c9dddbd03d7ba318f224b4add0d6d
+ category: dev
+ optional: true
+ - name: requests-toolbelt
+ version: 0.10.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ requests: ">=2.0.1,<=3.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.10.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: e4dbdb3585c0266b4710467fe7b75cf4
- sha256: fdfe3f387c5ebde803605e1e90871c424519d2bfe2eb3bf9caad1c5a07f4c462
+ md5: a4cd20af9711434f89d1ec0d2b3ae6ba
+ sha256: 7f4c9c829add7a65a1f536c30539c541bb3c9dddbd03d7ba318f224b4add0d6d
+ category: dev
+ optional: true
+ - name: responses
+ version: 0.24.1
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.7"
+ pyyaml: ""
+ requests: ">=2.30.0,<3.0"
+ types-pyyaml: ""
+ typing_extensions: ""
+ urllib3: ">=1.25.10,<3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda
+ hash:
+ md5: b1b80aaa77d5e83183cd0c9e9025b1fa
+ sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67
category: main
optional: false
- - name: python-json-logger
- version: 2.0.7
+ - name: responses
+ version: 0.24.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda
+ pyyaml: ""
+ typing_extensions: ""
+ types-pyyaml: ""
+ python: ">=3.7"
+ requests: ">=2.30.0,<3.0"
+ urllib3: ">=1.25.10,<3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda
hash:
- md5: a61bf9ec79426938ff785eb69dbb1960
- sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca
+ md5: b1b80aaa77d5e83183cd0c9e9025b1fa
+ sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67
category: main
optional: false
- - name: python-multipart
- version: 0.0.6
+ - name: responses
+ version: 0.24.1
manager: conda
platform: osx-arm64
dependencies:
+ pyyaml: ""
+ typing_extensions: ""
+ types-pyyaml: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.6-pyhd8ed1ab_0.conda
+ requests: ">=2.30.0,<3.0"
+ urllib3: ">=1.25.10,<3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda
hash:
- md5: f4f642eeda814c1b65f46fbdf7e89096
- sha256: 2a9b8d02a6ec9862433cfc2741c4cbfe321e4ae3bab066f7ed84bc00effb73d7
+ md5: b1b80aaa77d5e83183cd0c9e9025b1fa
+ sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67
category: main
optional: false
- - name: python-tzdata
- version: "2023.3"
+ - name: restructuredtext_lint
+ version: 1.4.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ docutils: ">=0.11,<1.0"
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/restructuredtext_lint-1.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2590495f608a63625e165915fb4e2e34
- sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6
+ md5: 1f3c21740038aba9c174df58986bdccb
+ sha256: 636ceefea3675cdd96e49e9bc344190dd72d722642c47597f7bfd30e7ceb2a33
category: main
optional: false
- - name: pytz
- version: 2023.3.post1
+ - name: restructuredtext_lint
+ version: 1.4.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda
+ docutils: ">=0.11,<1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/restructuredtext_lint-1.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: c93346b446cd08c169d843ae5fc0da97
- sha256: 6b680e63d69aaf087cd43ca765a23838723ef59b0a328799e6363eb13f52c49e
+ md5: 1f3c21740038aba9c174df58986bdccb
+ sha256: 636ceefea3675cdd96e49e9bc344190dd72d722642c47597f7bfd30e7ceb2a33
category: main
optional: false
- - name: pytzdata
- version: "2020.1"
+ - name: restructuredtext_lint
+ version: 1.4.0
manager: conda
platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pytzdata-2020.1-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.6"
+ docutils: ">=0.11,<1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/restructuredtext_lint-1.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7dd824593f3a861130ac17c6571546e2
- sha256: e7e628c1247b096e3af147b1c32d5ac328266fa95656e27b79f71bb410251356
+ md5: 1f3c21740038aba9c174df58986bdccb
+ sha256: 636ceefea3675cdd96e49e9bc344190dd72d722642c47597f7bfd30e7ceb2a33
category: main
optional: false
- - name: pywin32-on-windows
- version: 0.1.0
+ - name: rfc3339-validator
+ version: 0.1.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __unix: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2
+ python: ">=3.5"
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2807a0becd1d986fe1ef9b7f8135f215
- sha256: 6502696aaef571913b22a808b15c185bd8ea4aabb952685deb29e6a6765761cb
+ md5: fed45fc5ea0813240707998abe49f520
+ sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d
category: main
optional: false
- - name: pyxlsb
- version: 1.0.10
+ - name: rfc3339-validator
+ version: 0.1.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2
+ six: ""
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 0c14e44bc93a99cdc11398311c3c0dcf
- sha256: 7e6e7064ad976ba6d38e7cf5a893c93a47025d4074b888e8db31386a914935fb
+ md5: fed45fc5ea0813240707998abe49f520
+ sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d
category: main
optional: false
- - name: pyyaml
- version: 6.0.1
+ - name: rfc3339-validator
+ version: 0.1.4
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- yaml: ">=0.2.5,<0.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.1-py311heffc1b2_1.conda
+ six: ""
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2
hash:
- md5: d310bfbb8230b9175c0cbc10189ad804
- sha256: b155f5c27f0e2951256774628c4b91fdeee3267018eef29897a74e3d1316c8b0
+ md5: fed45fc5ea0813240707998abe49f520
+ sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d
category: main
optional: false
- - name: pyzmq
- version: 25.1.1
+ - name: rfc3986
+ version: 2.0.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libsodium: ">=1.0.18,<1.0.19.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- zeromq: ">=4.3.5,<4.4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-25.1.1-py311he9c0408_2.conda
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 51b7458a36011c4982261478fcc62026
- sha256: 03b78fe912c02547b284bc3404194bb4c1d9a2680e4b46f45c131a0d13d10b48
+ md5: d337886e38f965bf97aaec382ff6db00
+ sha256: dd6bfb7c4248ba7612f2e6e4a066d6804ba96dfcaeddf43475a2c846ccfcc396
category: main
optional: false
- - name: regex
- version: 2023.10.3
+ - name: rfc3986
+ version: 2.0.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2023.10.3-py311heffc1b2_0.conda
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 18ea2eabd7cdd354b52f6bd47ff6fbb8
- sha256: 624a9025e914890a8156f09608def26970197cd60767c89e6844bbf62b5690f8
+ md5: d337886e38f965bf97aaec382ff6db00
+ sha256: dd6bfb7c4248ba7612f2e6e4a066d6804ba96dfcaeddf43475a2c846ccfcc396
category: main
optional: false
- name: rfc3986
@@ -19182,7 +19520,7 @@ package:
- name: rfc3986-validator
version: 0.1.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
python: ""
url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2
@@ -19191,3219 +19529,3253 @@ package:
sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37
category: main
optional: false
- - name: rpds-py
- version: 0.13.0
+ - name: rfc3986-validator
+ version: 0.1.1
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2
+ hash:
+ md5: 912a71cc01012ee38e6b90ddd561e36f
+ sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37
+ category: main
+ optional: false
+ - name: rfc3986-validator
+ version: 0.1.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.13.0-py311h94f323b_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 22cfbdbd0c58fb9688194a98c568808e
- sha256: e09733d7c15109e2cbfc3694e612629a45848648419b1f8987150dde64d6dbc0
+ md5: 912a71cc01012ee38e6b90ddd561e36f
+ sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37
category: main
optional: false
- - name: rtree
- version: 1.1.0
+ - name: rich
+ version: 13.7.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ markdown-it-py: ">=2.2.0"
+ pygments: ">=2.13.0,<3.0.0"
+ python: ">=3.7.0"
+ typing_extensions: ">=4.0.0,<5.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: d7a11d4f3024b2f4a6e0ae7377dd61e9
+ sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb
+ category: main
+ optional: false
+ - name: rich
+ version: 13.7.0
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.7.0"
+ typing_extensions: ">=4.0.0,<5.0.0"
+ pygments: ">=2.13.0,<3.0.0"
+ markdown-it-py: ">=2.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: d7a11d4f3024b2f4a6e0ae7377dd61e9
+ sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb
+ category: main
+ optional: false
+ - name: rich
+ version: 13.7.0
manager: conda
platform: osx-arm64
dependencies:
- libspatialindex: ">=1.9.3,<1.9.4.0a0"
+ python: ">=3.7.0"
+ typing_extensions: ">=4.0.0,<5.0.0"
+ pygments: ">=2.13.0,<3.0.0"
+ markdown-it-py: ">=2.2.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: d7a11d4f3024b2f4a6e0ae7377dd61e9
+ sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb
+ category: main
+ optional: false
+ - name: rpds-py
+ version: 0.13.2
+ manager: conda
+ platform: linux-64
+ dependencies:
+ libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/rtree-1.1.0-py311hd698ff7_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.2-py311h46250e7_0.conda
hash:
- md5: 957242aceae3dcf8049feabf99c18814
- sha256: 3bfa6f07272e4a1311433097e3e2c071926f476b9c8bd38e9520053479fe3b14
+ md5: c5f5089dd1fe0000fecaf0d12eca50b9
+ sha256: 087429b28f17d6b9df1492120c1aebf93f47441b3c071e8a06796a0502ff7ee9
category: main
optional: false
- - name: ruamel.yaml.clib
- version: 0.2.7
+ - name: rpds-py
+ version: 0.13.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.7-py311heffc1b2_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.13.2-py311h5e0f0e4_0.conda
hash:
- md5: c167b931a12c70f9c1fbf927da7ff0be
- sha256: 0c2d1a27afa009d3630b5944ac5fd10df95b92ab5c91c7390ddfc93ee5488349
+ md5: ca1b5674090b4f21c474bc3558dd0f72
+ sha256: 4aeefa26b76d99c9aaf8f319493be42b2c016ab6b553b5ab8b3a6bb08737ff31
category: main
optional: false
- - name: ruff
- version: 0.1.5
+ - name: rpds-py
+ version: 0.13.2
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.1.5-py311h6fc163c_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.13.2-py311h94f323b_0.conda
hash:
- md5: 24659c389d8601c8076fb9401f3c59ed
- sha256: a496efea6c4723c7a0e9ef11f38c8237c913ff3b6911085f1793885d102101a5
+ md5: 78c562a4e5efd7a2859c9a3ac3b88e35
+ sha256: ca2106c533a9c9bfd8b9bae3ee9059a9d40cbdcfb7cfd085286e92c5e6f87c41
category: main
optional: false
- - name: setuptools
- version: 68.2.2
+ - name: rsa
+ version: "4.9"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda
+ pyasn1: ">=0.1.3"
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2
hash:
- md5: fc2166155db840c634a1291a5c35a709
- sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7
+ md5: 03bf410858b2cefc267316408a77c436
+ sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57
category: main
optional: false
- - name: shellingham
- version: 1.5.4
+ - name: rsa
+ version: "4.9"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ pyasn1: ">=0.1.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2
hash:
- md5: d08db09a552699ee9e7eec56b4eb3899
- sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
+ md5: 03bf410858b2cefc267316408a77c436
+ sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57
category: main
optional: false
- - name: simpleeval
- version: 0.9.13
+ - name: rsa
+ version: "4.9"
manager: conda
platform: osx-arm64
dependencies:
- python: ">=2.5,!=3.0.*,!=3.1.*,!=3.2.*"
- url: https://conda.anaconda.org/conda-forge/noarch/simpleeval-0.9.13-pyhd8ed1ab_1.conda
+ python: ">=3.6"
+ pyasn1: ">=0.1.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b3282d9b9e4a7c42d6c570492316dcaa
- sha256: 5c9c537011327fc281c3c108020f1ad2a40284df0e1625a87825c0699d98f67f
+ md5: 03bf410858b2cefc267316408a77c436
+ sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57
+ category: main
+ optional: false
+ - name: rtree
+ version: 1.1.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ libspatialindex: ">=1.9.3,<1.9.4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/rtree-1.1.0-py311h3bb2b0f_0.conda
+ hash:
+ md5: 341bbb97186f23835d2d0456d96c5aba
+ sha256: 555d5b653283380ed397f4bbfa47ab7c62c2173ca06f9dadc5eb0b1bd99c95a7
category: main
optional: false
- - name: six
- version: 1.16.0
+ - name: rtree
+ version: 1.1.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
+ libspatialindex: ">=1.9.3,<1.9.4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/rtree-1.1.0-py311hbc1f44b_0.conda
hash:
- md5: e5f25f8dbc060e9a8d912e432202afc2
- sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
+ md5: 4cf922188989b372f053537cea29a5ec
+ sha256: 7421188ce73f9c1cfe4ba8d476570f04994c42e7a33a4ffa52dcd325f58d577c
category: main
optional: false
- - name: smmap
- version: 5.0.0
+ - name: rtree
+ version: 1.1.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
+ libspatialindex: ">=1.9.3,<1.9.4.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/rtree-1.1.0-py311hd698ff7_0.conda
hash:
- md5: 62f26a3d1387acee31322208f0cfa3e0
- sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
+ md5: 957242aceae3dcf8049feabf99c18814
+ sha256: 3bfa6f07272e4a1311433097e3e2c071926f476b9c8bd38e9520053479fe3b14
category: main
optional: false
- - name: sniffio
- version: 1.3.0
+ - name: ruamel.yaml
+ version: 0.18.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ ruamel.yaml.clib: ">=0.1.2"
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.5-py311h459d7ec_0.conda
hash:
- md5: dd6cbc539e74cb1f430efbd4575b9303
- sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78
+ md5: 1101ec27377f8e45d8431a5f21d744f1
+ sha256: c92e7bbb1d02286bcd3d3292208006f796ae45df82af3deec940339493415c04
category: main
optional: false
- - name: snowballstemmer
- version: 2.2.0
+ - name: ruamel.yaml
+ version: 0.18.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=2"
- url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ ruamel.yaml.clib: ">=0.1.2"
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.5-py311he705e18_0.conda
hash:
- md5: 4d22a9315e78c6827f806065957d566e
- sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
+ md5: b8e2686abf5f980d52579b28441953f9
+ sha256: afdaab0d0f5a288b31450c3da260381da5916c61f122a0b3f5dea76d1ca863bb
category: main
optional: false
- - name: sortedcontainers
- version: 2.4.0
+ - name: ruamel.yaml
+ version: 0.18.5
manager: conda
platform: osx-arm64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ ruamel.yaml.clib: ">=0.1.2"
+ setuptools: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.5-py311h05b510d_0.conda
hash:
- md5: 6d6552722448103793743dabfbda532d
- sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
+ md5: c51813780ac52059c1e472546022e7a5
+ sha256: 33c770e213c233e80b48256d17ce0e7bfe504576f2778307826cf1fd1db058d6
category: main
optional: false
- - name: soupsieve
- version: "2.5"
+ - name: ruamel.yaml.clib
+ version: 0.2.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py311h459d7ec_2.conda
hash:
- md5: 3f144b2c34f8cb5a9abd9ed23a39c561
- sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
+ md5: 56bc3fe5180c0b23e05c7a5708153ac7
+ sha256: cfd060725d39f136618547ecb8a593d82d460725fb447849815c26418c360c35
category: main
optional: false
- - name: sphinxcontrib-jsmath
- version: 1.0.1
+ - name: ruamel.yaml.clib
+ version: 0.2.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.7-py311h2725bcf_2.conda
hash:
- md5: da1d979339e2714c30a8e806a33ec087
- sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2
+ md5: cd953388469a8890dda83779d6ef6ffd
+ sha256: b529c2caf941ac1050d160f0b9c53202d634954dd7cc7f1469731e1bb6f2cccc
category: main
optional: false
- - name: stringcase
- version: 1.2.0
+ - name: ruamel.yaml.clib
+ version: 0.2.7
manager: conda
platform: osx-arm64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-py_0.tar.bz2
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.7-py311heffc1b2_2.conda
hash:
- md5: 26a9caf3173939377bac7152379daac0
- sha256: ebd515c57537799ee7829055fe9aa93d1c4695334b991fe1de9d7947f53f18f2
+ md5: c167b931a12c70f9c1fbf927da7ff0be
+ sha256: 0c2d1a27afa009d3630b5944ac5fd10df95b92ab5c91c7390ddfc93ee5488349
category: main
optional: false
- - name: tabulate
- version: 0.9.0
+ - name: ruff
+ version: 0.1.6
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.1.6-py311h7145743_0.conda
hash:
- md5: 4759805cce2d914c38472f70bf4d8bcb
- sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
+ md5: aff8387edd5157da054c4b46cc38ffdc
+ sha256: dd8f7a3e2e7bc65fb6c2c32aae79ebc8623c6b87cbdbc8d2651be9ccd63e29d0
category: main
optional: false
- - name: text-unidecode
- version: "1.3"
+ - name: ruff
+ version: 0.1.6
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.4"
- url: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.1.6-py311hec6fdf1_0.conda
hash:
- md5: ba8aba332d8868897ce44ad74015a7fe
- sha256: db64669a918dec8c744f80a85b9c82216b79298256c7c8bd19bdba54a02f8914
+ md5: f0fa30260ad0ac05ef120b758c68d7ba
+ sha256: 2587bd6a04c6a1178b63438de97c091bcfca15f9bb5ea0d6a1f109a66187e33e
category: main
optional: false
- - name: threadpoolctl
- version: 3.2.0
+ - name: ruff
+ version: 0.1.6
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.1.6-py311h6fc163c_0.conda
hash:
- md5: 978d03388b62173b8e6f79162cf52b86
- sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd
+ md5: c9ff47502a21c1d072e8da209d9efba3
+ sha256: 8bde8b2d66f34a242ea6759df3c21f3321d17a8cdb4d421ae489f97f42452920
category: main
optional: false
- - name: toml
- version: 0.10.2
+ - name: s2n
+ version: 1.3.56
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ openssl: ">=3.1.4,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.56-h06160fa_0.conda
hash:
- md5: f832c45a477c78bebd107098db465095
- sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1
+ md5: 04b4845b9e9b5a0ee6eba013ecdbbddb
+ sha256: 4c00411d49fefc6a53167c3120e386b3f35510544a44d2e647615b510a622f29
category: main
optional: false
- - name: tomli
- version: 2.0.1
+ - name: s3transfer
+ version: 0.8.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ botocore: ">=1.33.2,<2.0a.0"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda
hash:
- md5: 5844808ffab9ebdb694585b50ba02a96
- sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f
+ md5: 75e12933f4bf755c9cdd37072bcb6203
+ sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79
category: main
optional: false
- - name: tomlkit
- version: 0.12.3
+ - name: s3transfer
+ version: 0.8.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
+ botocore: ">=1.33.2,<2.0a.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda
hash:
- md5: 074d0ce7a6261ab8b497c3518796ef3e
- sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
+ md5: 75e12933f4bf755c9cdd37072bcb6203
+ sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79
category: main
optional: false
- - name: toolz
- version: 0.12.0
+ - name: s3transfer
+ version: 0.8.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ botocore: ">=1.33.2,<2.0a.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda
hash:
- md5: 92facfec94bc02d6ccf42e7173831a36
- sha256: 90229da7665175b0185183ab7b53f50af487c7f9b0f47cf09c184cbc139fd24b
+ md5: 75e12933f4bf755c9cdd37072bcb6203
+ sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79
category: main
optional: false
- - name: toposort
- version: "1.10"
+ - name: scikit-learn
+ version: 1.3.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_0.conda
+ _openmp_mutex: ">=4.5"
+ joblib: ">=1.1.1"
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ scipy: ""
+ threadpoolctl: ">=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.2-py311hc009520_1.conda
hash:
- md5: aeef653e20028f19a3c2cc70e166b509
- sha256: 23589eeb84f55c9f245ffca1201a0dc9b16e838d39fe7857d4bd0e3026e5b75a
+ md5: 6b92d3d0680eae9d1d9860a721f7fb51
+ sha256: 638253cba17e44081674b2dd7bee2025c202e91b653182da511ca57de942689d
category: main
optional: false
- - name: tornado
- version: 6.3.3
+ - name: scikit-learn
+ version: 1.3.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
+ __osx: ">=10.9"
+ joblib: ">=1.1.1"
+ libcxx: ">=16.0.6"
+ llvm-openmp: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.3.3-py311heffc1b2_1.conda
+ scipy: ""
+ threadpoolctl: ">=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.3.2-py311h66081b9_1.conda
hash:
- md5: a3a94203d225faec0d6bd000ea30b0a1
- sha256: 65e96fcaa2fad8013fdfd1c7cbdc4684b253541c10091fa7acd55b4a3daa87e6
+ md5: a7053f3e86b6b9139593a027c54e3097
+ sha256: 0b4aee092d4689d07aa95ed1d1071eeb74a5e011d34bc9ebd9b27e9b2166db7e
category: main
optional: false
- - name: traitlets
- version: 5.13.0
+ - name: scikit-learn
+ version: 1.3.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.13.0-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ joblib: ">=1.1.1"
+ libcxx: ">=16.0.6"
+ llvm-openmp: ">=16.0.6"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ scipy: ""
+ threadpoolctl: ">=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.3.2-py311ha25ca4d_1.conda
hash:
- md5: 8a9953c15e1e5a7c1baddbbf4511a567
- sha256: 7ac67960ba2e8c16818043cc65ac6190fa4fd95f5b24357df58e4f73d5e60a10
+ md5: dea73952c589de24ec577c41fac181c5
+ sha256: 589bca23648b8969b16a36f87d7114a12fbe88d665cde32427c7126e5b34e63c
category: main
optional: false
- - name: types-python-dateutil
- version: 2.8.19.14
+ - name: scipy
+ version: 1.11.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda
+ libblas: ">=3.9.0,<4.0a0"
+ libcblas: ">=3.9.0,<4.0a0"
+ libgcc-ng: ">=12"
+ libgfortran-ng: ""
+ libgfortran5: ">=12.3.0"
+ liblapack: ">=3.9.0,<4.0a0"
+ libstdcxx-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py311h64a7726_0.conda
hash:
- md5: 4df15c51a543e806d439490b862be1c6
- sha256: 7b0129c72d371fa7a06ed5dd1d701844c20d03bb4641a38a88a982b347d087e2
+ md5: 9ac5334f1b5ed072d3dbc342503d7868
+ sha256: 29b2fd4ce8ed591df89b6a1c4f598a414322f94ea1a973b366267d43ecf40ffd
category: main
optional: false
- - name: types-pyyaml
- version: 6.0.12.12
+ - name: scipy
+ version: 1.11.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libblas: ">=3.9.0,<4.0a0"
+ libcblas: ">=3.9.0,<4.0a0"
+ libcxx: ">=16.0.6"
+ libgfortran: 5.*
+ libgfortran5: ">=13.2.0"
+ liblapack: ">=3.9.0,<4.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.11.4-py311he0bea55_0.conda
hash:
- md5: 0cb14c80f66937df894d60626dd1921f
- sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c
+ md5: baee74d27482a81394b088b3517e2143
+ sha256: f174683a50833c463ec1cf23198970294f4e3a12f5df8f3997a4d4cee640bc08
category: main
optional: false
- - name: typing_extensions
- version: 4.8.0
+ - name: scipy
+ version: 1.11.4
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
+ __osx: ">=10.9"
+ libblas: ">=3.9.0,<4.0a0"
+ libcblas: ">=3.9.0,<4.0a0"
+ libcxx: ">=16.0.6"
+ libgfortran: 5.*
+ libgfortran5: ">=13.2.0"
+ liblapack: ">=3.9.0,<4.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.11.4-py311h2b215a9_0.conda
hash:
- md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
- sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
+ md5: eeb78a4ed07acf5636a0cba7b16c8a89
+ sha256: a76f172fc8e76c319b9d93c81829fcb3b498ee057e82117a744b37e751e66569
category: main
optional: false
- - name: typing_utils
- version: 0.1.0
+ - name: secretstorage
+ version: 3.3.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6.1"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2
+ cryptography: ""
+ dbus: ""
+ jeepney: ">=0.6"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py311h38be061_2.conda
hash:
- md5: eb67e3cace64c66233e2d35949e20f92
- sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739
+ md5: 30a57eaa8e72cb0c2c84d6d7db32010c
+ sha256: 45e7d85a3663993e8bffdb7c6040561923c848e3262228b163042663caa4485e
category: main
optional: false
- - name: unicodecsv
- version: 0.14.1
+ - name: send2trash
+ version: 1.8.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- url: https://conda.anaconda.org/conda-forge/noarch/unicodecsv-0.14.1-py_1.tar.bz2
+ __linux: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda
hash:
- md5: 3b2b0e9d7f73db2b5e45db113badb7f7
- sha256: 4bbf3579d57036725562ccc11c57bc487f1eb5c14c138a6881d10f34c2f04237
+ md5: ada5a17adcd10be4fc7e37e4166ba0e2
+ sha256: e74d3faf51a6cc429898da0209d95b209270160f3edbf2f6d8b61a99428301cd
category: main
optional: false
- - name: uri-template
- version: 1.3.0
+ - name: send2trash
+ version: 1.8.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
+ __osx: ""
+ pyobjc-framework-cocoa: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyhd1c38e8_0.conda
hash:
- md5: 0944dc65cb4a9b5b68522c3bb585d41c
- sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
+ md5: 2657c3de5371c571aef6678afb4aaadd
+ sha256: dca4022bae47618ed738ab7d45ead5202d174b741cfb98e4484acdc6e76da32a
category: main
optional: false
- - name: uvloop
- version: 0.19.0
- manager: conda
- platform: osx-arm64
- dependencies:
- libuv: ">=1.46.0,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.19.0-py311h05b510d_0.conda
- hash:
- md5: 41568c5b89355b556470de5c41a97c92
- sha256: 631554f96f48818f4b055b2046e35c5072582740074c251fa7fa4f5d9eb527cb
- category: dev
- optional: true
- - name: validators
- version: 0.22.0
+ - name: send2trash
+ version: 1.8.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/validators-0.22.0-pyhd8ed1ab_0.conda
+ __osx: ""
+ pyobjc-framework-cocoa: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyhd1c38e8_0.conda
hash:
- md5: 56435633ef70e7b92c54151599cbf757
- sha256: f30699fd1a76cf3291e042167f8dc8dd28e00e08e49047a353304c7ad7bc279d
+ md5: 2657c3de5371c571aef6678afb4aaadd
+ sha256: dca4022bae47618ed738ab7d45ead5202d174b741cfb98e4484acdc6e76da32a
category: main
optional: false
- - name: webcolors
- version: "1.13"
+ - name: setuptools
+ version: 68.2.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda
hash:
- md5: 166212fe82dad8735550030488a01d03
- sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ md5: fc2166155db840c634a1291a5c35a709
+ sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7
category: main
optional: false
- - name: webencodings
- version: 0.5.1
+ - name: setuptools
+ version: 68.2.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=2.6"
- url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda
hash:
- md5: daf5160ff9cde3a468556965329085b9
- sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944
+ md5: fc2166155db840c634a1291a5c35a709
+ sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7
category: main
optional: false
- - name: websocket-client
- version: 1.6.4
+ - name: setuptools
+ version: 68.2.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda
hash:
- md5: bdb77b28cf16deac0eef431a068320e8
- sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6
+ md5: fc2166155db840c634a1291a5c35a709
+ sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7
category: main
optional: false
- - name: websockets
- version: "10.4"
+ - name: shapely
+ version: 2.0.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ geos: ">=3.12.1,<3.12.2.0a0"
+ libgcc-ng: ">=12"
+ numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-10.4-py311he2be06e_1.tar.bz2
- hash:
- md5: de89829ec8be2723375bfd581237dbef
- sha256: 4700b95332fd99cfbad77d74c25572bff28be0df631e995ddbe4a413f6cf2c80
- category: dev
- optional: true
- - name: wheel
- version: 0.41.3
- manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.2-py311h2032efe_1.conda
hash:
- md5: 3fc026b9c87d091c4b34a6c997324ae8
- sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d
+ md5: 4ba860ff851768615b1a25b788022750
+ sha256: 5406be99410c471db7ce7bb59f238371525425acd7a7f5180387a7a16ae78b96
category: main
optional: false
- - name: widgetsnbextension
- version: 4.0.9
+ - name: shapely
+ version: 2.0.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda
+ geos: ">=3.12.1,<3.12.2.0a0"
+ numpy: ">=1.23.5,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.0.2-py311h4c12f3d_1.conda
hash:
- md5: 82617d07b2f5f5a96296d3c19684b37a
- sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b
+ md5: 24e0f5b8e619f554aa1ac3ab7edc4c9d
+ sha256: 4964855987357b819188224c19a771e8f8d9a9710dacd57ea4a35675c72df27c
category: main
optional: false
- - name: wrapt
- version: 1.16.0
+ - name: shapely
+ version: 2.0.2
manager: conda
platform: osx-arm64
dependencies:
+ geos: ">=3.12.1,<3.12.2.0a0"
+ numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h05b510d_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.2-py311h0815064_1.conda
hash:
- md5: 35f87feb986222d2ada633b45df0bbc9
- sha256: c071b132b8415ccd1452e0b8002aa79ea59a4fd0b0ac0d3b2fd0ab6b19b3390c
+ md5: 025b38103c63f538ea6bdf7bd26224f2
+ sha256: 682106998eca2221a282eda01d468209ce778866b1d062cfa2f02c79a7bf1770
category: main
optional: false
- - name: xlrd
- version: 2.0.1
+ - name: shellingham
+ version: 1.5.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.1-pyhd8ed1ab_3.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
hash:
- md5: 97dfcd5ff030d829b55f67e82f928093
- sha256: a97030fc6cde1a335c035392db47efdb4add7d1db76a11b4bfac6ec7fc42bfe5
+ md5: d08db09a552699ee9e7eec56b4eb3899
+ sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
category: main
optional: false
- - name: xlsxwriter
- version: 3.1.9
+ - name: shellingham
+ version: 1.5.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.9-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
hash:
- md5: 70e533db62a710ae216fdaccc4a983c8
- sha256: 96f04c1aa99d3a90319979079cfe0f17ecea2bf0d67ca07c12d210af355a5d1d
+ md5: d08db09a552699ee9e7eec56b4eb3899
+ sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
category: main
optional: false
- - name: xyzservices
- version: 2023.10.1
+ - name: shellingham
+ version: 1.5.4
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda
hash:
- md5: 1e0d85c0e2fef9539218da185b285f54
- sha256: da655e2e0a742fddefeeaf2dd828b62a1820a3755d13341e1a555a10fcb9cf81
+ md5: d08db09a552699ee9e7eec56b4eb3899
+ sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb
category: main
optional: false
- - name: zipp
- version: 3.17.0
+ - name: simpleeval
+ version: 0.9.13
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda
+ python: ">=2.5,!=3.0.*,!=3.1.*,!=3.2.*"
+ url: https://conda.anaconda.org/conda-forge/noarch/simpleeval-0.9.13-pyhd8ed1ab_1.conda
hash:
- md5: 2e4d6bc0b14e10f895fc6791a7d9b26a
- sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26
+ md5: b3282d9b9e4a7c42d6c570492316dcaa
+ sha256: 5c9c537011327fc281c3c108020f1ad2a40284df0e1625a87825c0699d98f67f
category: main
optional: false
- - name: aiosignal
- version: 1.3.1
+ - name: simpleeval
+ version: 0.9.13
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- frozenlist: ">=1.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=2.5,!=3.0.*,!=3.1.*,!=3.2.*"
+ url: https://conda.anaconda.org/conda-forge/noarch/simpleeval-0.9.13-pyhd8ed1ab_1.conda
hash:
- md5: d1e1eb7e21a9e2c74279d87dafb68156
- sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783
+ md5: b3282d9b9e4a7c42d6c570492316dcaa
+ sha256: 5c9c537011327fc281c3c108020f1ad2a40284df0e1625a87825c0699d98f67f
category: main
optional: false
- - name: anyio
- version: 4.0.0
+ - name: simpleeval
+ version: 0.9.13
manager: conda
platform: osx-arm64
dependencies:
- exceptiongroup: ""
- python: ">=3.8"
- sniffio: ">=1.1"
- idna: ">=2.8"
- url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=2.5,!=3.0.*,!=3.1.*,!=3.2.*"
+ url: https://conda.anaconda.org/conda-forge/noarch/simpleeval-0.9.13-pyhd8ed1ab_1.conda
hash:
- md5: 3c4e99d3ae4ec033d4dd99fb5220e540
- sha256: 64125775b2e724db5c72e431dd180495d5d509d0a2d1228a122e6af9f1b60e33
+ md5: b3282d9b9e4a7c42d6c570492316dcaa
+ sha256: 5c9c537011327fc281c3c108020f1ad2a40284df0e1625a87825c0699d98f67f
category: main
optional: false
- - name: asgi-csrf
- version: "0.9"
+ - name: six
+ version: 1.16.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- itsdangerous: ""
- python-multipart: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/asgi-csrf-0.9-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
hash:
- md5: eae21b40ce9beded0ce0e5c67180b1e7
- sha256: 9e8d86083dac575490045e570147ff44879aa8412dafa04cff3e539f77eb263f
+ md5: e5f25f8dbc060e9a8d912e432202afc2
+ sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
category: main
optional: false
- - name: asgiref
- version: 3.7.2
+ - name: six
+ version: 1.16.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=4"
- url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.7.2-pyhd8ed1ab_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
hash:
- md5: 596932155bf88bb6837141550cb721b0
- sha256: 63f85717fd38912a69be5a03d35a648c404cb86843cd4a1302c380c0e7744e30
+ md5: e5f25f8dbc060e9a8d912e432202afc2
+ sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
category: main
optional: false
- - name: asttokens
- version: 2.4.1
+ - name: six
+ version: 1.16.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.5"
- six: ">=1.12.0"
- url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2
hash:
- md5: 5f25798dcefd8252ce5f9dc494d5f571
- sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111
+ md5: e5f25f8dbc060e9a8d912e432202afc2
+ sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6
category: main
optional: false
- - name: async-lru
- version: 2.0.4
+ - name: smmap
+ version: 5.0.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- typing_extensions: ">=4.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3d081de3a6ea9f894bbb585e8e3a4dcb
- sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518
+ md5: 62f26a3d1387acee31322208f0cfa3e0
+ sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
category: main
optional: false
- - name: aws-c-s3
- version: 0.3.24
+ - name: smmap
+ version: 5.0.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- aws-c-auth: ">=0.7.6,<0.7.7.0a0"
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.3.24-h3940a1a_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 180d51c04b2aa410b4dc9bd52f50f85c
- sha256: fcbd618d77dc87ce337e7217edc2c59474ae8e30b784e82c121c2e6f8a9bdb5a
+ md5: 62f26a3d1387acee31322208f0cfa3e0
+ sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
category: main
optional: false
- - name: babel
- version: 2.13.1
+ - name: smmap
+ version: 5.0.0
manager: conda
platform: osx-arm64
dependencies:
- setuptools: ""
- pytz: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 3ccff479c246692468f604df9c85ef26
- sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
+ md5: 62f26a3d1387acee31322208f0cfa3e0
+ sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16
category: main
optional: false
- - name: backports.functools_lru_cache
- version: 1.6.5
+ - name: snappy
+ version: 1.1.10
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- setuptools: ""
- backports: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda
hash:
- md5: 6b1b907661838a75d067a22f87996b2e
- sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700
+ md5: e6d228cd0bb74a51dd18f5bfce0b4115
+ sha256: 02219f2382b4fe39250627dade087a4412d811936a5a445636b7260477164eac
category: main
optional: false
- - name: beautifulsoup4
- version: 4.12.2
+ - name: snappy
+ version: 1.1.10
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- soupsieve: ">=1.2"
- url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.2-pyha770c72_0.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.1.10-h225ccf5_0.conda
hash:
- md5: a362ff7d976217f8fa78c0f1c4f59717
- sha256: 52d3e6bcd442537e22699cd227d8fdcfd54b708eeb8ee5b4c671a6a9b9cd74da
+ md5: 4320a8781f14cd959689b86e349f3b73
+ sha256: 575915dc13152e446a84e2f88de70a14f8b6af1a870e708f9370bd4be105583b
category: main
optional: false
- - name: bleach
- version: 6.1.0
+ - name: snappy
+ version: 1.1.10
manager: conda
platform: osx-arm64
dependencies:
- setuptools: ""
- packaging: ""
- webencodings: ""
- python: ">=3.6"
- six: ">=1.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.1.10-h17c5cce_0.conda
hash:
- md5: 0ed9d7c0e9afa7c025807a9a8136ea3e
- sha256: 845e77ef495376c5c3c328ccfd746ca0ef1978150cae8eae61a300fe7755fb08
+ md5: ac82a611d1a67a598096ebaa857198e3
+ sha256: dfae03cd2339587871e53b42833657faa4c9e42e3e2c56ee9e32bc60797c7f62
category: main
optional: false
- - name: cached-property
- version: 1.5.2
+ - name: sniffio
+ version: 1.3.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- cached_property: ">=1.5.2,<1.5.3.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 9b347a7ec10940d3f7941ff6c460b551
- sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17
+ md5: dd6cbc539e74cb1f430efbd4575b9303
+ sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78
category: main
optional: false
- - name: cffi
- version: 1.16.0
+ - name: sniffio
+ version: 1.3.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libffi: ">=3.4,<4.0a0"
- pycparser: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.16.0-py311h4a08483_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: cbdde0484a47b40e6ce2a4e5aaeb48d7
- sha256: 9430416328fe2a28e206e703de771817064c8613a79a6a21fe7107f6a783104c
+ md5: dd6cbc539e74cb1f430efbd4575b9303
+ sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78
category: main
optional: false
- - name: cfitsio
- version: 4.3.0
+ - name: sniffio
+ version: 1.3.0
manager: conda
platform: osx-arm64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libcurl: ">=8.2.0,<9.0a0"
- libgfortran: 5.*
- libgfortran5: ">=12.3.0"
- libzlib: ">=1.2.13,<1.3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/cfitsio-4.3.0-hca87796_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: a5a1019a6405052124e97999a5204a74
- sha256: 5d03f8d484d29f8d3bdd64afe22ed29d75c639834b40382f8a520f96a7af27c4
+ md5: dd6cbc539e74cb1f430efbd4575b9303
+ sha256: a3fd30754c20ddb28b777db38345ea00d958f46701f0decd6291a81c0f4eee78
category: main
optional: false
- - name: click-default-group
- version: 1.2.4
+ - name: snowballstemmer
+ version: 2.2.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- click: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda
+ python: ">=2"
+ url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7c2b6931f9b3548ed78478332095c3e9
- sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0
+ md5: 4d22a9315e78c6827f806065957d566e
+ sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
category: main
optional: false
- - name: click-default-group-wheel
- version: 1.2.2
+ - name: snowballstemmer
+ version: 2.2.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- click: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-wheel-1.2.2-pyhd8ed1ab_0.tar.bz2
+ python: ">=2"
+ url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 2228f2640491b5e9c03b6f6346cba887
- sha256: 3a4d5c96f5375715aec9b8b7639c5a401a90dc1019d24288e4e9494148a640ee
+ md5: 4d22a9315e78c6827f806065957d566e
+ sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
category: main
optional: false
- - name: click-plugins
- version: 1.1.1
+ - name: snowballstemmer
+ version: 2.2.0
manager: conda
platform: osx-arm64
dependencies:
- python: ""
- click: ">=3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2
+ python: ">=2"
+ url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 4fd2c6b53934bd7d96d1f3fdaf99b79f
- sha256: ddef6e559dde6673ee504b0e29dd814d36e22b6b9b1f519fa856ee268905bf92
+ md5: 4d22a9315e78c6827f806065957d566e
+ sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228
category: main
optional: false
- - name: cligj
- version: 0.7.2
+ - name: sortedcontainers
+ version: 2.4.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: <4.0
- click: ">=4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: a29b7c141d6b2de4bb67788a5f107734
- sha256: 97bd58f0cfcff56a0bcda101e26f7d936625599325beba3e3a1fa512dd7fc174
+ md5: 6d6552722448103793743dabfbda532d
+ sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
category: main
optional: false
- - name: clikit
- version: 0.6.2
+ - name: sortedcontainers
+ version: 2.4.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- pylev: ">=1.3,<2.0"
- pastel: ">=0.2.0,<0.3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/clikit-0.6.2-pyhd8ed1ab_2.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 02abb7b66b02e8b9f5a9b05454400087
- sha256: 2d582bc15d9116ec5467b565fb87d9034c8b56f60943e8eb69407f55f1ab5a78
+ md5: 6d6552722448103793743dabfbda532d
+ sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
category: main
optional: false
- - name: coloredlogs
- version: "14.0"
+ - name: sortedcontainers
+ version: 2.4.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- humanfriendly: ">=7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-14.0-pyhd8ed1ab_3.tar.bz2
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 6b92f390b198cb631c95fd37097098c8
- sha256: 703557fb1bde384b34cd8b1aa88c485e8900f83420bb69066f958f45c2008ef9
+ md5: 6d6552722448103793743dabfbda532d
+ sha256: 0cea408397d50c2afb2d25e987ebac4546ae11e549d65b1403d80dc368dfaaa6
category: main
optional: false
- - name: comm
- version: 0.1.4
+ - name: soupsieve
+ version: "2.5"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/noarch/comm-0.1.4-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
hash:
- md5: c8eaca39e2b6abae1fc96acc929ae939
- sha256: 11057745946a95ee7cc4c98900a60c7362266a4cb28bc97d96cd88e3056eb701
+ md5: 3f144b2c34f8cb5a9abd9ed23a39c561
+ sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
category: main
optional: false
- - name: coverage
- version: 7.3.2
+ - name: soupsieve
+ version: "2.5"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- tomli: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.3.2-py311heffc1b2_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
hash:
- md5: 75928ad6625a73ff93f08be98014248c
- sha256: 88d116c4c51a106c43937b950d3fd14007800fb7b3945573a5a117533c450e6b
+ md5: 3f144b2c34f8cb5a9abd9ed23a39c561
+ sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
category: main
optional: false
- - name: fonttools
- version: 4.44.3
+ - name: soupsieve
+ version: "2.5"
manager: conda
platform: osx-arm64
dependencies:
- brotli: ""
- munkres: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.44.3-py311h05b510d_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda
hash:
- md5: f3014d7569ba21fdf88e8c669b02a14b
- sha256: f99f51ea99ff30cc80ad1040b8324d284bb7778ea0a9cc0d5cc6740218708ef5
+ md5: 3f144b2c34f8cb5a9abd9ed23a39c561
+ sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c
category: main
optional: false
- - name: gitdb
- version: 4.0.11
+ - name: sphinx
+ version: 7.2.6
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- smmap: ">=3.0.1,<6"
- url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda
+ alabaster: ">=0.7,<0.8"
+ babel: ">=2.9"
+ colorama: ">=0.4.5"
+ docutils: ">=0.18.1,<0.21"
+ imagesize: ">=1.3"
+ importlib-metadata: ">=4.8"
+ jinja2: ">=3.0"
+ packaging: ">=21.0"
+ pygments: ">=2.14"
+ python: ">=3.9"
+ requests: ">=2.25.0"
+ snowballstemmer: ">=2.0"
+ sphinxcontrib-applehelp: ""
+ sphinxcontrib-devhelp: ""
+ sphinxcontrib-htmlhelp: ">=2.0.0"
+ sphinxcontrib-jsmath: ""
+ sphinxcontrib-qthelp: ""
+ sphinxcontrib-serializinghtml: ">=1.1.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda
hash:
- md5: 623b19f616f2ca0c261441067e18ae40
- sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b
+ md5: bbfd1120d1824d2d073bc65935f0e4c0
+ sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42
category: main
optional: false
- - name: graphql-core
- version: 3.2.3
+ - name: sphinx
+ version: 7.2.6
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- typing_extensions: ">=4,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.3-pyhd8ed1ab_0.tar.bz2
+ sphinxcontrib-jsmath: ""
+ sphinxcontrib-applehelp: ""
+ sphinxcontrib-devhelp: ""
+ sphinxcontrib-qthelp: ""
+ python: ">=3.9"
+ jinja2: ">=3.0"
+ packaging: ">=21.0"
+ alabaster: ">=0.7,<0.8"
+ requests: ">=2.25.0"
+ colorama: ">=0.4.5"
+ pygments: ">=2.14"
+ sphinxcontrib-htmlhelp: ">=2.0.0"
+ importlib-metadata: ">=4.8"
+ babel: ">=2.9"
+ imagesize: ">=1.3"
+ snowballstemmer: ">=2.0"
+ docutils: ">=0.18.1,<0.21"
+ sphinxcontrib-serializinghtml: ">=1.1.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda
hash:
- md5: 87cafe8c7638a5ac6fd8ec8fb01f1508
- sha256: 6f7da913ecad98951cadfe512af2c3979fbff752bf714da66760701e5463dd29
- category: dev
- optional: true
- - name: grpcio
- version: 1.59.2
+ md5: bbfd1120d1824d2d073bc65935f0e4c0
+ sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42
+ category: main
+ optional: false
+ - name: sphinx
+ version: 7.2.6
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- libgrpc: 1.59.2
- libzlib: ">=1.2.13,<1.3.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/grpcio-1.59.2-py311h79dd126_0.conda
+ sphinxcontrib-jsmath: ""
+ sphinxcontrib-applehelp: ""
+ sphinxcontrib-devhelp: ""
+ sphinxcontrib-qthelp: ""
+ python: ">=3.9"
+ jinja2: ">=3.0"
+ packaging: ">=21.0"
+ alabaster: ">=0.7,<0.8"
+ requests: ">=2.25.0"
+ colorama: ">=0.4.5"
+ pygments: ">=2.14"
+ sphinxcontrib-htmlhelp: ">=2.0.0"
+ importlib-metadata: ">=4.8"
+ babel: ">=2.9"
+ imagesize: ">=1.3"
+ snowballstemmer: ">=2.0"
+ docutils: ">=0.18.1,<0.21"
+ sphinxcontrib-serializinghtml: ">=1.1.9"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda
hash:
- md5: d595e37cbcfc8c216b435d6785a45e76
- sha256: cdd209d4762fb8b4f225e7fd8e946d463315b0d599559a3a3d88014c315d1a4f
+ md5: bbfd1120d1824d2d073bc65935f0e4c0
+ sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42
category: main
optional: false
- - name: h11
- version: 0.14.0
+ - name: sphinx-autoapi
+ version: 3.0.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- typing_extensions: ""
- python: ">=3"
- url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2
+ anyascii: ""
+ astroid: ">=2.7"
+ jinja2: ""
+ python: ">=3.8"
+ pyyaml: ""
+ sphinx: ">=6.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: b21ed0883505ba1910994f1df031a428
- sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085
+ md5: 736b53813c2b9582b1345462d8ca66e7
+ sha256: 61d127c9e32176ac75a24b85c4d1ba3e8cf7e638884331429752a2da6a3ac63a
category: main
optional: false
- - name: h2
- version: 4.1.0
+ - name: sphinx-autoapi
+ version: 3.0.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6.1"
- hpack: ">=4.0,<5"
- hyperframe: ">=6.0,<7"
- url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2
+ pyyaml: ""
+ jinja2: ""
+ anyascii: ""
+ python: ">=3.8"
+ astroid: ">=2.7"
+ sphinx: ">=6.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: b748fbf7060927a6e82df7cb5ee8f097
- sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a
+ md5: 736b53813c2b9582b1345462d8ca66e7
+ sha256: 61d127c9e32176ac75a24b85c4d1ba3e8cf7e638884331429752a2da6a3ac63a
category: main
optional: false
- - name: harfbuzz
- version: 8.3.0
+ - name: sphinx-autoapi
+ version: 3.0.0
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- cairo: ">=1.18.0,<2.0a0"
- freetype: ">=2.12.1,<3.0a0"
- graphite2: ""
- icu: ">=73.2,<74.0a0"
- libcxx: ">=16.0.6"
- libglib: ">=2.78.1,<3.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-8.3.0-h8f0ba13_0.conda
+ pyyaml: ""
+ jinja2: ""
+ anyascii: ""
+ python: ">=3.8"
+ astroid: ">=2.7"
+ sphinx: ">=6.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-3.0.0-pyhd8ed1ab_0.conda
hash:
- md5: 71e7f9ba27feae122733bb9f1bfe594c
- sha256: 55e95aee9e5be7ada5a1cccedf1bb74c1362a7504cb0251fb48bcfa8bbd7cae3
- category: dev
- optional: true
- - name: hdf5
- version: 1.14.2
+ md5: 736b53813c2b9582b1345462d8ca66e7
+ sha256: 61d127c9e32176ac75a24b85c4d1ba3e8cf7e638884331429752a2da6a3ac63a
+ category: main
+ optional: false
+ - name: sphinx-basic-ng
+ version: 1.0.0b2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
- libgfortran: 5.*
- libgfortran5: ">=12.3.0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.2-nompi_h3aba7b3_100.conda
+ python: ">=3.7"
+ sphinx: ">=4.0,<8.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_1.conda
hash:
- md5: 842c5b010b219058098ebfe5aa5891b9
- sha256: 2749910e21a7d1f88a81dc4709fc3565a4a3954eadb4409e7a5be1fc13a5b7ca
+ md5: a631f5c7b7f5045448f966ad71aa2881
+ sha256: 3c7a6a8bb6c9921741ef940cd61ff1694beac3c95ca7e9ad4b0ea32e2f6ac2fa
category: main
optional: false
- - name: html5lib
- version: "1.1"
+ - name: sphinx-basic-ng
+ version: 1.0.0b2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ""
- webencodings: ""
- six: ">=1.9"
- url: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyh9f0ad1d_0.tar.bz2
+ python: ">=3.7"
+ sphinx: ">=4.0,<8.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_1.conda
hash:
- md5: b2355343d6315c892543200231d7154a
- sha256: 9ad06446fe9847e86cb20d220bf11614afcd2cbe9f58096f08d5d4018877bee4
+ md5: a631f5c7b7f5045448f966ad71aa2881
+ sha256: 3c7a6a8bb6c9921741ef940cd61ff1694beac3c95ca7e9ad4b0ea32e2f6ac2fa
category: main
optional: false
- - name: hypothesis
- version: 6.89.0
+ - name: sphinx-basic-ng
+ version: 1.0.0b2
manager: conda
platform: osx-arm64
dependencies:
- setuptools: ""
- python: ">=3.8"
- click: ">=7.0"
- attrs: ">=19.2.0"
- sortedcontainers: ">=2.1.0,<3.0.0"
- backports.zoneinfo: ">=0.2.1"
- exceptiongroup: ">=1.0.0rc8"
- url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.89.0-pyha770c72_0.conda
+ python: ">=3.7"
+ sphinx: ">=4.0,<8.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_1.conda
hash:
- md5: 87fe6add77af84b6fafecd466e27a28d
- sha256: 5805c101a002de63400e97d33d0e70f4cade33b2e7bf76061aaa0a7058fc44ea
+ md5: a631f5c7b7f5045448f966ad71aa2881
+ sha256: 3c7a6a8bb6c9921741ef940cd61ff1694beac3c95ca7e9ad4b0ea32e2f6ac2fa
category: main
optional: false
- - name: importlib-metadata
- version: 6.8.0
+ - name: sphinx-issues
+ version: 1.2.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- zipp: ">=0.5"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda
+ python: ""
+ sphinx: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-issues-1.2.0-py_0.tar.bz2
hash:
- md5: 4e9f59a060c3be52bc4ddc46ee9b6946
- sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf
+ md5: 2d5c0dddca9bb724dcf5a3fb295a2266
+ sha256: 9d98392bff12194c45c6f13c6c93d0b15b2fe489de5746654e732009fce41a86
category: main
optional: false
- - name: importlib_resources
- version: 6.1.1
+ - name: sphinx-issues
+ version: 1.2.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- zipp: ">=3.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda
+ python: ""
+ sphinx: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-issues-1.2.0-py_0.tar.bz2
hash:
- md5: 3d5fa25cf42f3f32a12b2d874ace8574
- sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed
+ md5: 2d5c0dddca9bb724dcf5a3fb295a2266
+ sha256: 9d98392bff12194c45c6f13c6c93d0b15b2fe489de5746654e732009fce41a86
category: main
optional: false
- - name: isodate
- version: 0.6.1
+ - name: sphinx-issues
+ version: 1.2.0
manager: conda
platform: osx-arm64
dependencies:
- six: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ sphinx: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-issues-1.2.0-py_0.tar.bz2
hash:
- md5: 4a62c93c1b5c0b920508ae3fd285eaf5
- sha256: af8f801e093da52a50ca0ea0510dfaf6898fea37e66d08d335e370235dede9fc
+ md5: 2d5c0dddca9bb724dcf5a3fb295a2266
+ sha256: 9d98392bff12194c45c6f13c6c93d0b15b2fe489de5746654e732009fce41a86
category: main
optional: false
- - name: janus
- version: 1.0.0
+ - name: sphinx-reredirects
+ version: 0.1.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=3.7.4.3"
- url: https://conda.anaconda.org/conda-forge/noarch/janus-1.0.0-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ sphinx: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-reredirects-0.1.2-pyhd8ed1ab_0.conda
hash:
- md5: 304b5bce5a9b3590d825ffd85ac63471
- sha256: b702ef1e280249065d69aef7b0a7b3920903d2de68283bb5282cb57a4ed54d19
+ md5: 30e618adaaf11aa4a98912913c62a12b
+ sha256: bcc792d6fbfc06298d23e98216d1aeca95eb69005ce8176094128990aed1f11c
category: main
optional: false
- - name: jaraco.classes
- version: 3.3.0
+ - name: sphinx-reredirects
+ version: 0.1.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- more-itertools: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda
+ sphinx: ""
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-reredirects-0.1.2-pyhd8ed1ab_0.conda
hash:
- md5: e9f79248d30e942f7c358ff21a1790f5
- sha256: 14f5240c3834e1b784dd41a5a14392d9150dff62a74ae851f73e65d2e2bbd891
+ md5: 30e618adaaf11aa4a98912913c62a12b
+ sha256: bcc792d6fbfc06298d23e98216d1aeca95eb69005ce8176094128990aed1f11c
category: main
optional: false
- - name: jedi
- version: 0.19.1
+ - name: sphinx-reredirects
+ version: 0.1.2
manager: conda
platform: osx-arm64
dependencies:
+ sphinx: ""
python: ">=3.6"
- parso: ">=0.8.3,<0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinx-reredirects-0.1.2-pyhd8ed1ab_0.conda
hash:
- md5: 81a3be0b2023e1ea8555781f0ad904a2
- sha256: 362f0936ef37dfd1eaa860190e42a6ebf8faa094eaa3be6aa4d9ace95f40047a
+ md5: 30e618adaaf11aa4a98912913c62a12b
+ sha256: bcc792d6fbfc06298d23e98216d1aeca95eb69005ce8176094128990aed1f11c
category: main
optional: false
- - name: jinja2
- version: 3.1.2
+ - name: sphinxcontrib-applehelp
+ version: 1.0.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- markupsafe: ">=2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda
hash:
- md5: c8490ed5c70966d232fdd389d0dbed37
- sha256: b045faba7130ab263db6a8fdc96b1a3de5fcf85c4a607c5f11a49e76851500b5
+ md5: aebfabcb60c33a89c1f9290cab49bc93
+ sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3
category: main
optional: false
- - name: joblib
- version: 1.3.2
+ - name: sphinxcontrib-applehelp
+ version: 1.0.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- setuptools: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda
hash:
- md5: 4da50d410f553db77e62ab62ffaa1abc
- sha256: 31e05d47970d956206188480b038829d24ac11fe8216409d8584d93d40233878
+ md5: aebfabcb60c33a89c1f9290cab49bc93
+ sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3
category: main
optional: false
- - name: jsonlines
- version: 4.0.0
+ - name: sphinxcontrib-applehelp
+ version: 1.0.7
manager: conda
platform: osx-arm64
dependencies:
- typing_extensions: ""
- python: ">=3.6"
- attrs: ">=19.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda
hash:
- md5: df32eb56c2a48a5ca9465aef29dd46bc
- sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c
+ md5: aebfabcb60c33a89c1f9290cab49bc93
+ sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3
category: main
optional: false
- - name: jupyterlab_pygments
- version: 0.2.2
+ - name: sphinxcontrib-bibtex
+ version: 2.6.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ dataclasses: ""
+ docutils: ">=0.8,!=0.18.*,!=0.19.*"
+ importlib_metadata: ">=3.6"
+ pybtex: ">=0.24"
+ pybtex-docutils: ">=1"
python: ">=3.7"
- pygments: ">=2.4.1,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.2.2-pyhd8ed1ab_0.tar.bz2
+ sphinx: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.1-pyhd8ed1ab_1.conda
hash:
- md5: 243f63592c8e449f40cd42eb5cf32f40
- sha256: 08453e09d5a6bbaeeca839553a5dfd7a377a97550efab96019c334a8042f54f5
+ md5: 109cf3a7c844834267057e80b4f4eae3
+ sha256: 2d04d3e165c0959d995faab5ccd5fa3581016c02fb94df4eb5d0e0a89fe9ff50
category: main
optional: false
- - name: latexcodec
- version: 2.0.1
+ - name: sphinxcontrib-bibtex
+ version: 2.6.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2
+ dataclasses: ""
+ python: ">=3.7"
+ pybtex: ">=0.24"
+ importlib_metadata: ">=3.6"
+ pybtex-docutils: ">=1"
+ docutils: ">=0.8,!=0.18.*,!=0.19.*"
+ sphinx: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.1-pyhd8ed1ab_1.conda
hash:
- md5: 8d67904973263afd2985ba56aa2d6bb4
- sha256: 5210d31c8f2402dd1ad1b3edcf7a53292b9da5de20cd14d9c243dbf9278b1c4f
+ md5: 109cf3a7c844834267057e80b4f4eae3
+ sha256: 2d04d3e165c0959d995faab5ccd5fa3581016c02fb94df4eb5d0e0a89fe9ff50
category: main
optional: false
- - name: libcblas
- version: 3.9.0
+ - name: sphinxcontrib-bibtex
+ version: 2.6.1
manager: conda
platform: osx-arm64
dependencies:
- libblas: 3.9.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda
+ dataclasses: ""
+ python: ">=3.7"
+ pybtex: ">=0.24"
+ importlib_metadata: ">=3.6"
+ pybtex-docutils: ">=1"
+ docutils: ">=0.8,!=0.18.*,!=0.19.*"
+ sphinx: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.1-pyhd8ed1ab_1.conda
hash:
- md5: 5460a8d1beffd7f63994d891e6a20da4
- sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1
+ md5: 109cf3a7c844834267057e80b4f4eae3
+ sha256: 2d04d3e165c0959d995faab5ccd5fa3581016c02fb94df4eb5d0e0a89fe9ff50
category: main
optional: false
- - name: libgoogle-cloud
- version: 2.12.0
+ - name: sphinxcontrib-devhelp
+ version: 1.0.5
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda
+ hash:
+ md5: ebf08f5184d8eaa486697bc060031953
+ sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672
+ category: main
+ optional: false
+ - name: sphinxcontrib-devhelp
+ version: 1.0.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcrc32c: ">=1.1.2,<1.2.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libgrpc: ">=1.59.2,<1.60.0a0"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.12.0-hfb399a7_4.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda
hash:
- md5: d62901188ab756c841cbb9a80c6c3f3c
- sha256: 22122939a462f64a82ca2f305c43e5e5cf5a55f1ae12979c2445f9dc196b7047
+ md5: ebf08f5184d8eaa486697bc060031953
+ sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672
category: main
optional: false
- - name: liblapack
- version: 3.9.0
+ - name: sphinxcontrib-devhelp
+ version: 1.0.5
manager: conda
platform: osx-arm64
dependencies:
- libblas: 3.9.0
- url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda
hash:
- md5: 3638eacb084c374f41f9efa40d20a47b
- sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1
+ md5: ebf08f5184d8eaa486697bc060031953
+ sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672
category: main
optional: false
- - name: linear-tsv
- version: 1.1.0
+ - name: sphinxcontrib-htmlhelp
+ version: 2.0.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- six: ""
- url: https://conda.anaconda.org/conda-forge/noarch/linear-tsv-1.1.0-py_1.tar.bz2
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda
hash:
- md5: 16491914064fdfe1b9a8fba94ac90e9a
- sha256: 7d653455e3ab3bdbd064e5a8995cce6e657fb1b2fdd26f0bc62ed57687b16043
+ md5: a9a89000dfd19656ad004b937eeb6828
+ sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5
category: main
optional: false
- - name: markdown-it-py
- version: 3.0.0
+ - name: sphinxcontrib-htmlhelp
+ version: 2.0.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- mdurl: ">=0.1,<1"
- url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda
hash:
- md5: 93a8e71256479c62074356ef6ebf501b
- sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962
+ md5: a9a89000dfd19656ad004b937eeb6828
+ sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5
category: main
optional: false
- - name: matplotlib-inline
- version: 0.1.6
+ - name: sphinxcontrib-htmlhelp
+ version: 2.0.4
manager: conda
platform: osx-arm64
dependencies:
- traitlets: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda
hash:
- md5: b21613793fcc81d944c76c9f2864a7de
- sha256: aa091b88aec55bfa2d9207028d8cdc689b9efb090ae27b99557e93c675be2f3c
+ md5: a9a89000dfd19656ad004b937eeb6828
+ sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5
category: main
optional: false
- - name: nodeenv
- version: 1.8.0
+ - name: sphinxcontrib-jsmath
+ version: 1.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- setuptools: ""
- python: 2.7|>=3.7
- url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda
hash:
- md5: 2a75b296096adabbabadd5e9782e5fcc
- sha256: 1320306234552717149f36f825ddc7e27ea295f24829e9db4cc6ceaff0b032bd
+ md5: da1d979339e2714c30a8e806a33ec087
+ sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2
category: main
optional: false
- - name: openpyxl
- version: 3.1.2
+ - name: sphinxcontrib-jsmath
+ version: 1.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- et_xmlfile: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.2-py311heffc1b2_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda
hash:
- md5: a08b5961a200bb86aea8625fa2826443
- sha256: 7f29ef19fb24993653bf9034ee91a4ffca606b9b8157ef4a8a6f7b156c5a9713
+ md5: da1d979339e2714c30a8e806a33ec087
+ sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2
category: main
optional: false
- - name: overrides
- version: 7.4.0
+ - name: sphinxcontrib-jsmath
+ version: 1.0.1
manager: conda
platform: osx-arm64
dependencies:
- typing_utils: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.4.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda
hash:
- md5: 4625b7b01d7f4ac9c96300a5515acfaa
- sha256: 29db8c3b521d261bf71897ba3cfbebc81cd61e581b30fcb984b5a713f02fe1ff
+ md5: da1d979339e2714c30a8e806a33ec087
+ sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2
category: main
optional: false
- - name: partd
- version: 1.4.1
+ - name: sphinxcontrib-qthelp
+ version: 1.0.6
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- toolz: ""
- locket: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda
hash:
- md5: acf4b7c0bcd5fa3b0e05801c4d2accd6
- sha256: b248238da2bb9dfe98e680af911dc7013af86095e3ec8baf08905555632d34c7
+ md5: cf5c9649272c677a964a7313279e3a9b
+ sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471
category: main
optional: false
- - name: pexpect
- version: 4.8.0
+ - name: sphinxcontrib-qthelp
+ version: 1.0.6
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ""
- ptyprocess: ">=0.5"
- url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh1a96a4e_2.tar.bz2
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda
hash:
- md5: 330448ce4403cc74990ac07c555942a1
- sha256: 07706c0417ead94f359ca7278f65452d3c396448777aba1da6a11fc351bdca9a
+ md5: cf5c9649272c677a964a7313279e3a9b
+ sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471
category: main
optional: false
- - name: pint
- version: "0.22"
+ - name: sphinxcontrib-qthelp
+ version: 1.0.6
manager: conda
platform: osx-arm64
dependencies:
- typing_extensions: ""
python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda
hash:
- md5: a719c3f3959c529e558e9ed9f98c3f30
- sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
+ md5: cf5c9649272c677a964a7313279e3a9b
+ sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471
category: main
optional: false
- - name: pip
- version: 23.3.1
+ - name: sphinxcontrib-serializinghtml
+ version: 1.1.9
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- setuptools: ""
- wheel: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda
hash:
- md5: 2400c0b86889f43aa52067161e1fb108
- sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563
+ md5: 0612e497d7860728f2cda421ea2aec09
+ sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d
category: main
optional: false
- - name: poppler
- version: 23.11.0
+ - name: sphinxcontrib-serializinghtml
+ version: 1.1.9
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- cairo: ">=1.18.0,<2.0a0"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- gettext: ">=0.21.1,<1.0a0"
- lcms2: ">=2.15,<3.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libglib: ">=2.78.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- nspr: ">=4.35,<5.0a0"
- nss: ">=3.94,<4.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- poppler-data: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/poppler-23.11.0-hcdd998b_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda
hash:
- md5: 19386a03a7c57a378953bafb4f598156
- sha256: a6677b507cbdb6202c872aa461b4bf8cfcbe5791721fe1f42615b89205d4a4a6
+ md5: 0612e497d7860728f2cda421ea2aec09
+ sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d
category: main
optional: false
- - name: postgresql
- version: "16.1"
+ - name: sphinxcontrib-serializinghtml
+ version: 1.1.9
manager: conda
platform: osx-arm64
dependencies:
- krb5: ">=1.21.2,<1.22.0a0"
- libpq: "16.1"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- readline: ">=8.2,<9.0a0"
- tzcode: ""
- tzdata: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_0.conda
+ python: ">=3.9"
+ sphinx: ">=5"
+ url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda
hash:
- md5: 37398d1ad2fbeaa7733711b845da863e
- sha256: 441f5ad3fac42e7daf9c246ad0dc0962c7f0b4c9ac1044038d3a053d339320bf
+ md5: 0612e497d7860728f2cda421ea2aec09
+ sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d
category: main
optional: false
- - name: proj
- version: 9.3.0
+ - name: sqlalchemy
+ version: 2.0.23
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcurl: ">=8.4.0,<9.0a0"
- libsqlite: ">=3.43.2,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- sqlite: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.3.0-h52fb9d0_2.conda
+ greenlet: "!=0.4.17"
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ typing-extensions: ">=4.2.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.23-py311h459d7ec_0.conda
hash:
- md5: 31cbb3c9d6f8611a657e1b1a4cb5c63d
- sha256: 6a76ab5ac69b1379d874a5b1405c15f13cc9fb3622a4a8837519c3328286e781
+ md5: caccc840985d972796a3c94e69376177
+ sha256: b616e46d0e4c914d29a9860384a6e44e33106cef565ba238d669766e658faa80
category: main
optional: false
- - name: protobuf
- version: 4.24.4
+ - name: sqlalchemy
+ version: 2.0.23
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libcxx: ">=16.0.6"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
+ greenlet: "!=0.4.17"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-4.24.4-py311h4d1eceb_0.conda
+ typing-extensions: ">=4.2.0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.23-py311he705e18_0.conda
hash:
- md5: a4a36febea4880c7a5bf21c9ff9461cd
- sha256: d34ebda375e3fe0969cc9651150ab3edce9e50c04c7093afd585a87083f7fcb6
+ md5: f06f912df000cc6bd840011c703c607a
+ sha256: da5ab07c9148d561586f7fa8110a0794b136e96e168cd591cb7aa87e9805f1da
category: main
optional: false
- - name: psycopg2
- version: 2.9.7
+ - name: sqlalchemy
+ version: 2.0.23
manager: conda
platform: osx-arm64
dependencies:
- libpq: ">=16.0,<17.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ greenlet: "!=0.4.17"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg2-2.9.7-py311h589e011_1.conda
+ typing-extensions: ">=4.2.0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.23-py311h05b510d_0.conda
hash:
- md5: e5fd933c7c34b5c02a95e28f05b07f46
- sha256: 30fb7c0c8e1651694dcb9b5b62b7cdc801ce45e06ead0a5d281ce950e1f498f5
+ md5: 33795a9c237e7c3ec9cf01a2e89f11dd
+ sha256: ccf2046118ab2d32d41dc8e90aa3e701e9938522533e39332738f8654d9268cb
category: main
optional: false
- - name: pyasn1-modules
- version: 0.3.0
+ - name: sqlite
+ version: 3.44.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- pyasn1: ">=0.4.6,<0.6.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libsqlite: 3.44.2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ ncurses: ">=6.4,<7.0a0"
+ readline: ">=8.2,<9.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.2-h2c6b66d_0.conda
hash:
- md5: 26db749166cdca55e5ef1ffdc7767d0e
- sha256: 7867ba43b6ef1e66054ca6b70f59bbef4cdb0cc761f0be3b66d79d15bd43143b
+ md5: 4f2892c672829693fd978d065db4e8be
+ sha256: bae479520fe770fe11996b4c240923ed097f851fbd2401d55540e551c9dbbef7
category: main
optional: false
- - name: pyobjc-core
- version: "10.0"
+ - name: sqlite
+ version: 3.44.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libffi: ">=3.4,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.0-py311hb702dc4_0.conda
+ libsqlite: 3.44.2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ ncurses: ">=6.4,<7.0a0"
+ readline: ">=8.2,<9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.44.2-h7461747_0.conda
hash:
- md5: 5c441ab09e2d9faf6e875ea9c446b445
- sha256: d3bb68f8da77bffad5fa690d2cc1aeb0be0608ed0b6e08a96d8fc3613f2e7135
+ md5: ac6662948d2ccf800474dfdf59fb94bc
+ sha256: 120f42ee2b7cee46711693609f8a7e7918befbd370c960332c0ef13ca651c0d8
category: main
optional: false
- - name: pyproject_hooks
- version: 1.0.0
+ - name: sqlite
+ version: 3.44.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- tomli: ">=1.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.0.0-pyhd8ed1ab_0.conda
+ libsqlite: 3.44.2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ ncurses: ">=6.4,<7.0a0"
+ readline: ">=8.2,<9.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.44.2-hf2abe2d_0.conda
hash:
- md5: 21de50391d584eb7f4441b9de1ad773f
- sha256: 016340837fcfef57b351febcbe855eedf0c1f0ecfc910ed48c7fbd20535f9847
+ md5: c98aa8eb8f02260610c5bb981027ba5d
+ sha256: b034405d93e7153f777d52c18fe26120356c568e4ca85626712d633d939a8923
category: main
optional: false
- - name: pytest
- version: 7.4.3
+ - name: stack_data
+ version: 0.6.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- packaging: ""
- colorama: ""
- iniconfig: ""
- python: ">=3.7"
- exceptiongroup: ">=1.0.0rc8"
- tomli: ">=1.0.0"
- pluggy: ">=0.12,<2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda
+ asttokens: ""
+ executing: ""
+ pure_eval: ""
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda
hash:
- md5: 5bdca0aca30b0ee62bb84854e027eae0
- sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0
+ md5: e7df0fdd404616638df5ece6e69ba7af
+ sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec
category: main
optional: false
- - name: python-dateutil
- version: 2.8.2
+ - name: stack_data
+ version: 0.6.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- six: ">=1.5"
- url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2
+ asttokens: ""
+ executing: ""
+ pure_eval: ""
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda
hash:
- md5: dd999d1cc9f79e67dbb855c8924c7984
- sha256: 54d7785c7678166aa45adeaccfc1d2b8c3c799ca2dc05d4a82bb39b1968bd7da
+ md5: e7df0fdd404616638df5ece6e69ba7af
+ sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec
category: main
optional: false
- - name: python-slugify
- version: 8.0.1
+ - name: stack_data
+ version: 0.6.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- text-unidecode: ">=1.3"
- url: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.1-pyhd8ed1ab_2.conda
+ asttokens: ""
+ executing: ""
+ pure_eval: ""
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda
hash:
- md5: 519897ff446e0dc056e12402e6785cd5
- sha256: 68ac5a6a467b9c0a98e326ec4cc8e3c01d4514f1200c1b44102923424e8ed1eb
+ md5: e7df0fdd404616638df5ece6e69ba7af
+ sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec
category: main
optional: false
- - name: pyu2f
- version: 0.1.5
+ - name: starlette
+ version: 0.32.0.post1
+ manager: conda
+ platform: linux-64
+ dependencies:
+ anyio: <5,>=3.4.0
+ python: ">=3.8"
+ typing_extensions: ">=3.10.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ hash:
+ md5: 9aa6d56db739eee2ff473becbe178fd1
+ sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
+ category: dev
+ optional: true
+ - name: starlette
+ version: 0.32.0.post1
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.8"
+ typing_extensions: ">=3.10.0"
+ anyio: <5,>=3.4.0
+ url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ hash:
+ md5: 9aa6d56db739eee2ff473becbe178fd1
+ sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
+ category: dev
+ optional: true
+ - name: starlette
+ version: 0.32.0.post1
manager: conda
platform: osx-arm64
dependencies:
- six: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.8"
+ typing_extensions: ">=3.10.0"
+ anyio: <5,>=3.4.0
+ url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
hash:
- md5: caabbeaa83928d0c3e3949261daa18eb
- sha256: 667a5a30b65a60b15f38fa4cb09efd6d2762b5a0a9563acd9555eaa5e0b953a2
+ md5: 9aa6d56db739eee2ff473becbe178fd1
+ sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
+ category: dev
+ optional: true
+ - name: stevedore
+ version: 5.1.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ pbr: "!=2.1.0,>=2.0.0"
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/stevedore-5.1.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: 55864c50fd9354fd19f6a5078a068170
+ sha256: 69b779f4cdb0b84f87067414bcccaffc83c6d734dac84523c40115c383a2e2d5
category: main
optional: false
- - name: qtpy
- version: 2.4.1
+ - name: stevedore
+ version: 5.1.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- packaging: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ pbr: "!=2.1.0,>=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/stevedore-5.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 7f391bd70d2abfb70f304ba5aa4e1261
- sha256: 925bf48e747af6ceff1b073c10b12fc94ef79c88a34729059d253e43466a33f1
+ md5: 55864c50fd9354fd19f6a5078a068170
+ sha256: 69b779f4cdb0b84f87067414bcccaffc83c6d734dac84523c40115c383a2e2d5
category: main
optional: false
- - name: referencing
- version: 0.31.0
+ - name: stevedore
+ version: 5.1.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- attrs: ">=22.2.0"
- rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.0-pyhd8ed1ab_0.conda
+ pbr: "!=2.1.0,>=2.0.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/stevedore-5.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 38c2b9b24e9a58725a233f1fa32c23e9
- sha256: 108f27bf249a581acd0f1de0e1e6a4d814ab18943178c2d9a4df02f5c16d2102
+ md5: 55864c50fd9354fd19f6a5078a068170
+ sha256: 69b779f4cdb0b84f87067414bcccaffc83c6d734dac84523c40115c383a2e2d5
category: main
optional: false
- - name: restructuredtext_lint
- version: 1.4.0
+ - name: stringcase
+ version: 1.2.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- docutils: ">=0.11,<1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/restructuredtext_lint-1.4.0-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-py_0.tar.bz2
hash:
- md5: 1f3c21740038aba9c174df58986bdccb
- sha256: 636ceefea3675cdd96e49e9bc344190dd72d722642c47597f7bfd30e7ceb2a33
+ md5: 26a9caf3173939377bac7152379daac0
+ sha256: ebd515c57537799ee7829055fe9aa93d1c4695334b991fe1de9d7947f53f18f2
category: main
optional: false
- - name: rfc3339-validator
- version: 0.1.4
+ - name: stringcase
+ version: 1.2.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- six: ""
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-py_0.tar.bz2
hash:
- md5: fed45fc5ea0813240707998abe49f520
- sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d
+ md5: 26a9caf3173939377bac7152379daac0
+ sha256: ebd515c57537799ee7829055fe9aa93d1c4695334b991fe1de9d7947f53f18f2
category: main
optional: false
- - name: rsa
- version: "4.9"
+ - name: stringcase
+ version: 1.2.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- pyasn1: ">=0.1.3"
- url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2
+ python: ""
+ url: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-py_0.tar.bz2
hash:
- md5: 03bf410858b2cefc267316408a77c436
- sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57
+ md5: 26a9caf3173939377bac7152379daac0
+ sha256: ebd515c57537799ee7829055fe9aa93d1c4695334b991fe1de9d7947f53f18f2
category: main
optional: false
- - name: ruamel.yaml
- version: 0.18.5
+ - name: tableschema
+ version: 1.19.3
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- ruamel.yaml.clib: ">=0.1.2"
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.5-py311h05b510d_0.conda
+ platform: linux-64
+ dependencies:
+ cached-property: ">=1.5"
+ click: ">=3.3"
+ isodate: ">=0.5.4"
+ jsonschema: ">=2.5"
+ python: ""
+ python-dateutil: ">=2.4"
+ requests: ">=2.5"
+ rfc3986: ">=1.1.0"
+ six: ">=1.9"
+ tabulator: ">=1.29"
+ unicodecsv: ">=0.14"
+ url: https://conda.anaconda.org/conda-forge/noarch/tableschema-1.19.3-pyh9f0ad1d_0.tar.bz2
hash:
- md5: c51813780ac52059c1e472546022e7a5
- sha256: 33c770e213c233e80b48256d17ce0e7bfe504576f2778307826cf1fd1db058d6
+ md5: 57f70b39e74b4af667775c0a07f35cc3
+ sha256: bc96dd4ee4d7ee5d6753158ba50aacd08c80a657847d6771cc4c56da538437e7
category: main
optional: false
- - name: sqlalchemy
- version: 1.4.49
+ - name: tableschema
+ version: 1.19.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- greenlet: "!=0.4.17"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-1.4.49-py311h05b510d_1.conda
+ python: ""
+ python-dateutil: ">=2.4"
+ six: ">=1.9"
+ jsonschema: ">=2.5"
+ requests: ">=2.5"
+ unicodecsv: ">=0.14"
+ isodate: ">=0.5.4"
+ click: ">=3.3"
+ rfc3986: ">=1.1.0"
+ cached-property: ">=1.5"
+ tabulator: ">=1.29"
+ url: https://conda.anaconda.org/conda-forge/noarch/tableschema-1.19.3-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 1460f703e4ed3a7bda01ef1baee3a2ea
- sha256: 99fbaaa9374f694a2fa86ca37b9c7d5044b3a21f2fdaff23048f1423031f03ac
+ md5: 57f70b39e74b4af667775c0a07f35cc3
+ sha256: bc96dd4ee4d7ee5d6753158ba50aacd08c80a657847d6771cc4c56da538437e7
category: main
optional: false
- - name: terminado
- version: 0.18.0
+ - name: tableschema
+ version: 1.19.3
manager: conda
platform: osx-arm64
dependencies:
- __osx: ""
- ptyprocess: ""
- python: ">=3.8"
- tornado: ">=6.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda
+ python: ""
+ python-dateutil: ">=2.4"
+ six: ">=1.9"
+ jsonschema: ">=2.5"
+ requests: ">=2.5"
+ unicodecsv: ">=0.14"
+ isodate: ">=0.5.4"
+ click: ">=3.3"
+ rfc3986: ">=1.1.0"
+ cached-property: ">=1.5"
+ tabulator: ">=1.29"
+ url: https://conda.anaconda.org/conda-forge/noarch/tableschema-1.19.3-pyh9f0ad1d_0.tar.bz2
hash:
- md5: 14759b57f5b9d97033e633fff0a2d27e
- sha256: 8e8741c688ade9be8f86c0b209780c7fbe4a97e4265311ca9d8dda5fcedc6a28
+ md5: 57f70b39e74b4af667775c0a07f35cc3
+ sha256: bc96dd4ee4d7ee5d6753158ba50aacd08c80a657847d6771cc4c56da538437e7
category: main
optional: false
- - name: tinycss2
- version: 1.2.1
+ - name: tabulate
+ version: 0.9.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- webencodings: ">=0.4"
- url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 7234c9eefff659501cd2fe0d2ede4d48
- sha256: f0db1a2298a5e10e30f4b947566c7229442834702f549dded40a73ecdea7502d
+ md5: 4759805cce2d914c38472f70bf4d8bcb
+ sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
category: main
optional: false
- - name: tqdm
- version: 4.66.1
+ - name: tabulate
+ version: 0.9.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- colorama: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 03c97908b976498dcae97eb4e4f3149c
- sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4
+ md5: 4759805cce2d914c38472f70bf4d8bcb
+ sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
category: main
optional: false
- - name: typing-extensions
- version: 4.8.0
+ - name: tabulate
+ version: 0.9.0
manager: conda
platform: osx-arm64
dependencies:
- typing_extensions: 4.8.0
- url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2
hash:
- md5: 384462e63262a527bda564fa2d9126c0
- sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
+ md5: 4759805cce2d914c38472f70bf4d8bcb
+ sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620
category: main
optional: false
- - name: typing_inspect
- version: 0.9.0
+ - name: tabulator
+ version: 1.53.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.5"
- typing_extensions: ">=3.7.4"
- mypy_extensions: ">=0.3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda
+ boto3: ">=1.9"
+ chardet: ">=3.0"
+ click: ">=6.0"
+ ijson: ">=3.0.3"
+ jsonlines: ">=1.1"
+ linear-tsv: ">=1.0"
+ openpyxl: ">=2.6"
+ python: ">=3"
+ requests: ">=2.8"
+ six: ">=1.9"
+ sqlalchemy: ">=0.9.6"
+ unicodecsv: ">=0.14"
+ xlrd: ">=1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulator-1.53.5-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 9e924b76b91908a17e28a19a0ab88687
- sha256: 16e0b825c138e14ebc84623248d91d93a8cff29bb93595cc4aa46ca32f24f1de
+ md5: c967687222ad29a74f68e99698d08d30
+ sha256: b5fb89f1154cf6b5e620c18a9c4f73c7b79afa72a7e3e840a82e225a90955335
category: main
optional: false
- - name: universal_pathlib
- version: 0.1.4
+ - name: tabulator
+ version: 1.53.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8,<3.12"
- fsspec: ">=2022.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/universal_pathlib-0.1.4-pyhd8ed1ab_0.conda
+ python: ">=3"
+ click: ">=6.0"
+ six: ">=1.9"
+ chardet: ">=3.0"
+ unicodecsv: ">=0.14"
+ requests: ">=2.8"
+ boto3: ">=1.9"
+ xlrd: ">=1.0"
+ jsonlines: ">=1.1"
+ linear-tsv: ">=1.0"
+ sqlalchemy: ">=0.9.6"
+ openpyxl: ">=2.6"
+ ijson: ">=3.0.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulator-1.53.5-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 08ca974df312b574c4d6511426539a87
- sha256: ee5a8f423b7429e2ebc0051638875a69e4dc4558c07a26d3063866cebed5fb66
+ md5: c967687222ad29a74f68e99698d08d30
+ sha256: b5fb89f1154cf6b5e620c18a9c4f73c7b79afa72a7e3e840a82e225a90955335
category: main
optional: false
- - name: urllib3
- version: 1.26.18
+ - name: tabulator
+ version: 1.53.5
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- brotli-python: ">=1.0.9"
- pysocks: ">=1.5.6,<2.0,!=1.5.7"
- url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda
+ python: ">=3"
+ click: ">=6.0"
+ six: ">=1.9"
+ chardet: ">=3.0"
+ unicodecsv: ">=0.14"
+ requests: ">=2.8"
+ boto3: ">=1.9"
+ xlrd: ">=1.0"
+ jsonlines: ">=1.1"
+ linear-tsv: ">=1.0"
+ sqlalchemy: ">=0.9.6"
+ openpyxl: ">=2.6"
+ ijson: ">=3.0.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/tabulator-1.53.5-pyhd8ed1ab_0.tar.bz2
hash:
- md5: bf61cfd2a7f212efba378167a07d4a6a
- sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7
+ md5: c967687222ad29a74f68e99698d08d30
+ sha256: b5fb89f1154cf6b5e620c18a9c4f73c7b79afa72a7e3e840a82e225a90955335
category: main
optional: false
- - name: watchdog
- version: 3.0.0
+ - name: terminado
+ version: 0.18.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- pyyaml: ">=3.10"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/watchdog-3.0.0-py311heffc1b2_1.conda
+ __linux: ""
+ ptyprocess: ""
+ python: ">=3.8"
+ tornado: ">=6.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh0d859eb_0.conda
hash:
- md5: 67202ddda794d7ff7ca6b6e45337073d
- sha256: 3fd810c89bb56b70518f1e60b7d3769ca13ab8a55e572cc90bba61f7a2a3e8b5
+ md5: e463f348b8b0eb62c9f7c6fbc780286c
+ sha256: e90139ef15ea9d75a69cd6b6302c29ed5b01c03ddfa717b71acb32b60af74269
category: main
optional: false
- - name: xerces-c
- version: 3.2.4
+ - name: terminado
+ version: 0.18.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- icu: ">=73.2,<74.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.2.4-hd886eac_3.conda
+ __osx: ""
+ ptyprocess: ""
+ python: ">=3.8"
+ tornado: ">=6.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda
hash:
- md5: 916e77cb0be0040410881fba8e28b5bb
- sha256: 5ecc3322ddcad0a002a44bd4dddfe898b9e02951c629f6962c23b3bcf6014c9f
+ md5: 14759b57f5b9d97033e633fff0a2d27e
+ sha256: 8e8741c688ade9be8f86c0b209780c7fbe4a97e4265311ca9d8dda5fcedc6a28
category: main
optional: false
- - name: yarl
- version: 1.9.2
+ - name: terminado
+ version: 0.18.0
manager: conda
platform: osx-arm64
dependencies:
- idna: ">=2.0"
- multidict: ">=4.0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.2-py311h05b510d_1.conda
+ __osx: ""
+ ptyprocess: ""
+ python: ">=3.8"
+ tornado: ">=6.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.0-pyh31c8845_0.conda
hash:
- md5: ada6c2013b3616c82f8f090871aaecdc
- sha256: eccb5dc2e3c6cf23ec7ca94f591cb7ab1bd362e5eba546a4d7e2bb8c219a93ec
+ md5: 14759b57f5b9d97033e633fff0a2d27e
+ sha256: 8e8741c688ade9be8f86c0b209780c7fbe4a97e4265311ca9d8dda5fcedc6a28
category: main
optional: false
- - name: addfips
- version: 0.4.0
+ - name: text-unidecode
+ version: "1.3"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- importlib_resources: ">=5.0"
- python: ">=3.7.5"
- url: https://conda.anaconda.org/conda-forge/noarch/addfips-0.4.0-pyhd8ed1ab_1.conda
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda
hash:
- md5: cb434d01bfd3ba57c54a423f3773ffda
- sha256: c6f7bf91f19ad4fdd183efde6346a0dfd3df7929f413c9535e19c51610b4f671
+ md5: ba8aba332d8868897ce44ad74015a7fe
+ sha256: db64669a918dec8c744f80a85b9c82216b79298256c7c8bd19bdba54a02f8914
category: main
optional: false
- - name: aniso8601
- version: 9.0.1
+ - name: text-unidecode
+ version: "1.3"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python-dateutil: ""
- python: ">=2.7"
- url: https://conda.anaconda.org/conda-forge/noarch/aniso8601-9.0.1-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda
hash:
- md5: 36fba1a639f2d24723c5480345b78553
- sha256: 201c040b6ee0045805a777f75f37a8648eb8dfd4725d62a4fcddc24d7d6c2a9f
- category: dev
- optional: true
- - name: argon2-cffi-bindings
- version: 21.2.0
+ md5: ba8aba332d8868897ce44ad74015a7fe
+ sha256: db64669a918dec8c744f80a85b9c82216b79298256c7c8bd19bdba54a02f8914
+ category: main
+ optional: false
+ - name: text-unidecode
+ version: "1.3"
manager: conda
platform: osx-arm64
dependencies:
- cffi: ">=1.0.1"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py311heffc1b2_4.conda
+ python: ">=3.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda
hash:
- md5: e9a56c22ca1215ed3a7b6a9e8c4e6f07
- sha256: b9ab23e4f0d615432949d4b93723bd04b3c4aef725aa03b1e993903265c1b975
+ md5: ba8aba332d8868897ce44ad74015a7fe
+ sha256: db64669a918dec8c744f80a85b9c82216b79298256c7c8bd19bdba54a02f8914
category: main
optional: false
- - name: arrow
- version: 1.3.0
+ - name: threadpoolctl
+ version: 3.2.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
python: ">=3.8"
- python-dateutil: ">=2.7.0"
- types-python-dateutil: ">=2.8.10"
- url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda
hash:
- md5: b77d8c2313158e6e461ca0efb1c2c508
- sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db
+ md5: 978d03388b62173b8e6f79162cf52b86
+ sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd
category: main
optional: false
- - name: async-timeout
- version: 4.0.3
+ - name: threadpoolctl
+ version: 3.2.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- typing-extensions: ">=3.6.5"
- url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda
hash:
- md5: 3ce482ec3066e6d809dbbb1d1679f215
- sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979
+ md5: 978d03388b62173b8e6f79162cf52b86
+ sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd
category: main
optional: false
- - name: aws-crt-cpp
- version: 0.24.7
+ - name: threadpoolctl
+ version: 3.2.0
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- aws-c-auth: ">=0.7.6,<0.7.7.0a0"
- aws-c-cal: ">=0.6.9,<0.6.10.0a0"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
- aws-c-http: ">=0.7.14,<0.7.15.0a0"
- aws-c-io: ">=0.13.35,<0.13.36.0a0"
- aws-c-mqtt: ">=0.9.9,<0.9.10.0a0"
- aws-c-s3: ">=0.3.24,<0.3.25.0a0"
- aws-c-sdkutils: ">=0.1.12,<0.1.13.0a0"
- libcxx: ">=16.0.6"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.24.7-h2da6921_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.2.0-pyha21a80b_0.conda
hash:
- md5: b5bbdbe1fbbf0884ec5c95491e0f9b12
- sha256: 15d1692fcd638d6a94695e2f655333dc3007bcb43d475706078ed767cdf106a1
+ md5: 978d03388b62173b8e6f79162cf52b86
+ sha256: 15e2f916fbfe3cc480160aa99eb6ba3edc183fceb234f10151d63870fdc4eccd
category: main
optional: false
- - name: botocore
- version: 1.32.2
+ - name: tiledb
+ version: 2.16.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- python-dateutil: ">=2.1,<3.0.0"
- jmespath: ">=0.7.1,<2.0.0"
- urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.32.2-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libabseil: ">=20230802.0,<20230803.0a0"
+ libgcc-ng: ">=12"
+ libgoogle-cloud: ">=2.12.0,<2.13.0a0"
+ libstdcxx-ng: ">=12"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-h8c794c1_3.conda
hash:
- md5: 303d0f8f09c41c07b18b9a1112cec29b
- sha256: 621ee76f9d1e741039513e94ef3e4d3442f76098d863f50474ec60d823ef11ae
+ md5: 7de728789b0aba16018f726dc5ddbec2
+ sha256: f021df4b9cfd1a54aac87a6c0bac604edc8ffb36d5b2c4aa20bf2d759ae04a11
category: main
optional: false
- - name: branca
- version: 0.7.0
+ - name: tiledb
+ version: 2.16.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- jinja2: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/branca-0.7.0-pyhd8ed1ab_1.conda
+ __osx: ">=10.13"
+ bzip2: ">=1.0.8,<2.0a0"
+ libabseil: ">=20230802.0,<20230803.0a0"
+ libcxx: ">=15.0.7"
+ libgoogle-cloud: ">=2.12.0,<2.13.0a0"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.16.3-hd3a41d5_3.conda
hash:
- md5: 980ae382aec2ebb7c20e8848f4d695d7
- sha256: 9013b381e6745a7f717b7f742d3fe366ba619f1670da0d849ae589c4e88b0dbc
+ md5: 53c2d2746f21a60d0c498c36fb32ec56
+ sha256: 9144ad40adb982107dd4f5084d1e488b216025eed91a3feeb3506ee4d5bc98dd
category: main
optional: false
- - name: croniter
- version: 2.0.1
+ - name: tiledb
+ version: 2.16.3
manager: conda
platform: osx-arm64
dependencies:
- python-dateutil: ""
- python: ">=3.7"
- pytz: ">2021.1"
- url: https://conda.anaconda.org/conda-forge/noarch/croniter-2.0.1-pyhd8ed1ab_0.conda
+ bzip2: ">=1.0.8,<2.0a0"
+ libabseil: ">=20230802.0,<20230803.0a0"
+ libcxx: ">=15.0.7"
+ libgoogle-cloud: ">=2.12.0,<2.13.0a0"
+ libxml2: ">=2.11.5,<2.12.0a0"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ lz4-c: ">=1.9.3,<1.10.0a0"
+ openssl: ">=3.1.2,<4.0a0"
+ zstd: ">=1.5.5,<1.6.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.16.3-he15c4da_3.conda
hash:
- md5: f67f52c1f555785b86c3bd8e5de4c66f
- sha256: 0a39004b6e4ddff1a323432c0790d61a8885f35af9e60cc7e76ad8f6d43e3f34
+ md5: fcf3711dd1817fd6e8ab59be86aa8dd9
+ sha256: c2576bf0344b441f4c7d9212cfa68fe64de88dc9da735cb541c7faa0595d260f
category: main
optional: false
- - name: cryptography
- version: 41.0.5
+ - name: timezonefinder
+ version: 6.2.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- cffi: ">=1.12"
- openssl: ">=3.1.4,<4.0a0"
+ cffi: ">=1.15.1,<2"
+ h3-py: ">=3.7.6,<4"
+ libgcc-ng: ">=12"
+ numpy: ">=1.18,<2"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-41.0.5-py311h71175c2_0.conda
+ setuptools: ">=65.5"
+ url: https://conda.anaconda.org/conda-forge/linux-64/timezonefinder-6.2.0-py311h459d7ec_2.conda
hash:
- md5: adc55f424334b834098d50e57efe0789
- sha256: 00c9b389b51b6e951a1f639aa04dceca9e329e144275c79b4f6baacd3fb90345
+ md5: f5beeea76fa273f90360990938885d59
+ sha256: b6227b634ac8e8e255e089476b0f9634c9b9cf33cc9db4821e820b4746b98aa7
category: main
optional: false
- - name: fqdn
- version: 1.5.1
+ - name: timezonefinder
+ version: 6.2.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- cached-property: ">=1.3.0"
- python: ">=2.7,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2
+ cffi: ">=1.15.1,<2"
+ h3-py: ">=3.7.6,<4"
+ numpy: ">=1.18,<2"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ">=65.5"
+ url: https://conda.anaconda.org/conda-forge/osx-64/timezonefinder-6.2.0-py311he705e18_2.conda
hash:
- md5: 642d35437078749ef23a5dca2c9bb1f3
- sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63
+ md5: 64122075c5e685197353fa1e5e9d1916
+ sha256: 147719244fedcab5eb4b56cffd84b4ad0fed2ab1877e623c863c590966443c4b
category: main
optional: false
- - name: geotiff
- version: 1.7.1
+ - name: timezonefinder
+ version: 6.2.0
manager: conda
platform: osx-arm64
dependencies:
- libcxx: ">=15.0.7"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- proj: ">=9.3.0,<9.3.1.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/geotiff-1.7.1-h71398c0_14.conda
+ cffi: ">=1.15.1,<2"
+ h3-py: ">=3.7.6,<4"
+ numpy: ">=1.18,<2"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ setuptools: ">=65.5"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/timezonefinder-6.2.0-py311h05b510d_2.conda
hash:
- md5: f2a5ed847c17df7b45467210f5a7c15d
- sha256: 0af388cc45d1813c57ba5f30032b22a8fdf9bc2762bacf4101168009d51d24ce
+ md5: e780e1885d409abccd8503f8f96c2bee
+ sha256: c855dc357c20d53cad167f395d3dd8face48b5cb6e3cb9f7a64b702ce14c7a12
category: main
optional: false
- - name: gitpython
- version: 3.1.40
+ - name: tinycss2
+ version: 1.2.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=3.7.4.3"
- gitdb: ">=4.0.1,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ webencodings: ">=0.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 6bf74c3b7c13079a91d4bd3da51cefcf
- sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b
+ md5: 7234c9eefff659501cd2fe0d2ede4d48
+ sha256: f0db1a2298a5e10e30f4b947566c7229442834702f549dded40a73ecdea7502d
category: main
optional: false
- - name: google-crc32c
- version: 1.1.2
+ - name: tinycss2
+ version: 1.2.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- cffi: ">=1.0.0"
- libcrc32c: ">=1.1.2,<1.2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.1.2-py311h533d1a3_5.conda
+ python: ">=3.5"
+ webencodings: ">=0.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b884d02272be40f69bff016a9214722c
- sha256: 6bf42988b7d723a9a8742544ed2c85f58ce56802fe74f8dbf39bba3e97f167b8
+ md5: 7234c9eefff659501cd2fe0d2ede4d48
+ sha256: f0db1a2298a5e10e30f4b947566c7229442834702f549dded40a73ecdea7502d
category: main
optional: false
- - name: googleapis-common-protos
- version: 1.61.0
+ - name: tinycss2
+ version: 1.2.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ webencodings: ">=0.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f315d7fdc1905dcc2e18a1c7bed22fa9
- sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
+ md5: 7234c9eefff659501cd2fe0d2ede4d48
+ sha256: f0db1a2298a5e10e30f4b947566c7229442834702f549dded40a73ecdea7502d
category: main
optional: false
- - name: gql
- version: 3.4.1
+ - name: tk
+ version: 8.6.13
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- graphql-core: ">=3.2,<3.3"
- yarl: ">=1.6,<2.0"
- backoff: ">=1.11.1,<3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/gql-3.4.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda
hash:
- md5: 6ad94588f33ddb97175c7f22feef7d2c
- sha256: 6025dcd91083fe1d3f38172d18d041b0c1da4d9d86606a18312efd429c99b93e
- category: dev
- optional: true
- - name: graphql-relay
- version: 3.2.0
+ md5: d453b98d9c83e71da0741bb0ff4d76bc
+ sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e
+ category: main
+ optional: false
+ - name: tk
+ version: 8.6.13
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- graphql-core: ">=3.2,<3.3"
- typing_extensions: ">=4.1,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_0.tar.bz2
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda
hash:
- md5: 1b2b83e3528f8fb83007161eff51073d
- sha256: 04f2a3383e74421441e46eaed4c32940682c1de82036fd1b6f18663d6d5447c4
- category: dev
- optional: true
- - name: grpcio-health-checking
- version: 1.59.2
+ md5: bf830ba5afc507c6232d4ef0fb1a882d
+ sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5
+ category: main
+ optional: false
+ - name: tk
+ version: 8.6.13
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.5"
- protobuf: ">=3.12.1"
- grpcio: ">=1.59.2"
- url: https://conda.anaconda.org/conda-forge/noarch/grpcio-health-checking-1.59.2-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda
hash:
- md5: 8b85dc4c1a577f1823b394d5071052de
- sha256: b77ffee9cbd731caa6eca7487286bc65551729744a89ecb3335ca220fec4061d
+ md5: b50a57ba89c32b62428b71a875291c9b
+ sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8
category: main
optional: false
- - name: httpcore
- version: 1.0.2
+ - name: toml
+ version: 0.10.2
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- certifi: ""
- python: ">=3.8"
- sniffio: 1.*
- h2: ">=3,<5"
- anyio: ">=3.0,<5.0"
- h11: ">=0.13,<0.15"
- url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.2-pyhd8ed1ab_0.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 48995b2157996a94f50fa483d884e0a3
- sha256: b9a2ec0ecdaf54d67caf73d8a94c8ddba62f482093a5adbfb89c2ce020d64475
+ md5: f832c45a477c78bebd107098db465095
+ sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1
category: main
optional: false
- - name: importlib_metadata
- version: 6.8.0
+ - name: toml
+ version: 0.10.2
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- importlib-metadata: ">=6.8.0,<6.8.1.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: b279b07ce18058034e5b3606ba103a8b
- sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f
+ md5: f832c45a477c78bebd107098db465095
+ sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1
category: main
optional: false
- - name: jsonschema-specifications
- version: 2023.11.1
+ - name: toml
+ version: 0.10.2
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- importlib_resources: ">=1.4.0"
- referencing: ">=0.31.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
+ python: ">=2.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 094ff9cf36957f95bb74cee42ab140b2
- sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
+ md5: f832c45a477c78bebd107098db465095
+ sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1
category: main
optional: false
- - name: jupyter_server_terminals
- version: 0.4.4
+ - name: tomli
+ version: 2.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- terminado: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
- sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
+ md5: 5844808ffab9ebdb694585b50ba02a96
+ sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f
category: main
optional: false
- - name: kealib
- version: 1.5.2
+ - name: tomli
+ version: 2.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/kealib-1.5.2-h47b5e36_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 88abe34211296bbc0ba1871fd2b13962
- sha256: 93e9b03cd9035766c43e5f7f851fc07a4f68b79fd48c1306280f17093a8ae746
+ md5: 5844808ffab9ebdb694585b50ba02a96
+ sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f
category: main
optional: false
- - name: libnetcdf
- version: 4.9.2
+ - name: tomli
+ version: 2.0.1
manager: conda
platform: osx-arm64
dependencies:
- blosc: ">=1.21.4,<2.0a0"
- bzip2: ">=1.0.8,<2.0a0"
- hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzip: ">=1.10.1,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- zlib: ""
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_hb2fb864_112.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2
hash:
- md5: fdd8c3b65f9369c4a5bbf23164ea8e19
- sha256: fef33b99225691fce165cd1aadb85c823e2a3a9e5d67c3069f1d6b9ebbf53fdf
+ md5: 5844808ffab9ebdb694585b50ba02a96
+ sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f
category: main
optional: false
- - name: libspatialite
- version: 5.1.0
+ - name: tomlkit
+ version: 0.12.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- freexl: ">=2.0.0,<3.0a0"
- geos: ">=3.12.0,<3.12.1.0a0"
- libcxx: ">=16.0.6"
- libiconv: ">=1.17,<2.0a0"
- librttopo: ">=1.1.0,<1.2.0a0"
- libsqlite: ">=3.44.0,<4.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- proj: ">=9.3.0,<9.3.1.0a0"
- sqlite: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-h5b80306_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
hash:
- md5: eb794aae59c5b3b475a42809a5240a73
- sha256: 21c40582abf3b8125b810873e434dc3c8bc4fc024b92ebd25f9a549154791919
+ md5: 074d0ce7a6261ab8b497c3518796ef3e
+ sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
category: main
optional: false
- - name: mako
- version: 1.3.0
+ - name: tomlkit
+ version: 0.12.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- importlib-metadata: ""
- python: ">=3.6"
- markupsafe: ">=0.9.2"
- url: https://conda.anaconda.org/conda-forge/noarch/mako-1.3.0-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
hash:
- md5: 92ca4a92d34ed6e8fa38d93c8552c346
- sha256: b3c0353790ae5a5ebb54aa339661083a6234e5193e758668e62ba36c48dc3c94
+ md5: 074d0ce7a6261ab8b497c3518796ef3e
+ sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
category: main
optional: false
- - name: numpy
- version: 1.26.0
+ - name: tomlkit
+ version: 0.12.3
manager: conda
platform: osx-arm64
dependencies:
- libblas: ">=3.9.0,<4.0a0"
- libcblas: ">=3.9.0,<4.0a0"
- libcxx: ">=15.0.7"
- liblapack: ">=3.9.0,<4.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.0-py311hb8f3215_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda
hash:
- md5: 97f8632bf2ad5c179ff68fc90c71c2ae
- sha256: fca5ee1363f22a160c97e92d6400d4636f4b05987b08085e4f79fb6efb75fd0a
+ md5: 074d0ce7a6261ab8b497c3518796ef3e
+ sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117
category: main
optional: false
- - name: pango
- version: 1.50.14
+ - name: toolz
+ version: 0.12.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- fribidi: ">=1.0.10,<2.0a0"
- harfbuzz: ">=8.1.1,<9.0a0"
- libglib: ">=2.76.4,<3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.50.14-hcf40dda_2.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 79026cbb74d69b444e5dc2be0fb4b4a9
- sha256: e17f649192ce06c68893b50fa2492db87d2d82ae6d3c6058cc62dcc44dde8b2e
- category: dev
- optional: true
- - name: pbr
- version: 6.0.0
+ md5: 92facfec94bc02d6ccf42e7173831a36
+ sha256: 90229da7665175b0185183ab7b53f50af487c7f9b0f47cf09c184cbc139fd24b
+ category: main
+ optional: false
+ - name: toolz
+ version: 0.12.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- pip: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 8dbab5ba746ed14aa32cb232dc437f8f
- sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87
+ md5: 92facfec94bc02d6ccf42e7173831a36
+ sha256: 90229da7665175b0185183ab7b53f50af487c7f9b0f47cf09c184cbc139fd24b
category: main
optional: false
- - name: pendulum
- version: 2.1.2
+ - name: toolz
+ version: 0.12.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.6,<3.0"
- python_abi: 3.11.*
- pytzdata: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pendulum-2.1.2-py311heffc1b2_6.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: f21ea89567e58aa645e40ded47edbdcb
- sha256: 9530a44bc2eb93c67ce0dbaf899e7146587d94b50f7b2da755ca08ad24ed96d6
+ md5: 92facfec94bc02d6ccf42e7173831a36
+ sha256: 90229da7665175b0185183ab7b53f50af487c7f9b0f47cf09c184cbc139fd24b
category: main
optional: false
- - name: platformdirs
- version: 3.11.0
+ - name: toposort
+ version: "1.10"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- typing-extensions: ">=4.6.3"
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_0.conda
hash:
- md5: 8f567c0a74aa44cf732f15773b4083b0
- sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144
+ md5: aeef653e20028f19a3c2cc70e166b509
+ sha256: 23589eeb84f55c9f245ffca1201a0dc9b16e838d39fe7857d4bd0e3026e5b75a
category: main
optional: false
- - name: psycopg2-binary
- version: 2.9.7
+ - name: toposort
+ version: "1.10"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- psycopg2: ">=2.9.7,<2.9.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_0.conda
hash:
- md5: 0212a5c5ae1ab578853364bfc5d9f657
- sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
+ md5: aeef653e20028f19a3c2cc70e166b509
+ sha256: 23589eeb84f55c9f245ffca1201a0dc9b16e838d39fe7857d4bd0e3026e5b75a
category: main
optional: false
- - name: pybtex
- version: 0.24.0
+ - name: toposort
+ version: "1.10"
manager: conda
platform: osx-arm64
dependencies:
- setuptools: ""
- six: ""
- python: ">=3.6"
- latexcodec: ">=1.0.4"
- pyyaml: ">=3.01"
- url: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/toposort-1.10-pyhd8ed1ab_0.conda
hash:
- md5: 2099b86a7399c44c0c61cdb6de6915ba
- sha256: 258fbf46050bbd51fbaa504116e56e8f3064156f0e08cad4e2fec97f5f29e6dc
+ md5: aeef653e20028f19a3c2cc70e166b509
+ sha256: 23589eeb84f55c9f245ffca1201a0dc9b16e838d39fe7857d4bd0e3026e5b75a
category: main
optional: false
- - name: pydantic
- version: 1.10.13
+ - name: tornado
+ version: 6.3.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ libgcc-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- typing-extensions: ">=4.2.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-1.10.13-py311h05b510d_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py311h459d7ec_1.conda
hash:
- md5: afdac206ecd2d91cd5478038e4cae4cf
- sha256: eb7af4932468d40ef44fc595ff09f0ad5287a3ab2098b152b4b7fb1bd76782e5
+ md5: a700fcb5cedd3e72d0c75d095c7a6eda
+ sha256: 3f0640415c6f50c6b31b5ce41a870ac48c130fda8921aae11afea84c54a6ba84
category: main
optional: false
- - name: pyobjc-framework-cocoa
- version: "10.0"
+ - name: tornado
+ version: 6.3.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libffi: ">=3.4,<4.0a0"
- pyobjc-core: 10.0.*
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.0-py311hb702dc4_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.3.3-py311h2725bcf_1.conda
hash:
- md5: ee9430e4e9b69a6270c966bb7439c9a0
- sha256: 31a7542b8ced5cb3bc236be0b5777dab4bc0e57fbfc5423e9d0ae09ce8eae16c
+ md5: daf5f053a40c2b0b8f86b605e302b7a4
+ sha256: e3e4c12236b0a59e6568a9dc839116776eda408ca12bc0ad4e7a9dba4d66912f
category: main
optional: false
- - name: pyproj
- version: 3.6.1
+ - name: tornado
+ version: 6.3.3
manager: conda
platform: osx-arm64
dependencies:
- certifi: ""
- proj: ">=9.3.0,<9.3.1.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.6.1-py311h20a9b75_4.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.3.3-py311heffc1b2_1.conda
hash:
- md5: c55fab7aa4252057e5e5efa90bd10cbe
- sha256: 9d9923063e21aac5831b3dca820be3a824366f6871c839ea545f9b5e7358c844
+ md5: a3a94203d225faec0d6bd000ea30b0a1
+ sha256: 65e96fcaa2fad8013fdfd1c7cbdc4684b253541c10091fa7acd55b4a3daa87e6
category: main
optional: false
- - name: pytest-console-scripts
- version: 1.4.1
+ - name: tqdm
+ version: 4.66.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ colorama: ""
python: ">=3.7"
- importlib-metadata: ">=3.6"
- pytest: ">=4.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-console-scripts-1.4.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda
hash:
- md5: ee8808504c73665bed76e20ede28bd56
- sha256: d6603e211019f2581c9f3c0922133b190a46e4ceaad3e3e0e6149f31bc593fa1
+ md5: 03c97908b976498dcae97eb4e4f3149c
+ sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4
category: main
optional: false
- - name: pytest-cov
- version: 4.1.0
+ - name: tqdm
+ version: 4.66.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- toml: ""
+ colorama: ""
python: ">=3.7"
- pytest: ">=4.6"
- coverage: ">=5.2.1"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-4.1.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda
hash:
- md5: 06eb685a3a0b146347a58dda979485da
- sha256: f07d3b44cabbed7843de654c4a6990a08475ce3b708bb735c7da9842614586f2
+ md5: 03c97908b976498dcae97eb4e4f3149c
+ sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4
category: main
optional: false
- - name: pytest-mock
- version: 3.12.0
+ - name: tqdm
+ version: 4.66.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- pytest: ">=5.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda
+ colorama: ""
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda
hash:
- md5: ac9fedc9a0c397f2318e82525491dd83
- sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0
+ md5: 03c97908b976498dcae97eb4e4f3149c
+ sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4
category: main
optional: false
- - name: pytest-xdist
- version: 3.4.0
+ - name: traitlets
+ version: 5.14.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- execnet: ">=1.1"
- pytest: ">=6.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.4.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.0-pyhd8ed1ab_0.conda
hash:
- md5: b8dc6f9db1b9670e564b68277a79ffeb
- sha256: b835170885a0d2b4bfdc7bc5d09e5a175518f41b6ffa1a0ac891797cd94e3292
+ md5: 886f4a84ddb49b943b1697ac314e85b3
+ sha256: c32412029033264140926be474d327d7fd57c0d11db9b1745396b3d4db78a799
category: main
optional: false
- - name: python-build
- version: 1.0.3
+ - name: traitlets
+ version: 5.14.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- colorama: ""
- pyproject_hooks: ""
- python: ">=3.7"
- tomli: ">=1.1.0"
- packaging: ">=19.0"
- importlib-metadata: ">=4.6"
- url: https://conda.anaconda.org/conda-forge/noarch/python-build-1.0.3-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.0-pyhd8ed1ab_0.conda
hash:
- md5: d9ccabf228cb98419ca3d5694b25e1a2
- sha256: f32748beb76abf5173ee956f30a82c9e9b4a3d9924b0960f1e19e267ea4f01de
+ md5: 886f4a84ddb49b943b1697ac314e85b3
+ sha256: c32412029033264140926be474d327d7fd57c0d11db9b1745396b3d4db78a799
category: main
optional: false
- - name: requests
- version: 2.31.0
+ - name: traitlets
+ version: 5.14.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- idna: ">=2.5,<4"
- certifi: ">=2017.4.17"
- charset-normalizer: ">=2,<4"
- urllib3: ">=1.21.1,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.0-pyhd8ed1ab_0.conda
hash:
- md5: a30144e4156cdbb236f99ebb49828f8b
- sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad
+ md5: 886f4a84ddb49b943b1697ac314e85b3
+ sha256: c32412029033264140926be474d327d7fd57c0d11db9b1745396b3d4db78a799
category: main
optional: false
- - name: rich
- version: 13.7.0
+ - name: typeguard
+ version: 4.1.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7.0"
- typing_extensions: ">=4.0.0,<5.0.0"
- pygments: ">=2.13.0,<3.0.0"
- markdown-it-py: ">=2.2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda
+ importlib_metadata: ">=3.6"
+ python: ">=3.8"
+ typing_extensions: ">=4.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda
hash:
- md5: d7a11d4f3024b2f4a6e0ae7377dd61e9
- sha256: 4bb25bf1f5664772b2c4c2e3878aa6e7dc2695f97e3da4ee8e47c51e179913bb
+ md5: 59d22e0ca481b057b94d54fc9ebacb13
+ sha256: df63f90625d2eaefcb6990437b941c1c90ec3c224bc65a2becac928542d0aa5f
category: main
optional: false
- - name: stack_data
- version: 0.6.2
+ - name: typeguard
+ version: 4.1.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- asttokens: ""
- executing: ""
- pure_eval: ""
- python: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ importlib_metadata: ">=3.6"
+ typing_extensions: ">=4.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda
hash:
- md5: e7df0fdd404616638df5ece6e69ba7af
- sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec
+ md5: 59d22e0ca481b057b94d54fc9ebacb13
+ sha256: df63f90625d2eaefcb6990437b941c1c90ec3c224bc65a2becac928542d0aa5f
category: main
optional: false
- - name: starlette
- version: 0.32.0.post1
+ - name: typeguard
+ version: 4.1.5
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- typing_extensions: ">=3.10.0"
- anyio: <5,>=3.4.0
- url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ importlib_metadata: ">=3.6"
+ typing_extensions: ">=4.7.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda
hash:
- md5: 9aa6d56db739eee2ff473becbe178fd1
- sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
- category: dev
- optional: true
- - name: tiledb
- version: 2.16.3
+ md5: 59d22e0ca481b057b94d54fc9ebacb13
+ sha256: df63f90625d2eaefcb6990437b941c1c90ec3c224bc65a2becac928542d0aa5f
+ category: main
+ optional: false
+ - name: typer
+ version: 0.9.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- bzip2: ">=1.0.8,<2.0a0"
- libabseil: ">=20230802.0,<20230803.0a0"
- libcxx: ">=15.0.7"
- libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- openssl: ">=3.1.2,<4.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.16.3-he15c4da_3.conda
+ click: ">=7.1.1,<9"
+ colorama: ">=0.4.3,<0.5.0"
+ python: ">=3.6"
+ rich: ">=10.11.0,<14.0.0"
+ shellingham: ">=1.3.0,<2.0.0"
+ typing-extensions: ">=3.7.4.3"
+ url: https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: fcf3711dd1817fd6e8ab59be86aa8dd9
- sha256: c2576bf0344b441f4c7d9212cfa68fe64de88dc9da735cb541c7faa0595d260f
+ md5: 5030a13b2fe5e143d5956d4943d3018f
+ sha256: d395e1e92281abb13e043220ecf8ea973ada8d38a1e8c683df14f46541c64bd2
category: main
optional: false
- - name: ukkonen
- version: 1.0.1
+ - name: typer
+ version: 0.9.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- cffi: ""
- libcxx: ">=15.0.7"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311he4fd1f5_4.conda
+ python: ">=3.6"
+ typing-extensions: ">=3.7.4.3"
+ colorama: ">=0.4.3,<0.5.0"
+ shellingham: ">=1.3.0,<2.0.0"
+ rich: ">=10.11.0,<14.0.0"
+ click: ">=7.1.1,<9"
+ url: https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: 5d5ab5c5af32931e03608034f4a5fd75
- sha256: 384fc81a34e248019d43a115386f77859ab63e0e6f12dade486d76359703743f
+ md5: 5030a13b2fe5e143d5956d4943d3018f
+ sha256: d395e1e92281abb13e043220ecf8ea973ada8d38a1e8c683df14f46541c64bd2
category: main
optional: false
- - name: uvicorn
- version: 0.24.0
+ - name: typer
+ version: 0.9.0
manager: conda
platform: osx-arm64
dependencies:
- click: ">=7.0"
- h11: ">=0.8"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/uvicorn-0.24.0-py311h267d04e_0.conda
+ python: ">=3.6"
+ typing-extensions: ">=3.7.4.3"
+ colorama: ">=0.4.3,<0.5.0"
+ shellingham: ">=1.3.0,<2.0.0"
+ rich: ">=10.11.0,<14.0.0"
+ click: ">=7.1.1,<9"
+ url: https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: ed05fec89baaa5869db4e27bf4d510dc
- sha256: 275934feb0e2cdfacd65414d8e54d3a9aa0e703f11a52ca3a0485df04a51cf77
+ md5: 5030a13b2fe5e143d5956d4943d3018f
+ sha256: d395e1e92281abb13e043220ecf8ea973ada8d38a1e8c683df14f46541c64bd2
category: main
optional: false
- - name: watchfiles
- version: 0.20.0
- manager: conda
- platform: osx-arm64
- dependencies:
- anyio: ">=3.0.0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.20.0-py311h0563b04_2.conda
- hash:
- md5: ea73d4e419ab5459d0a91aff3c481a82
- sha256: 6517e3498c432858c1631d20476faf87bc071eb97f252c02190472c97e87b7fe
- category: dev
- optional: true
- - name: wcwidth
- version: 0.2.10
+ - name: types-python-dateutil
+ version: 2.8.19.14
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- backports.functools_lru_cache: ""
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda
hash:
- md5: 48978e4e99db7d1ee0d277f6dee20684
- sha256: e988673c05416073d0e776bac223b6c79fb5cc1207291c6c6f9e238624a135c0
+ md5: 4df15c51a543e806d439490b862be1c6
+ sha256: 7b0129c72d371fa7a06ed5dd1d701844c20d03bb4641a38a88a982b347d087e2
category: main
optional: false
- - name: aiohttp
- version: 3.8.6
+ - name: types-python-dateutil
+ version: 2.8.19.14
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- aiosignal: ">=1.1.2"
- async-timeout: <5.0,>=4.0.0a3
- attrs: ">=17.3.0"
- charset-normalizer: ">=2.0,<4.0"
- frozenlist: ">=1.1.1"
- multidict: ">=4.5,<7.0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- yarl: ">=1.0,<2.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.8.6-py311h05b510d_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda
hash:
- md5: c783a2696f1acfb0fcd748aa87118518
- sha256: b41fca4f9bd2f09cf0daeb762c5f74cedfea366f409dcbdcff8d565c616c2309
+ md5: 4df15c51a543e806d439490b862be1c6
+ sha256: 7b0129c72d371fa7a06ed5dd1d701844c20d03bb4641a38a88a982b347d087e2
category: main
optional: false
- - name: alembic
- version: 1.12.1
+ - name: types-python-dateutil
+ version: 2.8.19.14
manager: conda
platform: osx-arm64
dependencies:
- importlib-metadata: ""
- importlib_resources: ""
- mako: ""
- python: ">=3.7"
- sqlalchemy: ">=1.3.0"
- typing-extensions: ">=4"
- url: https://conda.anaconda.org/conda-forge/noarch/alembic-1.12.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.14-pyhd8ed1ab_0.conda
hash:
- md5: 15de9992b4096a2a6656ca202fde6e4c
- sha256: 24019b1af4777e32843b230dd7a9bf7082943eb21bba03379ceed0bda50facf9
+ md5: 4df15c51a543e806d439490b862be1c6
+ sha256: 7b0129c72d371fa7a06ed5dd1d701844c20d03bb4641a38a88a982b347d087e2
category: main
optional: false
- - name: arelle-release
- version: 2.17.4
+ - name: types-pyyaml
+ version: 6.0.12.12
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- certifi: ""
- regex: ""
- python: ">=3.8"
- numpy: 1.*
- python-dateutil: 2.*
- isodate: 0.*
- lxml: 4.*
- openpyxl: 3.*
- pyparsing: 3.*
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.4-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda
hash:
- md5: 66972cbec7556aa94aba3da76b408f19
- sha256: a30a66c040021c396a99bf862ad78181a4888e67b2ac51ac7e21422c4165986c
+ md5: 0cb14c80f66937df894d60626dd1921f
+ sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c
category: main
optional: false
- - name: argon2-cffi
- version: 23.1.0
+ - name: types-pyyaml
+ version: 6.0.12.12
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- typing-extensions: ""
- argon2-cffi-bindings: ""
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda
hash:
- md5: 3afef1f55a1366b4d3b6a0d92e2235e4
- sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677
+ md5: 0cb14c80f66937df894d60626dd1921f
+ sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c
category: main
optional: false
- - name: aws-sdk-cpp
- version: 1.11.182
+ - name: types-pyyaml
+ version: 6.0.12.12
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- aws-c-common: ">=0.9.8,<0.9.9.0a0"
- aws-c-event-stream: ">=0.3.2,<0.3.3.0a0"
- aws-checksums: ">=0.1.17,<0.1.18.0a0"
- aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.182-h31542fa_7.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda
hash:
- md5: 6c837825a2350f590d307494e7a582ce
- sha256: 8dd2f9b127c464a87de5e820b2edcb9fe8230a2ca5b8a051d86073f5359ec29e
+ md5: 0cb14c80f66937df894d60626dd1921f
+ sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c
category: main
optional: false
- - name: black
- version: 23.10.1
+ - name: typing-extensions
+ version: 4.8.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- click: ">=8.0.0"
- mypy_extensions: ">=0.4.3"
- packaging: ">=22.0"
- pathspec: ">=0.9"
- platformdirs: ">=2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/black-23.10.1-py311h267d04e_0.conda
+ typing_extensions: 4.8.0
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
hash:
- md5: 12b064976b0152cb193120c645f6c3a0
- sha256: ec50f430559024cc7c8ef8733457bab49a6c88ef1ae857b4f7f2b44fe32b388e
+ md5: 384462e63262a527bda564fa2d9126c0
+ sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
category: main
optional: false
- - name: bottleneck
- version: 1.3.7
+ - name: typing-extensions
+ version: 4.8.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.3.7-py311hb49d859_1.conda
+ typing_extensions: 4.8.0
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
hash:
- md5: aa08818d574106d3926fcffd3f932389
- sha256: 423e5a12a559014273b5dfe732b22e059ede475562fe2175a5e7640ce34886f1
+ md5: 384462e63262a527bda564fa2d9126c0
+ sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
category: main
optional: false
- - name: cachecontrol
- version: 0.13.1
+ - name: typing-extensions
+ version: 4.8.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- msgpack-python: ">=0.5.2"
- requests: ">=2.16.0"
- url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda
+ typing_extensions: 4.8.0
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
hash:
- md5: 174bd699bb5aa9e2622eb4b288276ff8
- sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60
+ md5: 384462e63262a527bda564fa2d9126c0
+ sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
category: main
optional: false
- - name: contourpy
- version: 1.2.0
+ - name: typing_extensions
+ version: 4.8.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- numpy: ">=1.20,<2"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.2.0-py311hd03642b_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
hash:
- md5: c0fa0bea0af7ecdea23bf983655fa2d0
- sha256: 3ec341c3a33bbb7f60e9a96214e0e08c4ba9e4a553b18104194e7843abbb4ef4
+ md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
+ sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
category: main
optional: false
- - name: dask-core
- version: 2023.11.0
+ - name: typing_extensions
+ version: 4.8.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.9"
- packaging: ">=20.0"
- pyyaml: ">=5.3.1"
- cloudpickle: ">=1.5.0"
- toolz: ">=0.10.0"
- partd: ">=1.2.0"
- importlib_metadata: ">=4.13.0"
- fsspec: ">=2021.09.0"
- click: ">=8.1"
- url: https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.11.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
hash:
- md5: 3bf8f5c3fbab9e0cfffdf5914f021854
- sha256: f23b4e5d8f118d9d7916d8def04dab9a299d73879216da72dd7168c1c30ecb9e
+ md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
+ sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
category: main
optional: false
- - name: dnspython
- version: 2.4.2
+ - name: typing_extensions
+ version: 4.8.0
manager: conda
platform: osx-arm64
dependencies:
- sniffio: ""
- python: ">=3.8.0,<4.0.0"
- cryptography: ">=2.6,<42.0"
- httpcore: ">=0.17.3"
- idna: ">=2.1,<4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.4.2-pyhd8ed1ab_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
hash:
- md5: b9657eab1e69207feba4f21fa1207b03
- sha256: eb7de9ddc2c3a5aef78d6c74d2652ada0e1d47e11304953e65b3c7dfd8290f18
+ md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
+ sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
category: main
optional: false
- - name: ensureconda
- version: 1.4.3
+ - name: typing_inspect
+ version: 0.9.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- appdirs: ""
- filelock: ""
- python: ">=3.7"
- requests: ">=2"
- click: ">=5.1"
- url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2
+ mypy_extensions: ">=0.3.0"
+ python: ">=3.5"
+ typing_extensions: ">=3.7.4"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: c99ae3abf501990769047b4b40a98f17
- sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6
+ md5: 9e924b76b91908a17e28a19a0ab88687
+ sha256: 16e0b825c138e14ebc84623248d91d93a8cff29bb93595cc4aa46ca32f24f1de
category: main
optional: false
- - name: folium
- version: 0.15.0
+ - name: typing_inspect
+ version: 0.9.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- numpy: ""
- requests: ""
- python: ">=3.7"
- jinja2: ">=2.9"
- branca: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/folium-0.15.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ typing_extensions: ">=3.7.4"
+ mypy_extensions: ">=0.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: 25f5dbce4f946240dea7d2ee79d34254
- sha256: afe869f136fca1dbda8be0c342392fda99d951c4c4612f134a70efbf5449ef30
+ md5: 9e924b76b91908a17e28a19a0ab88687
+ sha256: 16e0b825c138e14ebc84623248d91d93a8cff29bb93595cc4aa46ca32f24f1de
category: main
optional: false
- - name: google-resumable-media
- version: 2.6.0
+ - name: typing_inspect
+ version: 0.9.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- google-crc32c: ">=1.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
+ python: ">=3.5"
+ typing_extensions: ">=3.7.4"
+ mypy_extensions: ">=0.3.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda
hash:
- md5: 74fd9d08866e60fc412abc8dd7c5486c
- sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
+ md5: 9e924b76b91908a17e28a19a0ab88687
+ sha256: 16e0b825c138e14ebc84623248d91d93a8cff29bb93595cc4aa46ca32f24f1de
category: main
optional: false
- - name: graphene
- version: "3.3"
+ - name: typing_utils
+ version: 0.1.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- aniso8601: ">=8,<10"
- graphql-core: ">=3.1,<3.3"
- graphql-relay: ">=3.1,<3.3"
- url: https://conda.anaconda.org/conda-forge/noarch/graphene-3.3-pyhd8ed1ab_0.conda
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: ed2ae94977dfd96566e6eaf373216728
- sha256: 8b4e2c1d326849c0094f9e96a9833addb10f638be67bb0590836720879697ec6
- category: dev
- optional: true
- - name: grpcio-status
- version: 1.59.2
+ md5: eb67e3cace64c66233e2d35949e20f92
+ sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739
+ category: main
+ optional: false
+ - name: typing_utils
+ version: 0.1.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- googleapis-common-protos: ">=1.5.5"
- protobuf: ">=4.21.6"
- grpcio: ">=1.59.2"
- url: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.59.2-pyhd8ed1ab_0.conda
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 5bed0b44f99ef55c0470d2c610fbbac6
- sha256: 9513c5dd0f7fbdba8dfe70ed4e1f7591fa1c49520e06f9f0202c514475dd4257
+ md5: eb67e3cace64c66233e2d35949e20f92
+ sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739
category: main
optional: false
- - name: gtk2
- version: 2.24.33
+ - name: typing_utils
+ version: 0.1.0
manager: conda
platform: osx-arm64
dependencies:
- atk-1.0: ">=2.36.0"
- cairo: ">=1.16.0,<2.0.0a0"
- gdk-pixbuf: ">=2.42.6,<3.0a0"
- gettext: ">=0.19.8.1,<1.0a0"
- libglib: ">=2.70.2,<3.0a0"
- pango: ">=1.50.3,<1.51.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h57013de_2.tar.bz2
+ python: ">=3.6.1"
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2
hash:
- md5: 144fb77338d90012ebe80d3dd13fc725
- sha256: 4bebd9809bb7e76b46af054f594eda5f280a796b7ec7f5870bd185ad5b3da338
- category: dev
- optional: true
- - name: h3-py
- version: 3.7.6
+ md5: eb67e3cace64c66233e2d35949e20f92
+ sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739
+ category: main
+ optional: false
+ - name: tzcode
+ version: 2023c
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- libcxx: ">=15.0.7"
- numpy: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/h3-py-3.7.6-py311ha891d26_1.conda
+ __glibc: ">=2.17,<3.0.a0"
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/tzcode-2023c-h0b41bf4_0.conda
hash:
- md5: 07e907cca837e6a36842206cc249d5a2
- sha256: 78435b66669f58d828ce390efaf36adc6845ce3c4e04fe1376c0b58d6b92377a
+ md5: 0c0533894f21c3d35697cb8378d390e2
+ sha256: 62b0d3eee4260d310f578015305834b8a588377f796e5e290ec267da8a51a027
category: main
optional: false
- - name: httpx
- version: 0.25.1
+ - name: tzcode
+ version: 2023c
manager: conda
- platform: osx-arm64
- dependencies:
- certifi: ""
- idna: ""
- httpcore: ""
- anyio: ""
- sniffio: ""
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.25.1-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/tzcode-2023c-hb7f2c08_0.conda
hash:
- md5: 3e00320730cb93fa4941a0cbea0db572
- sha256: fbf9e61459b65022eecbdbb19ec2dc83740374e7db981732d687456e5bcdff72
+ md5: a7ba8e96323b9d8ce4f0edc4f4dab27f
+ sha256: 0d4b111314bea267454f48691debc1ff4c0ce8cb91491d2be30381de498ac59e
category: main
optional: false
- - name: identify
- version: 2.5.31
+ - name: tzcode
+ version: 2023c
manager: conda
platform: osx-arm64
- dependencies:
- ukkonen: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/tzcode-2023c-h1a8c8d9_0.conda
hash:
- md5: fea10604a45e974b110ea15a88913ebc
- sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee
+ md5: 96779d3be996d78411b083f99a51199c
+ sha256: 0a60ff53272547a0f80862f0a1969a5d1cec16bd2e9098ed5b07d317682a4361
category: main
optional: false
- - name: isoduration
- version: 20.11.0
+ - name: tzdata
+ version: 2023c
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.7"
- arrow: ">=0.15.0"
- url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2
+ platform: linux-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda
hash:
- md5: 4cb68948e0b8429534380243d063a27a
- sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493
+ md5: 939e3e74d8be4dac89ce83b20de2492a
+ sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55
category: main
optional: false
- - name: jsonschema
- version: 4.20.0
+ - name: tzdata
+ version: 2023c
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.8"
- attrs: ">=22.2.0"
- importlib_resources: ">=1.4.0"
- pkgutil-resolve-name: ">=1.3.10"
- jsonschema-specifications: ">=2023.03.6"
- referencing: ">=0.28.4"
- rpds-py: ">=0.7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda
hash:
- md5: 1116d79def5268414fb0917520b2bbf1
- sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296
+ md5: 939e3e74d8be4dac89ce83b20de2492a
+ sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55
category: main
optional: false
- - name: jupyter_core
- version: 5.5.0
+ - name: tzdata
+ version: 2023c
manager: conda
platform: osx-arm64
- dependencies:
- platformdirs: ">=2.5"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- traitlets: ">=5.3"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/jupyter_core-5.5.0-py311h267d04e_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda
hash:
- md5: e8e88dea6f85c4efad941afd8c972376
- sha256: 447426241b1d8dc1a468ecd4501469f39e2f6967a9c8698edbe20615ba8735ad
+ md5: 939e3e74d8be4dac89ce83b20de2492a
+ sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55
category: main
optional: false
- - name: keyring
- version: 24.3.0
+ - name: ucx
+ version: 1.15.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- importlib_metadata: ">=4.11.4"
- jaraco.classes: ""
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/keyring-24.3.0-py311h267d04e_0.conda
+ libgcc-ng: ">=12"
+ libnuma: ">=2.0.16,<3.0a0"
+ libstdcxx-ng: ">=12"
+ rdma-core: ">=28.9,<29.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h64cca9d_0.conda
hash:
- md5: 3ef01ab147d3d43bb0990eba7a1fcaec
- sha256: f7791c4a77253a2278eaa3dad298f578af5af4f5e8e69e46c6dca23259dd949a
+ md5: b35b1f1a9fdbf93266c91f297dc9060e
+ sha256: 8a4dce10304fee0df715addec3d078421aa7aa0824422a6630d621d15bd98e5f
category: main
optional: false
- - name: libgdal
- version: 3.8.0
+ - name: ukkonen
+ version: 1.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- blosc: ">=1.21.5,<2.0a0"
- cfitsio: ">=4.3.0,<4.3.1.0a0"
- freexl: ">=2.0.0,<3.0a0"
- geos: ">=3.12.0,<3.12.1.0a0"
- geotiff: ">=1.7.1,<1.8.0a0"
- giflib: ">=5.2.1,<5.3.0a0"
- hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- json-c: ">=0.17,<0.18.0a0"
- kealib: ">=1.5.2,<1.6.0a0"
- lerc: ">=4.0.0,<5.0a0"
- libaec: ">=1.1.2,<2.0a0"
- libarchive: ">=3.7.2,<3.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
- libcxx: ">=16.0.6"
- libdeflate: ">=1.19,<1.20.0a0"
- libexpat: ">=2.5.0,<3.0a0"
- libiconv: ">=1.17,<2.0a0"
- libjpeg-turbo: ">=3.0.0,<4.0a0"
- libkml: ">=1.3.0,<1.4.0a0"
- libnetcdf: ">=4.9.2,<4.9.3.0a0"
- libpng: ">=1.6.39,<1.7.0a0"
- libpq: ">=16.1,<17.0a0"
- libspatialite: ">=5.1.0,<5.2.0a0"
- libsqlite: ">=3.44.0,<4.0a0"
- libtiff: ">=4.6.0,<4.7.0a0"
- libwebp-base: ">=1.3.2,<2.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- openjpeg: ">=2.5.0,<3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- pcre2: ">=10.42,<10.43.0a0"
- poppler: ">=23.11.0,<23.12.0a0"
- postgresql: ""
- proj: ">=9.3.0,<9.3.1.0a0"
- tiledb: ">=2.16,<2.17.0a0"
- xerces-c: ">=3.2.4,<3.3.0a0"
- xz: ">=5.2.6,<6.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.0-h751e6a0_4.conda
+ cffi: ""
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h9547e67_4.conda
hash:
- md5: 76b2c16e64279c369be3802c67582f94
- sha256: 9ec68927b10429560a0cbff85520d28ceb93a812195fe7c33dc2fcefc87055a3
+ md5: 586da7df03b68640de14dc3e8bcbf76f
+ sha256: c2d33e998f637b594632eba3727529171a06eb09896e36aa42f1ebcb03779472
category: main
optional: false
- - name: librsvg
- version: 2.56.3
+ - name: ukkonen
+ version: 1.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- gdk-pixbuf: ">=2.42.10,<3.0a0"
- gettext: ">=0.21.1,<1.0a0"
- libglib: ">=2.76.4,<3.0a0"
- libxml2: ">=2.11.4,<2.12.0a0"
- pango: ">=1.50.14,<2.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.56.3-h0db3404_0.conda
+ cffi: ""
+ libcxx: ">=15.0.7"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py311h5fe6e05_4.conda
hash:
- md5: b9784f5c16c6d01d59f7e65a3b0441c6
- sha256: 4ed7ddb12fe193994cbf7d77eb3d7e776fda6c65e95c467f32392f40b880bbe6
- category: dev
- optional: true
- - name: numba
- version: 0.58.1
+ md5: 8f750b84128d48dc8376572c5eace61e
+ sha256: b273782a1277042a54e12411beebd378d2a2a69e503bcf147766e98628e91c91
+ category: main
+ optional: false
+ - name: ukkonen
+ version: 1.0.1
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- llvm-openmp: ">=17.0.4"
- llvmlite: ">=0.41.1,<0.42.0a0"
- numpy: ">=1.23.5,<2.0a0"
+ cffi: ""
+ libcxx: ">=15.0.7"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.58.1-py311h9ec4793_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py311he4fd1f5_4.conda
hash:
- md5: d143fecfd4a3ad7baacaff7611b21ee5
- sha256: f4161fb906e74b79746170cb6b0e8a3a42a165e17c12f8e358eac2b533b25b61
+ md5: 5d5ab5c5af32931e03608034f4a5fd75
+ sha256: 384fc81a34e248019d43a115386f77859ab63e0e6f12dade486d76359703743f
category: main
optional: false
- - name: numexpr
- version: 2.8.7
+ - name: unicodecsv
+ version: 0.14.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.8.7-py311h6e08293_4.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/unicodecsv-0.14.1-pyhd8ed1ab_2.conda
hash:
- md5: f31ccd21d19edd2e2479c065302b7388
- sha256: d37e44a13e5690db715b5c34ba7f53565daae8bfbf6f61c8feba5cf6b0ab5519
+ md5: 21c43fb7afe9826a5da5506d45176cce
+ sha256: 263178c9ef2501aa8e3b7e8fe8187fd532065d04b9088e5fedcff8870ae75cf7
category: main
optional: false
- - name: oauthlib
- version: 3.2.2
+ - name: unicodecsv
+ version: 0.14.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- cryptography: ""
- blinker: ""
- python: ">=3.6"
- pyjwt: ">=1.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/unicodecsv-0.14.1-pyhd8ed1ab_2.conda
hash:
- md5: 8f882b197fd9c4941a787926baea4868
- sha256: 0cfd5146a91d3974f4abfc2a45de890371d510a77238fe553e036ec8c031dc5b
+ md5: 21c43fb7afe9826a5da5506d45176cce
+ sha256: 263178c9ef2501aa8e3b7e8fe8187fd532065d04b9088e5fedcff8870ae75cf7
category: main
optional: false
- - name: pandas
- version: 2.1.3
+ - name: unicodecsv
+ version: 0.14.1
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libcxx: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.8.1"
- python-tzdata: ">=2022a"
- python_abi: 3.11.*
- pytz: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.1.3-py311h6e08293_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/unicodecsv-0.14.1-pyhd8ed1ab_2.conda
hash:
- md5: 0d0ecc6bac2b7a4007bf4d96b125d674
- sha256: eacddc0866e26372578fdeb5059e6f7edf4c6c8f59f494a8d5e64caa032b2600
+ md5: 21c43fb7afe9826a5da5506d45176cce
+ sha256: 263178c9ef2501aa8e3b7e8fe8187fd532065d04b9088e5fedcff8870ae75cf7
category: main
optional: false
- - name: prompt-toolkit
- version: 3.0.41
+ - name: universal_pathlib
+ version: 0.1.4
+ manager: conda
+ platform: linux-64
+ dependencies:
+ fsspec: ">=2022.1.0"
+ python: ">=3.8,<3.12"
+ url: https://conda.anaconda.org/conda-forge/noarch/universal_pathlib-0.1.4-pyhd8ed1ab_0.conda
+ hash:
+ md5: 08ca974df312b574c4d6511426539a87
+ sha256: ee5a8f423b7429e2ebc0051638875a69e4dc4558c07a26d3063866cebed5fb66
+ category: main
+ optional: false
+ - name: universal_pathlib
+ version: 0.1.4
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.8,<3.12"
+ fsspec: ">=2022.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/universal_pathlib-0.1.4-pyhd8ed1ab_0.conda
+ hash:
+ md5: 08ca974df312b574c4d6511426539a87
+ sha256: ee5a8f423b7429e2ebc0051638875a69e4dc4558c07a26d3063866cebed5fb66
+ category: main
+ optional: false
+ - name: universal_pathlib
+ version: 0.1.4
manager: conda
platform: osx-arm64
dependencies:
- wcwidth: ""
+ python: ">=3.8,<3.12"
+ fsspec: ">=2022.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/universal_pathlib-0.1.4-pyhd8ed1ab_0.conda
+ hash:
+ md5: 08ca974df312b574c4d6511426539a87
+ sha256: ee5a8f423b7429e2ebc0051638875a69e4dc4558c07a26d3063866cebed5fb66
+ category: main
+ optional: false
+ - name: uri-template
+ version: 1.3.0
+ manager: conda
+ platform: linux-64
+ dependencies:
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: f511a993aa4336bef9dd874ee3403e67
- sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
+ md5: 0944dc65cb4a9b5b68522c3bb585d41c
+ sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
category: main
optional: false
- - name: pybtex-docutils
- version: 1.0.3
+ - name: uri-template
+ version: 1.3.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- docutils: ">=0.14"
- pybtex: ">=0.16"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pybtex-docutils-1.0.3-py311h267d04e_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: a5145d3785720aea61185b626b783320
- sha256: 7f6c4000a4d01af6621fc1774d8f9fbea8246d2c474c449e75765bb91eaae46c
+ md5: 0944dc65cb4a9b5b68522c3bb585d41c
+ sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
category: main
optional: false
- - name: pyopenssl
- version: 23.3.0
+ - name: uri-template
+ version: 1.3.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
- cryptography: ">=41.0.5,<42"
- url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.3.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda
hash:
- md5: 7819533e674dbbc51468f3228b9b1bb6
- sha256: f7e04c4a49b1593140231d70801e2204e314e26d7141bfbdc8089d04114c0010
+ md5: 0944dc65cb4a9b5b68522c3bb585d41c
+ sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94
category: main
optional: false
- - name: readthedocs-sphinx-ext
- version: 2.2.3
+ - name: uriparser
+ version: 0.9.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- requests: ""
- packaging: ""
- python: ">=3.6"
- jinja2: ">=2.9"
- url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.7-hcb278e6_1.conda
hash:
- md5: 6bc1a00f5502f9ed13526e4c6bea6900
- sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
+ md5: 2c46deb08ba9b10e90d0a6401ad65deb
+ sha256: bc7670384fc3e519b376eab25b2c747afe392b243f17e881075231f4a0f2e5a0
category: main
optional: false
- - name: requests-toolbelt
- version: 0.10.1
+ - name: uriparser
+ version: 0.9.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.6"
- requests: ">=2.0.1,<=3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.10.1-pyhd8ed1ab_0.tar.bz2
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-64/uriparser-0.9.7-hf0c8a7f_1.conda
hash:
- md5: a4cd20af9711434f89d1ec0d2b3ae6ba
- sha256: 7f4c9c829add7a65a1f536c30539c541bb3c9dddbd03d7ba318f224b4add0d6d
- category: dev
- optional: true
- - name: responses
- version: 0.24.1
+ md5: 998073b0ccb5f99d07d2089cf06363b3
+ sha256: faf0f7919851960bbb1d18d977f62082c0e4dc8f26e348d702e8a2dba53a4c37
+ category: main
+ optional: false
+ - name: uriparser
+ version: 0.9.7
manager: conda
platform: osx-arm64
dependencies:
- pyyaml: ""
- typing_extensions: ""
- types-pyyaml: ""
- python: ">=3.7"
- requests: ">=2.30.0,<3.0"
- urllib3: ">=1.25.10,<3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda
+ libcxx: ">=14.0.6"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.7-hb7217d7_1.conda
hash:
- md5: b1b80aaa77d5e83183cd0c9e9025b1fa
- sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67
+ md5: 4fe532e3c6b0cfa5365eb01743d32578
+ sha256: bedd03f3bb30b73ae7b0dc9626f1371a8568ce6d41303df3e8299688428dfa94
category: main
optional: false
- - name: s3transfer
- version: 0.7.0
+ - name: urllib3
+ version: 1.26.18
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
+ brotli-python: ">=1.0.9"
+ pysocks: ">=1.5.6,<2.0,!=1.5.7"
python: ">=3.7"
- botocore: ">=1.12.36,<2.0a.0"
- url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda
hash:
- md5: 5fe335cb1420d13a818fe01310af2b80
- sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d
+ md5: bf61cfd2a7f212efba378167a07d4a6a
+ sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7
category: main
optional: false
- - name: scipy
- version: 1.11.3
+ - name: urllib3
+ version: 1.26.18
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- libblas: ">=3.9.0,<4.0a0"
- libcblas: ">=3.9.0,<4.0a0"
- libcxx: ">=15.0.7"
- libgfortran: 5.*
- libgfortran5: ">=13.2.0"
- liblapack: ">=3.9.0,<4.0a0"
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.11.3-py311h93d07a4_1.conda
+ python: ">=3.7"
+ brotli-python: ">=1.0.9"
+ pysocks: ">=1.5.6,<2.0,!=1.5.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda
hash:
- md5: 1c687552b288a801a7851166f2494768
- sha256: 6347f47c02eef02afe1e5534c88269f73b2da28cdff8c826b210e529b8bd1f07
+ md5: bf61cfd2a7f212efba378167a07d4a6a
+ sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7
category: main
optional: false
- - name: send2trash
- version: 1.8.2
+ - name: urllib3
+ version: 1.26.18
manager: conda
platform: osx-arm64
dependencies:
- __osx: ""
- pyobjc-framework-cocoa: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyhd1c38e8_0.conda
+ python: ">=3.7"
+ brotli-python: ">=1.0.9"
+ pysocks: ">=1.5.6,<2.0,!=1.5.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda
hash:
- md5: 2657c3de5371c571aef6678afb4aaadd
- sha256: dca4022bae47618ed738ab7d45ead5202d174b741cfb98e4484acdc6e76da32a
+ md5: bf61cfd2a7f212efba378167a07d4a6a
+ sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7
category: main
optional: false
- - name: shapely
- version: 2.0.2
+ - name: uvicorn
+ version: 0.24.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- geos: ">=3.12.0,<3.12.1.0a0"
- numpy: ">=1.23.5,<2.0a0"
+ click: ">=7.0"
+ h11: ">=0.8"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.2-py311h4826c84_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.24.0-py311h38be061_0.conda
hash:
- md5: a9de7ff7899a7067646aa7053eb5737c
- sha256: 3d08d9553565704fef53d0c9cb901bb2f40337f0a590b3ea714d363a34ee2250
+ md5: a6eb331b0b42251227dbdfb5838c287b
+ sha256: df5269d01ba7ae8fa7cc0d822a63db7a646005c689e8a90083f145a707df6035
category: main
optional: false
- - name: stevedore
- version: 5.1.0
+ - name: uvicorn
+ version: 0.24.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- pbr: "!=2.1.0,>=2.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/stevedore-5.1.0-pyhd8ed1ab_0.conda
+ click: ">=7.0"
+ h11: ">=0.8"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-0.24.0-py311h6eed73b_0.conda
hash:
- md5: 55864c50fd9354fd19f6a5078a068170
- sha256: 69b779f4cdb0b84f87067414bcccaffc83c6d734dac84523c40115c383a2e2d5
+ md5: 62249aa566e8be9286966278a6582e1a
+ sha256: ab7aa3875fbafd7912b97616573741508e140446fa9819ba870788677ba8fba3
category: main
optional: false
- - name: typeguard
- version: 4.1.5
+ - name: uvicorn
+ version: 0.24.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- importlib_metadata: ">=3.6"
- typing_extensions: ">=4.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.1.5-pyhd8ed1ab_1.conda
+ click: ">=7.0"
+ h11: ">=0.8"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/uvicorn-0.24.0-py311h267d04e_0.conda
hash:
- md5: 59d22e0ca481b057b94d54fc9ebacb13
- sha256: df63f90625d2eaefcb6990437b941c1c90ec3c224bc65a2becac928542d0aa5f
+ md5: ed05fec89baaa5869db4e27bf4d510dc
+ sha256: 275934feb0e2cdfacd65414d8e54d3a9aa0e703f11a52ca3a0485df04a51cf77
category: main
optional: false
- - name: typer
- version: 0.9.0
+ - name: uvicorn-standard
+ version: 0.24.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- typing-extensions: ">=3.7.4.3"
- colorama: ">=0.4.3,<0.5.0"
- shellingham: ">=1.3.0,<2.0.0"
- rich: ">=10.11.0,<14.0.0"
- click: ">=7.1.1,<9"
- url: https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda
+ httptools: ">=0.5.0"
+ python-dotenv: ">=0.13"
+ python_abi: 3.11.*
+ pyyaml: ">=5.1"
+ uvicorn: 0.24.0
+ uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
+ watchfiles: ">=0.13"
+ websockets: ">=10.4"
+ url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-standard-0.24.0-h38be061_0.conda
hash:
- md5: 5030a13b2fe5e143d5956d4943d3018f
- sha256: d395e1e92281abb13e043220ecf8ea973ada8d38a1e8c683df14f46541c64bd2
- category: main
- optional: false
+ md5: e8143a99cadb40ba9542e6e9ff15d862
+ sha256: dc23a3aff61791522ab1d924c0f6b67468c3c72772c5ca690158c160ae42ac33
+ category: dev
+ optional: true
+ - name: uvicorn-standard
+ version: 0.24.0
+ manager: conda
+ platform: osx-64
+ dependencies:
+ httptools: ">=0.5.0"
+ python-dotenv: ">=0.13"
+ python_abi: 3.11.*
+ pyyaml: ">=5.1"
+ uvicorn: 0.24.0
+ uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
+ watchfiles: ">=0.13"
+ websockets: ">=10.4"
+ url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-standard-0.24.0-h6eed73b_0.conda
+ hash:
+ md5: fcfded7537383dc21fc53708048fb40f
+ sha256: 30476332eed1f448bfe769dcdf8a5a68e55587980026eae317c2a84b17daac2b
+ category: dev
+ optional: true
- name: uvicorn-standard
version: 0.24.0
manager: conda
@@ -22423,1513 +22795,1114 @@ package:
sha256: 391af506e734bd59d1a3b4611e27393b26ea6aa585070a63a45d4522a1fbd500
category: dev
optional: true
- - name: virtualenv
- version: 20.24.6
+ - name: uvloop
+ version: 0.19.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- distlib: <1,>=0.3.7
- filelock: <4,>=3.12.2
- platformdirs: <4,>=3.9.1
- url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda
+ __glibc: ">=2.17,<3.0.a0"
+ libgcc-ng: ">=12"
+ libuv: ">=1.46.0,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.19.0-py311h460e60f_0.conda
hash:
- md5: fb1fc875719e217ed799a7aae11d3be4
- sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde
- category: main
- optional: false
- - name: boto3
- version: 1.29.2
+ md5: 671712f2371367c4df72dcba03ef6b82
+ sha256: 5748b7c33b7e3238c3f8fce654e1f5ad4877da04e8f30bd3c26c59ae7bfdcd92
+ category: dev
+ optional: true
+ - name: uvloop
+ version: 0.19.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- jmespath: ">=0.7.1,<2.0.0"
- s3transfer: ">=0.7.0,<0.8.0"
- botocore: ">=1.32.2,<1.33.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.29.2-pyhd8ed1ab_0.conda
+ libuv: ">=1.46.0,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/uvloop-0.19.0-py311ha272bfe_0.conda
hash:
- md5: 7c73d1610c56a1d624c9ef470221d10c
- sha256: 92b63c85d2bbb85be1f406abb41e36ef87d692222c57a24a0d27c6027107b023
- category: main
- optional: false
- - name: cachecontrol-with-filecache
- version: 0.13.1
+ md5: f878c810a3665d5cca94d1da888413b3
+ sha256: 40439cb32c09d961e61528b87f48e86b3ca549b26d62b8b06b7180b1a3356d9e
+ category: dev
+ optional: true
+ - name: uvloop
+ version: 0.19.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- filelock: ">=3.8.0"
- cachecontrol: 0.13.1
- url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda
+ libuv: ">=1.46.0,<2.0a0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.19.0-py311h05b510d_0.conda
hash:
- md5: 8c4781ca0893cff3a64423954ce234a1
- sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85
+ md5: 41568c5b89355b556470de5c41a97c92
+ sha256: 631554f96f48818f4b055b2046e35c5072582740074c251fa7fa4f5d9eb527cb
+ category: dev
+ optional: true
+ - name: validators
+ version: 0.22.0
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/validators-0.22.0-pyhd8ed1ab_0.conda
+ hash:
+ md5: 56435633ef70e7b92c54151599cbf757
+ sha256: f30699fd1a76cf3291e042167f8dc8dd28e00e08e49047a353304c7ad7bc279d
category: main
optional: false
- - name: dagster
- version: 1.5.9
+ - name: validators
+ version: 0.22.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- requests: ""
- setuptools: ""
- tqdm: ""
- jinja2: ""
- python-dateutil: ""
- pytz: ""
- tabulate: ""
- tomli: ""
- python-dotenv: ""
- pywin32-on-windows: ""
- docstring_parser: ""
- universal_pathlib: ""
python: ">=3.8"
- pyyaml: ">=5.1"
- watchdog: ">=0.8.3"
- packaging: ">=20.9"
- click: ">=5.0"
- typing_extensions: ">=4.4.0"
- coloredlogs: ">=6.1,<=14.0"
- croniter: ">=0.3.34"
- toposort: ">=1.0"
- psutil: ">=1.0"
- sqlalchemy: ">=1.0"
- grpcio-health-checking: ">=1.44.0"
- protobuf: ">=3.20.0"
- grpcio: ">=1.44.0"
- alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
- pydantic: ">1.10.0,!=1.10.7"
- pendulum: <3
- dagster-pipes: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/validators-0.22.0-pyhd8ed1ab_0.conda
hash:
- md5: d8ab27112f82687ffcd456a3b88092e5
- sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
+ md5: 56435633ef70e7b92c54151599cbf757
+ sha256: f30699fd1a76cf3291e042167f8dc8dd28e00e08e49047a353304c7ad7bc279d
category: main
optional: false
- - name: datasette
- version: 0.64.4
+ - name: validators
+ version: 0.22.0
manager: conda
platform: osx-arm64
dependencies:
- setuptools: ""
- pip: ""
- python: ">=3.7"
- pyyaml: ">=5.3"
- jinja2: ">=2.10.3"
- click: ">=7.1.1"
- pint: ">=0.9"
- httpx: ">=0.20"
- asgi-csrf: ">=0.9"
- itsdangerous: ">=1.1"
- click-default-group-wheel: ">=1.2.2"
- hupper: ">=1.9"
- uvicorn: ">=0.11"
- pluggy: ">=1.0"
- aiofiles: ">=0.4"
- asgiref: ">=3.2.10"
- janus: ">=0.6.2"
- mergedeep: ">=1.1.1"
- url: https://conda.anaconda.org/conda-forge/noarch/datasette-0.64.4-pyhd8ed1ab_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/validators-0.22.0-pyhd8ed1ab_0.conda
hash:
- md5: cd1207af03052f6b81906e1a914ad3c5
- sha256: 8800f86ec23a31ad642a1467d0a8f343038c7e2237a1f9046493ad1868ceb441
+ md5: 56435633ef70e7b92c54151599cbf757
+ sha256: f30699fd1a76cf3291e042167f8dc8dd28e00e08e49047a353304c7ad7bc279d
category: main
optional: false
- - name: doc8
- version: 1.1.1
+ - name: virtualenv
+ version: 20.24.7
manager: conda
- platform: osx-arm64
- dependencies:
- pygments: ""
- tomli: ""
- stevedore: ""
+ platform: linux-64
+ dependencies:
+ distlib: <1,>=0.3.7
+ filelock: <4,>=3.12.2
+ platformdirs: <5,>=3.9.1
python: ">=3.8"
- restructuredtext_lint: ">=0.7"
- docutils: ">=0.19,<0.21"
- url: https://conda.anaconda.org/conda-forge/noarch/doc8-1.1.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda
hash:
- md5: 5e9e17751f19d03c4034246de428582e
- sha256: 00691538e6289b7947cabc2024f08883b3e2ded00369c68de7d67677e9d4c250
+ md5: db990278c2c00b268eed778de44f6057
+ sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a
category: main
optional: false
- - name: email-validator
- version: 2.1.0.post1
+ - name: virtualenv
+ version: 20.24.7
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- idna: ">=2.0.0"
- dnspython: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.1.0.post1-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ distlib: <1,>=0.3.7
+ filelock: <4,>=3.12.2
+ platformdirs: <5,>=3.9.1
+ url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda
hash:
- md5: 192fe8f657c763c6120d9f8592055847
- sha256: 0b2e503da10648e2fa8d13035ddda174a549732c4f17476363882ebf67867283
+ md5: db990278c2c00b268eed778de44f6057
+ sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a
category: main
optional: false
- - name: frictionless
- version: 4.40.8
+ - name: virtualenv
+ version: 20.24.7
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.6"
- pyyaml: ">=5.3"
- jsonschema: ">=2.5"
- chardet: ">=3.0"
- python-dateutil: ">=2.8"
- isodate: ">=0.6"
- requests: ">=2.10"
- python-slugify: ">=1.2"
- stringcase: ">=1.2"
- petl: ">=1.6"
- validators: ">=0.18"
- rfc3986: ">=1.4"
- tabulate: ">=0.8.10"
- marko: ">=1.0"
- simpleeval: ">=0.9.11"
- typer: ">=0.5"
- jinja2: ">=3.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/frictionless-4.40.8-pyh6c4a22f_0.tar.bz2
+ python: ">=3.8"
+ distlib: <1,>=0.3.7
+ filelock: <4,>=3.12.2
+ platformdirs: <5,>=3.9.1
+ url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda
hash:
- md5: d2791ef8f6c1252aa8d2e2001a603815
- sha256: 0d7d669d92aa4ecf08effb64aea4c98aa65607bdb98e7b82627b7c43556dd9bc
+ md5: db990278c2c00b268eed778de44f6057
+ sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a
category: main
optional: false
- - name: gdal
- version: 3.8.0
+ - name: watchdog
+ version: 3.0.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- hdf5: ">=1.14.2,<1.14.3.0a0"
- libcxx: ">=16.0.6"
- libgdal: 3.8.0
- libxml2: ">=2.11.5,<2.12.0a0"
- numpy: ">=1.23.5,<2.0a0"
- openssl: ">=3.1.4,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.0-py311h32a4f3d_4.conda
+ pyyaml: ">=3.10"
+ url: https://conda.anaconda.org/conda-forge/linux-64/watchdog-3.0.0-py311h38be061_1.conda
hash:
- md5: 587260f73e05cfa163f3e8964746ae2f
- sha256: ee6d7444923aba96618bdf4f29c5323fc6b4bc040eb2a77ad2396efebdb01823
+ md5: 1901b9f3ca3782f31450fd7158d2fe8a
+ sha256: c1fd4f6bd6f3c4009fe2f97d3ed8edd2f2a46058293e0176b06fa181eb66558f
category: main
optional: false
- - name: geopandas-base
- version: 0.14.1
+ - name: watchdog
+ version: 3.0.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- packaging: ""
- python: ">=3.9"
- pandas: ">=1.4.0"
- shapely: ">=1.8.0"
- pyproj: ">=3.3.0"
- url: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-0.14.1-pyha770c72_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ pyyaml: ">=3.10"
+ url: https://conda.anaconda.org/conda-forge/osx-64/watchdog-3.0.0-py311h5ef12f2_1.conda
hash:
- md5: d65c6f458bfdaa181f388d91e858ea67
- sha256: c813004bb84e50de19f599b188719e40106c858c7da22e504b29ce66e5043361
+ md5: 32c15f3306fd2e9a9c2876f2fc33d5ed
+ sha256: e3c40135edb9399277f8afc7b5344b507e40a46cef2ade2d3185f951c884c72b
category: main
optional: false
- - name: google-auth
- version: 2.23.4
+ - name: watchdog
+ version: 3.0.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- pyasn1-modules: ">=0.2.1"
- rsa: ">=3.1.4,<5"
- pyopenssl: ">=20.0.0"
- pyu2f: ">=0.1.5"
- requests: ">=2.20.0,<3.0.0"
- cachetools: ">=2.0.0,<6.0"
- aiohttp: ">=3.6.2,<4.0.0"
- cryptography: ">=38.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ pyyaml: ">=3.10"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/watchdog-3.0.0-py311heffc1b2_1.conda
hash:
- md5: 9ad01e23627db9def3104ba78fd19229
- sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
+ md5: 67202ddda794d7ff7ca6b6e45337073d
+ sha256: 3fd810c89bb56b70518f1e60b7d3769ca13ab8a55e572cc90bba61f7a2a3e8b5
category: main
optional: false
- - name: gql-with-requests
- version: 3.4.1
+ - name: watchfiles
+ version: 0.21.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- requests: ""
- urllib3: ""
- requests-toolbelt: ""
- python: ">=3.6"
- gql: 3.4.1
- url: https://conda.anaconda.org/conda-forge/noarch/gql-with-requests-3.4.1-pyhd8ed1ab_0.conda
+ anyio: ">=3.0.0"
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.21.0-py311h46250e7_0.conda
hash:
- md5: 1814ff1e969b01d3570027efcf4f163a
- sha256: f11fb42542950f5e96ee252c9bebbd205bcbf1e20a3d8aeb056998bbdfef68f2
+ md5: a09a506aee55efbf1d455e25c2233efe
+ sha256: fcacaf84e6ef05f216f8b89c8ac26ec34bf0d18117977fdebd03c80bfd74923d
category: dev
optional: true
- - name: graphviz
- version: 8.1.0
+ - name: watchfiles
+ version: 0.21.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- cairo: ">=1.16.0,<2.0a0"
- expat: ""
- fontconfig: ">=2.14.2,<3.0a0"
- fonts-conda-ecosystem: ""
- freetype: ">=2.12.1,<3.0a0"
- gdk-pixbuf: ">=2.42.10,<3.0a0"
- gtk2: ""
- gts: ">=0.7.6,<0.8.0a0"
- libcxx: ">=15.0.7"
- libexpat: ">=2.5.0,<3.0a0"
- libgd: ">=2.3.3,<2.4.0a0"
- libglib: ">=2.76.4,<3.0a0"
- librsvg: ">=2.56.1,<3.0a0"
- libtool: ""
- libwebp-base: ">=1.3.1,<2.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- pango: ">=1.50.14,<2.0a0"
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-8.1.0-h10878c0_0.conda
+ anyio: ">=3.0.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/watchfiles-0.21.0-py311h5e0f0e4_0.conda
hash:
- md5: 2ac37563706d58d9129901ef9343d6e5
- sha256: 9265eb1bf08480bef5993a3e2a36591c827f0998b7f7b1417e36fb060c99e607
+ md5: 17c742cd36958bb973ca0194bbba2d7b
+ sha256: 174ba1f4340ecbfd823314b65c80b951aa94e74c3ca7b3fbe7666362082e54fa
category: dev
optional: true
- - name: jsonschema-with-format-nongpl
- version: 4.20.0
+ - name: watchfiles
+ version: 0.21.0
manager: conda
platform: osx-arm64
dependencies:
- python: ""
- idna: ""
- rfc3339-validator: ""
- uri-template: ""
- fqdn: ""
- isoduration: ""
- jsonpointer: ">1.13"
- webcolors: ">=1.11"
- rfc3986-validator: ">0.1.0"
- jsonschema: ">=4.20.0,<4.20.1.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.20.0-pyhd8ed1ab_0.conda
+ anyio: ">=3.0.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.21.0-py311h94f323b_0.conda
hash:
- md5: a168c5f84010711f6d4ae650bc22b480
- sha256: 03558b25daa57137fdf98e92731ba50ff5506f265294ac2eef5ec465c76ecf57
+ md5: 2dfb9cc5cc18d99d737abeaad27ef8f9
+ sha256: d1f5537fe556d10b915e3fb3e5f9098b10666e560ce4e6639467e4e5170009da
+ category: dev
+ optional: true
+ - name: wcwidth
+ version: 0.2.12
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.12-pyhd8ed1ab_0.conda
+ hash:
+ md5: bf4a1d1a97ca27b0b65bacd9e238b484
+ sha256: ca757d0fc2dbd422af9d3238a8b4b630a6e11df3707a447bd89540656770d1d7
category: main
optional: false
- - name: jupyter_client
- version: 8.6.0
+ - name: wcwidth
+ version: 0.2.12
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.12-pyhd8ed1ab_0.conda
+ hash:
+ md5: bf4a1d1a97ca27b0b65bacd9e238b484
+ sha256: ca757d0fc2dbd422af9d3238a8b4b630a6e11df3707a447bd89540656770d1d7
+ category: main
+ optional: false
+ - name: wcwidth
+ version: 0.2.12
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- python-dateutil: ">=2.8.2"
- jupyter_core: ">=4.12,!=5.0.*"
- traitlets: ">=5.3"
- pyzmq: ">=23.0"
- importlib_metadata: ">=4.8.3"
- tornado: ">=6.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.12-pyhd8ed1ab_0.conda
hash:
- md5: 6bd3f1069cdebb44c7ae9efb900e312d
- sha256: 86cbb9070862cf23a245451efce539ca214e610849d0950bb8ac90c545bd158d
+ md5: bf4a1d1a97ca27b0b65bacd9e238b484
+ sha256: ca757d0fc2dbd422af9d3238a8b4b630a6e11df3707a447bd89540656770d1d7
category: main
optional: false
- - name: libarrow
- version: 14.0.1
+ - name: webcolors
+ version: "1.13"
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ hash:
+ md5: 166212fe82dad8735550030488a01d03
+ sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ category: main
+ optional: false
+ - name: webcolors
+ version: "1.13"
+ manager: conda
+ platform: osx-64
+ dependencies:
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
+ hash:
+ md5: 166212fe82dad8735550030488a01d03
+ sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ category: main
+ optional: false
+ - name: webcolors
+ version: "1.13"
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- aws-crt-cpp: ">=0.24.7,<0.24.8.0a0"
- aws-sdk-cpp: ">=1.11.182,<1.11.183.0a0"
- bzip2: ">=1.0.8,<2.0a0"
- glog: ">=0.6.0,<0.7.0a0"
- libabseil: ">=20230802.1,<20230803.0a0"
- libbrotlidec: ">=1.1.0,<1.2.0a0"
- libbrotlienc: ">=1.1.0,<1.2.0a0"
- libcxx: ">=15.0.7"
- libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libutf8proc: ">=2.8.0,<3.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
- lz4-c: ">=1.9.3,<1.10.0a0"
- orc: ">=1.9.0,<1.9.1.0a0"
- re2: ""
- snappy: ">=1.1.10,<2.0a0"
- zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-14.0.1-h8dffd16_3_cpu.conda
+ python: ">=3.5"
+ url: https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda
hash:
- md5: c9e9f1a73232f3a6eae1b174f39e2d3f
- sha256: c482e8d50d2a20b4460801610da58e49fe7c9db8836ffd0653b657af55664634
+ md5: 166212fe82dad8735550030488a01d03
+ sha256: 6e097d5fe92849ad3af2c2a313771ad2fbf1cadd4dc4afd552303b2bf3f85211
+ category: main
+ optional: false
+ - name: webencodings
+ version: 0.5.1
+ manager: conda
+ platform: linux-64
+ dependencies:
+ python: ">=2.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda
+ hash:
+ md5: daf5160ff9cde3a468556965329085b9
+ sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944
category: main
optional: false
- - name: matplotlib-base
- version: 3.8.1
+ - name: webencodings
+ version: 0.5.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- certifi: ">=2020.06.20"
- contourpy: ">=1.0.1"
- cycler: ">=0.10"
- fonttools: ">=4.22.0"
- freetype: ">=2.12.1,<3.0a0"
- kiwisolver: ">=1.3.1"
- libcxx: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
- packaging: ">=20.0"
- pillow: ">=8"
- pyparsing: ">=2.3.1"
- python: ">=3.11,<3.12.0a0"
- python-dateutil: ">=2.7"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.8.1-py311hfdba5f6_0.conda
+ python: ">=2.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda
hash:
- md5: 7b2974aa0ecc495f1cb9f269fadf9981
- sha256: 2d61f4697a9906c4f56b8ffdcdd66edf64f7db9c5084827848f43390c203ee24
+ md5: daf5160ff9cde3a468556965329085b9
+ sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944
category: main
optional: false
- - name: nbformat
- version: 5.9.2
+ - name: webencodings
+ version: 0.5.1
manager: conda
platform: osx-arm64
dependencies:
- jupyter_core: ""
- python-fastjsonschema: ""
- python: ">=3.8"
- traitlets: ">=5.1"
- jsonschema: ">=2.6"
- url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.9.2-pyhd8ed1ab_0.conda
+ python: ">=2.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda
hash:
- md5: 61ba076de6530d9301a0053b02f093d2
- sha256: fc82c5a9116820757b03ffb836b36f0f50e4cd390018024dbadb0ee0217f6992
+ md5: daf5160ff9cde3a468556965329085b9
+ sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944
category: main
optional: false
- - name: pandera-core
- version: 0.17.2
+ - name: websocket-client
+ version: 1.6.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- numpy: ""
- pandas: ""
- typing_extensions: ""
- packaging: ""
- pydantic: ""
- wrapt: ""
- multimethod: ""
- python: ">=3.7"
- typing_inspect: ">=0.6.0"
- typeguard: ">=3.0.2"
- url: https://conda.anaconda.org/conda-forge/noarch/pandera-core-0.17.2-pyhd8ed1ab_1.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda
hash:
- md5: 5a1b3de3f435bc9d3c0ab52d45651a28
- sha256: 298bc0b877a366af0bbae2512ec1da47e215fc6333b8b0da7571a09084307331
+ md5: bdb77b28cf16deac0eef431a068320e8
+ sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6
category: main
optional: false
- - name: pre-commit
- version: 3.5.0
+ - name: websocket-client
+ version: 1.6.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
python: ">=3.8"
- pyyaml: ">=5.1"
- identify: ">=1.0.0"
- nodeenv: ">=0.11.1"
- cfgv: ">=2.0.0"
- virtualenv: ">=20.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda
hash:
- md5: 964e3d762e427661c59263435a14c492
- sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
+ md5: bdb77b28cf16deac0eef431a068320e8
+ sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6
category: main
optional: false
- - name: prompt_toolkit
- version: 3.0.41
+ - name: websocket-client
+ version: 1.6.4
manager: conda
platform: osx-arm64
dependencies:
- prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda
hash:
- md5: b1387bd091fa0420557f801a78587678
- sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
+ md5: bdb77b28cf16deac0eef431a068320e8
+ sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6
category: main
optional: false
- - name: requests-oauthlib
- version: 1.3.1
+ - name: websockets
+ version: "10.4"
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.4"
- requests: ">=2.0.0"
- oauthlib: ">=3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.3.1-pyhd8ed1ab_0.tar.bz2
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/websockets-10.4-py311hd4cff14_1.tar.bz2
hash:
- md5: 61b279f051eef9c89d58f4d813e75e04
- sha256: 889e3c1b84467b64046776db95dc4c5ea4dad5afaa5ec18ad811bd95c63286b0
- category: main
- optional: false
- - name: scikit-learn
- version: 1.3.2
+ md5: ff58b7e4d10dd88e679cf86988d3fbfb
+ sha256: 00eb760d18e1c60b0bdc5e6c36af03050820c870057423681bd44b75c3577458
+ category: dev
+ optional: true
+ - name: websockets
+ version: "10.4"
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- joblib: ">=1.1.1"
- libcxx: ">=16.0.6"
- llvm-openmp: ">=16.0.6"
- numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- scipy: ""
- threadpoolctl: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.3.2-py311ha25ca4d_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/websockets-10.4-py311h5547dcb_1.tar.bz2
hash:
- md5: dea73952c589de24ec577c41fac181c5
- sha256: 589bca23648b8969b16a36f87d7114a12fbe88d665cde32427c7126e5b34e63c
- category: main
- optional: false
- - name: timezonefinder
- version: 6.2.0
+ md5: aa4ddc6620538e684142d9c1d932fe28
+ sha256: e5c79a611d725a5ec0623f02220ca8581451de32a2c92f5b62660ec2dacb3c8c
+ category: dev
+ optional: true
+ - name: websockets
+ version: "10.4"
manager: conda
platform: osx-arm64
dependencies:
- cffi: ">=1.15.1,<2"
- h3-py: ">=3.7.6,<4"
- numpy: ">=1.18,<2"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- setuptools: ">=65.5"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/timezonefinder-6.2.0-py311h05b510d_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-10.4-py311he2be06e_1.tar.bz2
hash:
- md5: e780e1885d409abccd8503f8f96c2bee
- sha256: c855dc357c20d53cad167f395d3dd8face48b5cb6e3cb9f7a64b702ce14c7a12
- category: main
- optional: false
- - name: catalystcoop.ferc_xbrl_extractor
- version: 1.2.1
+ md5: de89829ec8be2723375bfd581237dbef
+ sha256: 4700b95332fd99cfbad77d74c25572bff28be0df631e995ddbe4a413f6cf2c80
+ category: dev
+ optional: true
+ - name: wheel
+ version: 0.42.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- sqlalchemy: ">=1.4,<3"
- lxml: ">=4.9.1,<5"
- python: ">=3.10,<3.13"
- coloredlogs: ">=14.0,<15.1"
- frictionless: ">=4.4,<5"
- numpy: ">=1.16,<2"
- arelle-release: ">=2.3,<3"
- pandas: ">=1.5,<2.2"
- pydantic: ">=1.9,<3"
- stringcase: ">=1.2,<2"
- url: https://conda.anaconda.org/conda-forge/noarch/catalystcoop.ferc_xbrl_extractor-1.2.1-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda
hash:
- md5: 901c0be7848920eeaeb14bce747c589c
- sha256: f70614208da7b61b41ead6d2260ca3b0d6c0785388b09f7aa4615b56fbf3ce37
+ md5: 1cdea58981c5cbc17b51973bcaddcea7
+ sha256: 80be0ccc815ce22f80c141013302839b0ed938a2edb50b846cf48d8a8c1cfa01
category: main
optional: false
- - name: conda-lock
- version: 2.4.2
+ - name: wheel
+ version: 0.42.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- typing_extensions: ""
- jinja2: ""
- ruamel.yaml: ""
- tomli: ""
- click-default-group: ""
- python: ">=3.8"
- pyyaml: ">=5.1"
- click: ">=8.0"
- packaging: ">=20.4"
- requests: ">=2.18"
- ensureconda: ">=1.3"
- gitpython: ">=3.1.30"
- keyring: ">=21.2.0"
- html5lib: ">=1.0"
- pydantic: ">=1.10"
- cachy: ">=0.3.0"
- clikit: ">=0.6.2"
- crashtest: ">=0.3.0"
- pkginfo: ">=1.4"
- tomlkit: ">=0.7.0"
- virtualenv: ">=20.0.26"
- toolz: ">=0.12.0,<1.0.0"
- cachecontrol-with-filecache: ">=0.12.9"
- urllib3: ">=1.26.5,<2.0"
- url: https://conda.anaconda.org/conda-forge/noarch/conda-lock-2.4.2-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda
hash:
- md5: 068b8ae6928d477a0d216254f6eacd34
- sha256: c3a684affc774d45e6bef61306d1005a3fab75862bbe4f2adceb995e14a07193
+ md5: 1cdea58981c5cbc17b51973bcaddcea7
+ sha256: 80be0ccc815ce22f80c141013302839b0ed938a2edb50b846cf48d8a8c1cfa01
category: main
optional: false
- - name: dagster-graphql
- version: 1.5.9
+ - name: wheel
+ version: 0.42.0
manager: conda
platform: osx-arm64
dependencies:
- requests: ""
- starlette: ""
- python: ">=3.8"
- graphene: ">=3"
- gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda
hash:
- md5: 7dcd105a5451f9800aa6de278d86db72
- sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
- category: dev
- optional: true
- - name: dagster-postgres
- version: 0.21.9
+ md5: 1cdea58981c5cbc17b51973bcaddcea7
+ sha256: 80be0ccc815ce22f80c141013302839b0ed938a2edb50b846cf48d8a8c1cfa01
+ category: main
+ optional: false
+ - name: widgetsnbextension
+ version: 4.0.9
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- psycopg2-binary: ""
- python: ">=3.8"
- dagster: 1.5.9.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_0.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda
hash:
- md5: 18c5dd009bd4d99ec38003583134c9fc
- sha256: 83ad5a4eca4698b1258398bcd405665bbd8e41464124221cf477bb78bdc22100
+ md5: 82617d07b2f5f5a96296d3c19684b37a
+ sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b
category: main
optional: false
- - name: fiona
- version: 1.9.5
+ - name: widgetsnbextension
+ version: 4.0.9
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- attrs: ">=17"
- click: ">=4.0"
- click-plugins: ">=1.0"
- cligj: ">=0.5"
- gdal: ""
- importlib-metadata: ""
- libcxx: ">=16.0.6"
- libgdal: ">=3.8.0,<3.9.0a0"
- munch: ""
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- setuptools: ""
- shapely: ""
- six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py311h4760b73_1.conda
+ python: ">=3.7"
+ url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda
hash:
- md5: 0232bf494596b3d10e1cf21fbcbc8615
- sha256: 9d0ad417f817677f113608aacdbac93fad06bf2a149233d299a6ada5c56c6600
+ md5: 82617d07b2f5f5a96296d3c19684b37a
+ sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b
category: main
optional: false
- - name: google-api-core
- version: 2.14.0
+ - name: widgetsnbextension
+ version: 4.0.9
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
- google-auth: ">=2.14.1,<3.0.dev0"
- googleapis-common-protos: ">=1.56.2,<2.0.dev0"
- protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- requests: ">=2.18.0,<3.0.0.dev0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.9-pyhd8ed1ab_0.conda
hash:
- md5: cebe18c719a6818849b921748aa91750
- sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
+ md5: 82617d07b2f5f5a96296d3c19684b37a
+ sha256: 35dd47b3c117cd759ac46da0b69064bebccd94862e795615ee65dbbe3e6cd86b
category: main
optional: false
- - name: google-auth-oauthlib
- version: 1.1.0
+ - name: wrapt
+ version: 1.16.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- requests-oauthlib: ">=0.7.0"
- click: ">=6.0.0"
- google-auth: ">=2.15.0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h459d7ec_0.conda
hash:
- md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
- sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
+ md5: 6669b5529d206c1f880b642cdd17ae05
+ sha256: 6587e0b7d42368f767172b239a755fcf6363d91348faf9b7ab5743585369fc58
category: main
optional: false
- - name: ipython
- version: 8.17.2
+ - name: wrapt
+ version: 1.16.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- typing_extensions: ""
- decorator: ""
- __osx: ""
- exceptiongroup: ""
- stack_data: ""
- matplotlib-inline: ""
- appnope: ""
- pickleshare: ""
- python: ">=3.9"
- pygments: ">=2.4.0"
- traitlets: ">=5"
- jedi: ">=0.16"
- pexpect: ">4.3"
- prompt_toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.17.2-pyh31c8845_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.16.0-py311he705e18_0.conda
hash:
- md5: 28e743c2963d1cecaa75f7612ade74c4
- sha256: b28ec68a49d8ddc41b92f3161f536d63e62eb5493021e41bb172b5f0af54ca2d
+ md5: 5ef2eefe4fca7c786bbbdd4f1de464ed
+ sha256: e5546a52c0c0ed8a78dbac1cfec9a639f37fb3a86ea8ade8ff44aa7459dc6796
category: main
optional: false
- - name: jupyter_events
- version: 0.9.0
+ - name: wrapt
+ version: 1.16.0
manager: conda
platform: osx-arm64
dependencies:
- rfc3339-validator: ""
- referencing: ""
- python: ">=3.8"
- pyyaml: ">=5.3"
- rfc3986-validator: ">=0.1.1"
- traitlets: ">=5.3"
- python-json-logger: ">=2.0.4"
- jsonschema-with-format-nongpl: ">=4.18.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.9.0-pyhd8ed1ab_0.conda
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h05b510d_0.conda
hash:
- md5: 00ba25993f0dba38cf72a7224e33289f
- sha256: 713f0cc927a862862a6d35bfb29c4114f987e4f59e2a8a14f71f23fcd7edfec3
+ md5: 35f87feb986222d2ada633b45df0bbc9
+ sha256: c071b132b8415ccd1452e0b8002aa79ea59a4fd0b0ac0d3b2fd0ab6b19b3390c
category: main
optional: false
- - name: libarrow-acero
- version: 14.0.1
+ - name: xerces-c
+ version: 3.2.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libcxx: ">=15.0.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-14.0.1-had9dd58_3_cpu.conda
+ icu: ">=73.2,<74.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
+ libgcc-ng: ">=12"
+ libnsl: ">=2.0.0,<2.1.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.4-hac6953d_3.conda
hash:
- md5: 45385a4bd04cae4e3df499e585b14a0b
- sha256: f82e7f13d0b6159bfd6fefc136a85bc41e0a612a9e73f097bd70fc5b9e5e0dce
+ md5: 297e6a75dc1b6a440cd341a85eab8a00
+ sha256: faf1c8f0e625466efec442e987737057ca304f1fcf79055da4d9e93e49f14ffa
category: main
optional: false
- - name: libarrow-flight
- version: 14.0.1
+ - name: xerces-c
+ version: 3.2.4
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- __osx: ">=10.9"
- libabseil: ">=20230802.1,<20230803.0a0"
- libarrow: 14.0.1
+ icu: ">=73.2,<74.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
libcxx: ">=15.0.7"
- libgrpc: ">=1.59.2,<1.60.0a0"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-14.0.1-h1011bfc_3_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.2.4-h6314983_3.conda
hash:
- md5: 58b858ca5385418e166c7cc30654d3f2
- sha256: b895ea4bfed516ac8b974fca7c437b70ec0b753abd7546f85353e85b536c7551
+ md5: 9623310baca5b47637cf46889bd77178
+ sha256: 19f501a66a1ffdda31e0af7fe088a1de4405c6ce72f9a07ba0813ab8c2f0ada7
category: main
optional: false
- - name: libarrow-gandiva
- version: 14.0.1
+ - name: xerces-c
+ version: 3.2.4
manager: conda
platform: osx-arm64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
+ icu: ">=73.2,<74.0a0"
+ libcurl: ">=8.2.1,<9.0a0"
libcxx: ">=15.0.7"
- libllvm15: ">=15.0.7,<15.1.0a0"
- libre2-11: ">=2023.6.2,<2024.0a0"
- libutf8proc: ">=2.8.0,<3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- re2: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-gandiva-14.0.1-h2b96968_3_cpu.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.2.4-hd886eac_3.conda
hash:
- md5: 2356cd3eaa70c7ec2f73b8e061bb4c5f
- sha256: 031f324a5845fb7db4b15df6e70b3fa8ab7d83508072838c2801ffea81692d67
+ md5: 916e77cb0be0040410881fba8e28b5bb
+ sha256: 5ecc3322ddcad0a002a44bd4dddfe898b9e02951c629f6962c23b3bcf6014c9f
category: main
optional: false
- - name: libparquet
- version: 14.0.1
+ - name: xlrd
+ version: 2.0.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libcxx: ">=15.0.7"
- libthrift: ">=0.19.0,<0.19.1.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-14.0.1-heaab74a_3_cpu.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.1-pyhd8ed1ab_3.tar.bz2
hash:
- md5: 84a11f6c99bbd2fce61890751fc94777
- sha256: 0514387e5082b50d716bb3e91de9898e928616843105c413d1ddf5f78a80210a
+ md5: 97dfcd5ff030d829b55f67e82f928093
+ sha256: a97030fc6cde1a335c035392db47efdb4add7d1db76a11b4bfac6ec7fc42bfe5
category: main
optional: false
- - name: mapclassify
- version: 2.6.1
+ - name: xlrd
+ version: 2.0.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.9"
- scikit-learn: ">=1.0"
- scipy: ">=1.8"
- numpy: ">=1.23"
- networkx: ">=2.7"
- pandas: ">=1.4,!=1.5.0"
- url: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.6.1-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.1-pyhd8ed1ab_3.tar.bz2
hash:
- md5: 6aceae1ad4f16cf7b73ee04189947f98
- sha256: 204ab8b242229d422b33cfec07ea61cefa8bd22375a16658afbabaafce031d64
+ md5: 97dfcd5ff030d829b55f67e82f928093
+ sha256: a97030fc6cde1a335c035392db47efdb4add7d1db76a11b4bfac6ec7fc42bfe5
category: main
optional: false
- - name: nbclient
- version: 0.8.0
+ - name: xlrd
+ version: 2.0.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
- jupyter_client: ">=6.1.12"
- jupyter_core: ">=4.12,!=5.0.*"
- nbformat: ">=5.1"
- traitlets: ">=5.4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.8.0-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.1-pyhd8ed1ab_3.tar.bz2
hash:
- md5: e78da91cf428faaf05701ce8cc8f2f9b
- sha256: 4ebd237cdf4bfa5226f92d2ae78fab8dba27696909391884dc6594ca6f9df5ff
+ md5: 97dfcd5ff030d829b55f67e82f928093
+ sha256: a97030fc6cde1a335c035392db47efdb4add7d1db76a11b4bfac6ec7fc42bfe5
category: main
optional: false
- - name: pygraphviz
- version: "1.11"
+ - name: xlsxwriter
+ version: 3.1.9
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- graphviz: ">=8.1.0,<9.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pygraphviz-1.11-py311h5178850_1.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.9-pyhd8ed1ab_0.conda
hash:
- md5: 92c2df5863e0adfa5465e24427ca327f
- sha256: bb7fa662255f2d52d593da156d4f57c13fbe9658d057d6450bfa378655796970
- category: dev
- optional: true
- - name: recordlinkage
- version: "0.16"
+ md5: 70e533db62a710ae216fdaccc4a983c8
+ sha256: 96f04c1aa99d3a90319979079cfe0f17ecea2bf0d67ca07c12d210af355a5d1d
+ category: main
+ optional: false
+ - name: xlsxwriter
+ version: 3.1.9
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- joblib: ""
- numexpr: ""
- python: ">=3.8"
- numpy: ">=1.13"
- scikit-learn: ">=1"
- pandas: ">=1,<3"
- scipy: ">=1"
- jellyfish: ">=1"
- url: https://conda.anaconda.org/conda-forge/noarch/recordlinkage-0.16-pyhd8ed1ab_0.conda
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.9-pyhd8ed1ab_0.conda
hash:
- md5: 948205d11a8b036e065c46462db0632a
- sha256: 3f3c03719d6bdef41f8a08f51fb3e58a80223a321ffca413eda0c332bfa75bf0
+ md5: 70e533db62a710ae216fdaccc4a983c8
+ sha256: 96f04c1aa99d3a90319979079cfe0f17ecea2bf0d67ca07c12d210af355a5d1d
category: main
optional: false
- - name: tabulator
- version: 1.53.5
+ - name: xlsxwriter
+ version: 3.1.9
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3"
- click: ">=6.0"
- six: ">=1.9"
- chardet: ">=3.0"
- unicodecsv: ">=0.14"
- requests: ">=2.8"
- boto3: ">=1.9"
- xlrd: ">=1.0"
- jsonlines: ">=1.1"
- linear-tsv: ">=1.0"
- sqlalchemy: ">=0.9.6"
- openpyxl: ">=2.6"
- ijson: ">=3.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/tabulator-1.53.5-pyhd8ed1ab_0.tar.bz2
+ python: ">=3.6"
+ url: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.1.9-pyhd8ed1ab_0.conda
+ hash:
+ md5: 70e533db62a710ae216fdaccc4a983c8
+ sha256: 96f04c1aa99d3a90319979079cfe0f17ecea2bf0d67ca07c12d210af355a5d1d
+ category: main
+ optional: false
+ - name: xorg-kbproto
+ version: 1.0.7
+ manager: conda
+ platform: linux-64
+ dependencies:
+ libgcc-ng: ">=9.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2
hash:
- md5: c967687222ad29a74f68e99698d08d30
- sha256: b5fb89f1154cf6b5e620c18a9c4f73c7b79afa72a7e3e840a82e225a90955335
+ md5: 4b230e8381279d76131116660f5a241a
+ sha256: e90b0a6a5d41776f11add74aa030f789faf4efd3875c31964d6f9cfa63a10dd1
category: main
optional: false
- - name: dagster-webserver
- version: 1.5.9
+ - name: xorg-libice
+ version: 1.1.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- starlette: ""
- uvicorn-standard: ""
- python: ">=3.8"
- click: ">=7.0,<9.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- dagster-graphql: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda
hash:
- md5: 880fa7acdbf3494cef45759bb866bb63
- sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
- category: dev
- optional: true
- - name: geopandas
- version: 0.14.1
+ md5: b462a33c0be1421532f28bfe8f4a7514
+ sha256: 5aa9b3682285bb2bf1a8adc064cb63aff76ef9178769740d855abb42b0d24236
+ category: main
+ optional: false
+ - name: xorg-libsm
+ version: 1.2.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- matplotlib-base: ""
- rtree: ""
- folium: ""
- xyzservices: ""
- python: ">=3.9"
- mapclassify: ">=2.4.0"
- fiona: ">=1.8.21"
- geopandas-base: 0.14.1
- url: https://conda.anaconda.org/conda-forge/noarch/geopandas-0.14.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libuuid: ">=2.38.1,<3.0a0"
+ xorg-libice: ">=1.1.1,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda
hash:
- md5: 6ce5f89fb1e2aa7e04d12c0008b3a745
- sha256: f3563ad6f1a55587c097337ece863e583c796c9a9df3ecb396bbfeec4ec309fb
+ md5: 93ee23f12bc2e684548181256edd2cf6
+ sha256: 089ad5f0453c604e18985480218a84b27009e9e6de9a0fa5f4a20b8778ede1f1
category: main
optional: false
- - name: google-cloud-core
- version: 2.3.3
+ - name: xorg-libx11
+ version: 1.8.7
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.7"
- google-auth: ">=1.25.0,<3.0dev"
- google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
- grpcio: ">=1.38.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libxcb: ">=1.15,<1.16.0a0"
+ xorg-kbproto: ""
+ xorg-xextproto: ">=7.3.0,<8.0a0"
+ xorg-xproto: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda
hash:
- md5: a26b1fa8555cc1d2f0f7ff9985303e66
- sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
+ md5: 49e482d882669206653b095f5206c05b
+ sha256: 7a02a7beac472ae2759498550b5fc5261bf5be7a9a2b4648a3f67818a7bfefcf
category: main
optional: false
- - name: ipykernel
- version: 6.26.0
+ - name: xorg-libxau
+ version: 1.0.11
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- packaging: ""
- psutil: ""
- nest-asyncio: ""
- __osx: ""
- appnope: ""
- python: ">=3.8"
- tornado: ">=6.1"
- jupyter_client: ">=6.1.12"
- ipython: ">=7.23.1"
- matplotlib-inline: ">=0.1"
- jupyter_core: ">=4.12,!=5.0.*"
- debugpy: ">=1.6.5"
- comm: ">=0.1.1"
- pyzmq: ">=20"
- traitlets: ">=5.4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.26.0-pyh3cd1d5f_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda
hash:
- md5: 3c6e2148d30e6a762d8327a433ebfb5a
- sha256: be9927d47fe23cc4d2a09d252e37e1e56ffb137767d2c0577ed882ead16f75fa
+ md5: 2c80dc38fface310c9bd81b17037fee5
+ sha256: 309751371d525ce50af7c87811b435c176915239fc9e132b99a25d5e1703f2d4
category: main
optional: false
- - name: ipywidgets
- version: 8.1.1
+ - name: xorg-libxau
+ version: 1.0.11
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.7"
- traitlets: ">=4.3.1"
- ipython: ">=6.1.0"
- comm: ">=0.1.3"
- jupyterlab_widgets: ">=3.0.9,<3.1.0"
- widgetsnbextension: ">=4.0.9,<4.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.1-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h0dc2134_0.conda
hash:
- md5: 2605fae5ee27100e5f10037baebf4d41
- sha256: 8136defec115396ba992273a77f814d74eeafd9cc099f5430d109c60785a7f02
+ md5: 9566b4c29274125b0266d0177b5eb97b
+ sha256: 8a2e398c4f06f10c64e69f56bcf3ddfa30b432201446a0893505e735b346619a
category: main
optional: false
- - name: libarrow-dataset
- version: 14.0.1
+ - name: xorg-libxau
+ version: 1.0.11
manager: conda
platform: osx-arm64
- dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libcxx: ">=15.0.7"
- libparquet: 14.0.1
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-14.0.1-had9dd58_3_cpu.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hb547adb_0.conda
hash:
- md5: 01f2b9ff760ec946a47736a95bf070ce
- sha256: bf47c92c431e3eb1b79498a7826beee404b7186c160e5646d06fe8bd3c52fb42
+ md5: ca73dc4f01ea91e44e3ed76602c5ea61
+ sha256: 02c313a1cada46912e5b9bdb355cfb4534bfe22143b4ea4ecc419690e793023b
category: main
optional: false
- - name: libarrow-flight-sql
- version: 14.0.1
+ - name: xorg-libxdmcp
+ version: 1.1.3
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-flight: 14.0.1
- libcxx: ">=15.0.7"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-flight-sql-14.0.1-h660fe36_3_cpu.conda
+ libgcc-ng: ">=9.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2
hash:
- md5: e68ba1cba4bc839af1fb2240e2f7a93a
- sha256: 831e8f230d0b489ee2c541a091351857ac369813f555ae3789980132a2a3a365
+ md5: be93aabceefa2fac576e971aef407908
+ sha256: 4df7c5ee11b8686d3453e7f3f4aa20ceef441262b49860733066c52cfd0e4a77
category: main
optional: false
- - name: nbconvert-core
- version: 7.11.0
+ - name: xorg-libxdmcp
+ version: 1.1.3
manager: conda
- platform: osx-arm64
- dependencies:
- packaging: ""
- beautifulsoup4: ""
- defusedxml: ""
- bleach: ""
- tinycss2: ""
- jupyterlab_pygments: ""
- python: ">=3.8"
- jinja2: ">=3.0"
- entrypoints: ">=0.2.2"
- traitlets: ">=5.0"
- markupsafe: ">=2.0"
- pandocfilters: ">=1.4.1"
- jupyter_core: ">=4.7"
- nbformat: ">=5.1"
- pygments: ">=2.4.1"
- nbclient: ">=0.5.0"
- mistune: ">=2.0.3,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2
hash:
- md5: d59e0cb1ca993f8f910cfdf393232acf
- sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
+ md5: 86ac76d6bf1cbb9621943eb3bd9ae36e
+ sha256: 485421c16f03a01b8ed09984e0b2ababdbb3527e1abf354ff7646f8329be905f
category: main
optional: false
- - name: tableschema
- version: 1.19.3
+ - name: xorg-libxdmcp
+ version: 1.1.3
manager: conda
platform: osx-arm64
- dependencies:
- python: ""
- python-dateutil: ">=2.4"
- six: ">=1.9"
- jsonschema: ">=2.5"
- requests: ">=2.5"
- unicodecsv: ">=0.14"
- isodate: ">=0.5.4"
- click: ">=3.3"
- rfc3986: ">=1.1.0"
- cached-property: ">=1.5"
- tabulator: ">=1.29"
- url: https://conda.anaconda.org/conda-forge/noarch/tableschema-1.19.3-pyh9f0ad1d_0.tar.bz2
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.3-h27ca646_0.tar.bz2
hash:
- md5: 57f70b39e74b4af667775c0a07f35cc3
- sha256: bc96dd4ee4d7ee5d6753158ba50aacd08c80a657847d6771cc4c56da538437e7
+ md5: 6738b13f7fadc18725965abdd4129c36
+ sha256: d9a2fb4762779994718832f05a7d62ab2dcf6103a312235267628b5187ce88f7
category: main
optional: false
- - name: datapackage
- version: 1.15.2
+ - name: xorg-libxext
+ version: 1.3.4
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- six: ">=1.10"
- jsonschema: ">=2.5"
- unicodecsv: ">=0.14"
- requests: ">=2.8"
- click: ">=6.7"
- cchardet: ">=1.0"
- jsonpointer: ">=1.10"
- tableschema: ">=1.1.0"
- tabulator: ">=1.24.2"
- url: https://conda.anaconda.org/conda-forge/noarch/datapackage-1.15.2-pyh44b312d_0.tar.bz2
+ libgcc-ng: ">=12"
+ xorg-libx11: ">=1.7.2,<2.0a0"
+ xorg-xextproto: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda
hash:
- md5: 3f1a6895ab9c423cf59de7c46e56a824
- sha256: 3344e3c1ea6a1925504f7cbfba6f4be6521465baa2de6bac86769528ea1c3d0d
+ md5: 82b6df12252e6f32402b96dacc656fec
+ sha256: 73e5cfbdff41ef8a844441f884412aa5a585a0f0632ec901da035a03e1fe1249
category: main
optional: false
- - name: google-cloud-storage
- version: 2.13.0
+ - name: xorg-libxrender
+ version: 0.9.11
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.6"
- requests: ">=2.18.0,<3.0.0dev"
- google-api-core: ">=1.31.5,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
- google-cloud-core: ">=2.3.0,<3.0dev"
- google-crc32c: ">=1.0,<2.0dev"
- protobuf: <5.0.0dev
- google-resumable-media: ">=2.6.0"
- google-auth: ">=2.23.3,<3.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
+ libgcc-ng: ">=12"
+ xorg-libx11: ">=1.8.6,<2.0a0"
+ xorg-renderproto: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda
hash:
- md5: fa7d4b2576d98b63d8ca84c76052eb95
- sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
+ md5: ed67c36f215b310412b2af935bf3e530
+ sha256: 26da4d1911473c965c32ce2b4ff7572349719eaacb88a066db8d968a4132c3f7
category: main
optional: false
- - name: jupyter_console
- version: 6.6.3
+ - name: xorg-renderproto
+ version: 0.11.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- ipython: ""
- pygments: ""
- python: ">=3.7"
- pyzmq: ">=17"
- jupyter_core: ">=4.12,!=5.0.*"
- jupyter_client: ">=7.0.0"
- ipykernel: ">=6.14"
- traitlets: ">=5.4"
- prompt_toolkit: ">=3.0.30"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=9.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2
hash:
- md5: 7cf6f52a66f8e3cd9d8b6c231262dcab
- sha256: 4e51764d5fe2f6e43d83bcfbcf8b4da6569721bf82eaf4d647be8717cd6be75a
+ md5: 06feff3d2634e3097ce2fe681474b534
+ sha256: 38942930f233d1898594dd9edf4b0c0786f3dbc12065a0c308634c37fd936034
category: main
optional: false
- - name: jupyter_server
- version: 2.10.1
+ - name: xorg-xextproto
+ version: 7.3.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- packaging: ""
- jinja2: ""
- prometheus_client: ""
- websocket-client: ""
- argon2-cffi: ""
- overrides: ""
- jupyter_server_terminals: ""
- python: ">=3.8"
- terminado: ">=0.8.3"
- jupyter_core: ">=4.12,!=5.0.*"
- nbconvert-core: ">=6.4.4"
- tornado: ">=6.2.0"
- jupyter_client: ">=7.4.4"
- nbformat: ">=5.3.0"
- pyzmq: ">=24"
- traitlets: ">=5.6.0"
- anyio: ">=3.1.0"
- send2trash: ">=1.8.2"
- jupyter_events: ">=0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.1-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda
hash:
- md5: 7d15498584d83de3b357425e37086397
- sha256: b8b55ee57785b39a9096884bfd1da3858da8f27764572321d51a3dd0a990de86
+ md5: bce9f945da8ad2ae9b1d7165a64d0f87
+ sha256: b8dda3b560e8a7830fe23be1c58cc41f407b2e20ae2f3b6901eb5842ba62b743
category: main
optional: false
- - name: libarrow-substrait
- version: 14.0.1
+ - name: xorg-xproto
+ version: 7.0.31
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libarrow-dataset: 14.0.1
- libcxx: ">=15.0.7"
- libprotobuf: ">=4.24.4,<4.24.5.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-14.0.1-h594d712_3_cpu.conda
+ libgcc-ng: ">=9.3.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2
hash:
- md5: 59202c5ba6c585009550a0c84d0aa7c7
- sha256: b080df09fd9444534d10baf9fdafeb1602e230fcd8edb2fc030be2a0e04e0cc9
+ md5: b4a4381d54784606820704f7b5f05a15
+ sha256: f197bb742a17c78234c24605ad1fe2d88b1d25f332b75d73e5ba8cf8fbc2a10d
category: main
optional: false
- - name: nbconvert-pandoc
- version: 7.11.0
+ - name: xyzservices
+ version: 2023.10.1
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- pandoc: ""
python: ">=3.8"
- nbconvert-core: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda
hash:
- md5: 51bd005efab7e5c5c2af2570327bd213
- sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ md5: 1e0d85c0e2fef9539218da185b285f54
+ sha256: da655e2e0a742fddefeeaf2dd828b62a1820a3755d13341e1a555a10fcb9cf81
category: main
optional: false
- - name: qtconsole-base
- version: 5.5.1
+ - name: xyzservices
+ version: 2023.10.1
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- packaging: ""
- pygments: ""
- traitlets: ""
- jupyter_core: ""
python: ">=3.8"
- ipykernel: ">=4.1"
- jupyter_client: ">=4.1"
- qtpy: ">=2.4.0"
- url: https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda
hash:
- md5: 5528a3eda283b421055c89bface19a1c
- sha256: e81a294941a598aabfd9462cf9aaa3b3e2c04996420f82494bdc13233de8ca70
+ md5: 1e0d85c0e2fef9539218da185b285f54
+ sha256: da655e2e0a742fddefeeaf2dd828b62a1820a3755d13341e1a555a10fcb9cf81
category: main
optional: false
- - name: gcsfs
- version: 2023.10.0
+ - name: xyzservices
+ version: 2023.10.1
manager: conda
platform: osx-arm64
dependencies:
- requests: ""
- aiohttp: ""
- google-auth-oauthlib: ""
- python: ">=3.7"
- google-auth: ">=1.2"
- decorator: ">4.1.2"
- google-cloud-storage: ">1.40"
- fsspec: 2023.10.0
- url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.10.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2023.10.1-pyhd8ed1ab_0.conda
hash:
- md5: 500521931bdcc0f6d19c1c2e2ab4a5d9
- sha256: dd7559c5297359e475a125742e9cb30938579e93a17ce7537af64a04c98407a5
+ md5: 1e0d85c0e2fef9539218da185b285f54
+ sha256: da655e2e0a742fddefeeaf2dd828b62a1820a3755d13341e1a555a10fcb9cf81
category: main
optional: false
- - name: jupyter-lsp
- version: 2.2.0
+ - name: xz
+ version: 5.2.6
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- importlib-metadata: ">=4.8.3"
- jupyter_server: ">=1.1.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2
hash:
- md5: 38589f4104d11f2a59ff01a9f4e3bfb3
- sha256: 16fc7b40024adece716ba7227e5c123a2deccc13f946a10d9a3270493908d11c
+ md5: 2161070d867d1b1204ea749c8eec4ef0
+ sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162
category: main
optional: false
- - name: jupyter-resource-usage
- version: 1.0.1
+ - name: xz
+ version: 5.2.6
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.8"
- jupyter_server: ">=2.0.0,<3"
- psutil: ">=5.6.0,<6"
- pyzmq: ">=19"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-resource-usage-1.0.1-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2
hash:
- md5: b079fd1b0ee75199a042537d036b496f
- sha256: 076d6cc25e0338e725a653eb0bb468ba920e49449143335696581fe98f86853b
- category: dev
- optional: true
- - name: jupyterlab_server
- version: 2.25.1
+ md5: a72f9d4ea13d55d745ff1ed594747f10
+ sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8
+ category: main
+ optional: false
+ - name: xz
+ version: 5.2.6
manager: conda
platform: osx-arm64
- dependencies:
- python: ">=3.8"
- packaging: ">=21.3"
- jinja2: ">=3.0.3"
- importlib-metadata: ">=4.8.3"
- jupyter_server: ">=1.21,<3"
- babel: ">=2.10"
- json5: ">=0.9.0"
- requests: ">=2.31"
- jsonschema: ">=4.18"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.1-pyhd8ed1ab_0.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2
hash:
- md5: 5cf15f8fd42c77af4eb1611fe614df2f
- sha256: 5f373d9adc11b6d49bee06a4c6bea9623fff1d2a0b798edc2e3f594680aa18f3
+ md5: 39c6b54e94014701dd157f4f576ed211
+ sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec
category: main
optional: false
- - name: nbconvert
- version: 7.11.0
+ - name: yaml
+ version: 0.2.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.8"
- nbconvert-core: 7.11.0
- nbconvert-pandoc: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=9.4.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2
hash:
- md5: e492b36cbea1c83d1663fa73a8abff9b
- sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
+ md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae
+ sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535
category: main
optional: false
- - name: notebook-shim
- version: 0.2.3
+ - name: yaml
+ version: 0.2.5
manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.7"
- jupyter_server: ">=1.8,<3"
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda
+ platform: osx-64
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2
hash:
- md5: 67e0fe74c156267d9159e9133df7fd37
- sha256: f028d7ad1f2175cde307db08b60d07e371b9d6f035cfae6c81ea94b4c408c538
+ md5: d7e08fcf8259d742156188e8762b4d20
+ sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148
category: main
optional: false
- - name: pyarrow
- version: 14.0.1
+ - name: yaml
+ version: 0.2.5
manager: conda
platform: osx-arm64
- dependencies:
- __osx: ">=10.9"
- libarrow: 14.0.1
- libarrow-acero: 14.0.1
- libarrow-dataset: 14.0.1
- libarrow-flight: 14.0.1
- libarrow-flight-sql: 14.0.1
- libarrow-gandiva: 14.0.1
- libarrow-substrait: 14.0.1
- libcxx: ">=15.0.7"
- libparquet: 14.0.1
- numpy: ">=1.23.5,<2.0a0"
- python: ">=3.11,<3.12.0a0"
- python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-14.0.1-py311h637fcfe_3_cpu.conda
+ dependencies: {}
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2
hash:
- md5: 77ebcf968cbdac3f5a676239faf6103b
- sha256: 9ec472ee46cf2944ff328eb8d027fac5bb0d56c14653723cd63b46fc9c786042
+ md5: 4bb3f014845110883a3c5ee811fd84b4
+ sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7
category: main
optional: false
- - name: jupyterlab
- version: 4.0.8
+ - name: yarl
+ version: 1.9.3
manager: conda
- platform: osx-arm64
- dependencies:
- packaging: ""
- traitlets: ""
- tomli: ""
- ipykernel: ""
- jupyter_core: ""
- python: ">=3.8"
- jinja2: ">=3.0.3"
- tornado: ">=6.2.0"
- importlib_metadata: ">=4.8.3"
- jupyter_server: ">=2.4.0,<3"
- importlib_resources: ">=1.4"
- jupyter-lsp: ">=2.0.0"
- async-lru: ">=1.0.0"
- jupyterlab_server: ">=2.19.0,<3"
- notebook-shim: ">=0.2"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.0.8-pyhd8ed1ab_0.conda
+ platform: linux-64
+ dependencies:
+ idna: ">=2.0"
+ libgcc-ng: ">=12"
+ multidict: ">=4.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.3-py311h459d7ec_0.conda
hash:
- md5: 299796efa08ad91c602fa4d0c5ecc86f
- sha256: fe5ca6c8bbda69af332593d7f9592aa19d9ab98d34c647ed0d8fbbae88b29a95
- category: dev
- optional: true
- - name: notebook
- version: 7.0.6
+ md5: 96f995652440b0a9266d66a691d9eff9
+ sha256: 1e35fa508899965e2ed7866b6147330dd4e51407ce5359b74f050b0e2ef8e4d0
+ category: main
+ optional: false
+ - name: yarl
+ version: 1.9.3
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.8"
- tornado: ">=6.2.0"
- jupyter_server: ">=2.4.0,<3"
- jupyterlab_server: ">=2.22.1,<3"
- notebook-shim: ">=0.2,<0.3"
- jupyterlab: ">=4.0.7,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.0.6-pyhd8ed1ab_0.conda
+ idna: ">=2.0"
+ multidict: ">=4.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.9.3-py311he705e18_0.conda
hash:
- md5: d60881c78a54cbf8042ae719f1f77a50
- sha256: 5259ad2fb47300407dafa6ea5e78085a2c8de8dcdbfbaa58592bf2677d7187a9
+ md5: 9e496c26a50c1bd31ec870ec26c17115
+ sha256: c774eecd3a122d5f4f75be527f1f6d5031e74496ec9d34c91165169f2ef892c5
category: main
optional: false
- - name: jupyter
- version: 1.0.0
+ - name: yarl
+ version: 1.9.3
manager: conda
platform: osx-arm64
dependencies:
- ipywidgets: ""
- notebook: ""
- ipykernel: ""
- nbconvert: ""
- qtconsole-base: ""
- jupyter_console: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda
+ idna: ">=2.0"
+ multidict: ">=4.0"
+ python: ">=3.11,<3.12.0a0"
+ python_abi: 3.11.*
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.9.3-py311h05b510d_0.conda
hash:
- md5: 056b8cc3d9b03f54fc49e6d70d7dc359
- sha256: 308b521b149e7a1739f717538b929bc2d87b9001b94f13ee8baa939632a86150
+ md5: 1de51d3ce020a415f34ba5c678c3abcc
+ sha256: 723e809326eccda01b2704d8c2708de901a90f720528654b8c8f298dadaad700
category: main
optional: false
- - name: sphinx-autoapi
- version: 3.0.0
+ - name: zeromq
+ version: 4.3.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- pyyaml: ""
- jinja2: ""
- anyascii: ""
- python: ">=3.8"
- astroid: ">=2.7"
- sphinx: ">=6.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autoapi-3.0.0-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libsodium: ">=1.0.18,<1.0.19.0a0"
+ libstdcxx-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda
hash:
- md5: 736b53813c2b9582b1345462d8ca66e7
- sha256: 61d127c9e32176ac75a24b85c4d1ba3e8cf7e638884331429752a2da6a3ac63a
+ md5: 8851084c192dbc56215ac4e3c9aa30fa
+ sha256: 53bf2a18224406e9806adb3b270a2c8a028aca0c89bd40114a85d6446f5c98d1
category: main
optional: false
- - name: sphinx-basic-ng
- version: 1.0.0b2
+ - name: zeromq
+ version: 4.3.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.7"
- sphinx: ">=4.0,<8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-basic-ng-1.0.0b2-pyhd8ed1ab_1.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ libsodium: ">=1.0.18,<1.0.19.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h93d8f39_0.conda
hash:
- md5: a631f5c7b7f5045448f966ad71aa2881
- sha256: 3c7a6a8bb6c9921741ef940cd61ff1694beac3c95ca7e9ad4b0ea32e2f6ac2fa
+ md5: 4c055e46b394be36681fe476c1e2ee6e
+ sha256: 19be553b3cc8352b6e842134b8de66ae39fcae80bc575c203076370faab6009c
category: main
optional: false
- - name: furo
- version: 2023.9.10
+ - name: zeromq
+ version: 4.3.5
manager: conda
platform: osx-arm64
dependencies:
- beautifulsoup4: ""
- sphinx-basic-ng: ""
- python: ">=3.7"
- pygments: ">=2.7"
- sphinx: ">=6.0,<8.0"
- url: https://conda.anaconda.org/conda-forge/noarch/furo-2023.9.10-pyhd8ed1ab_0.conda
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
+ libsodium: ">=1.0.18,<1.0.19.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h965bd2d_0.conda
hash:
- md5: 0dcfacf6d3e49f2957c69c81356cf892
- sha256: 95f69e36078dd598f5b28b2e0d7ff94946170af9f990b7474ee5501378203bc3
+ md5: f460bbcb0ec8dc77989288fe8caa0f84
+ sha256: 06abddc92d0bf83cd9faf25f26c98d7c2cc681cb50504011580b0584cf3cb1c5
category: main
optional: false
- - name: sphinx-issues
- version: 1.2.0
+ - name: zipp
+ version: 3.17.0
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ""
- sphinx: ""
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-issues-1.2.0-py_0.tar.bz2
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda
hash:
- md5: 2d5c0dddca9bb724dcf5a3fb295a2266
- sha256: 9d98392bff12194c45c6f13c6c93d0b15b2fe489de5746654e732009fce41a86
+ md5: 2e4d6bc0b14e10f895fc6791a7d9b26a
+ sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26
category: main
optional: false
- - name: sphinx-reredirects
- version: 0.1.2
+ - name: zipp
+ version: 3.17.0
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- sphinx: ""
- python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-reredirects-0.1.2-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda
hash:
- md5: 30e618adaaf11aa4a98912913c62a12b
- sha256: bcc792d6fbfc06298d23e98216d1aeca95eb69005ce8176094128990aed1f11c
+ md5: 2e4d6bc0b14e10f895fc6791a7d9b26a
+ sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26
category: main
optional: false
- - name: sphinxcontrib-applehelp
- version: 1.0.7
+ - name: zipp
+ version: 3.17.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda
hash:
- md5: aebfabcb60c33a89c1f9290cab49bc93
- sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3
+ md5: 2e4d6bc0b14e10f895fc6791a7d9b26a
+ sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26
category: main
optional: false
- - name: sphinxcontrib-bibtex
- version: 2.6.1
+ - name: zlib
+ version: 1.2.13
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- dataclasses: ""
- python: ">=3.7"
- pybtex: ">=0.24"
- importlib_metadata: ">=3.6"
- pybtex-docutils: ">=1"
- docutils: ">=0.8,!=0.18.*,!=0.19.*"
- sphinx: ">=3.5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-bibtex-2.6.1-pyhd8ed1ab_1.conda
+ libgcc-ng: ">=12"
+ libzlib: 1.2.13
+ url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda
hash:
- md5: 109cf3a7c844834267057e80b4f4eae3
- sha256: 2d04d3e165c0959d995faab5ccd5fa3581016c02fb94df4eb5d0e0a89fe9ff50
+ md5: 68c34ec6149623be41a1933ab996a209
+ sha256: 9887a04d7e7cb14bd2b52fa01858f05a6d7f002c890f618d9fcd864adbfecb1b
category: main
optional: false
- - name: sphinxcontrib-devhelp
- version: 1.0.5
+ - name: zlib
+ version: 1.2.13
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda
+ libzlib: 1.2.13
+ url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.13-h8a1eda9_5.conda
hash:
- md5: ebf08f5184d8eaa486697bc060031953
- sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672
+ md5: 75a8a98b1c4671c5d2897975731da42d
+ sha256: d1f4c82fd7bd240a78ce8905e931e68dca5f523c7da237b6b63c87d5625c5b35
category: main
optional: false
- - name: sphinxcontrib-htmlhelp
- version: 2.0.4
+ - name: zlib
+ version: 1.2.13
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda
+ libzlib: 1.2.13
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.2.13-h53f4e23_5.conda
hash:
- md5: a9a89000dfd19656ad004b937eeb6828
- sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5
+ md5: a08383f223b10b71492d27566fafbf6c
+ sha256: de0ee1e24aa6867058d3b852a15c8d7f49f262f5828772700c647186d4a96bbe
category: main
optional: false
- - name: sphinxcontrib-qthelp
- version: 1.0.6
+ - name: zstd
+ version: 1.5.5
manager: conda
- platform: osx-arm64
+ platform: linux-64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda
+ libgcc-ng: ">=12"
+ libstdcxx-ng: ">=12"
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda
hash:
- md5: cf5c9649272c677a964a7313279e3a9b
- sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471
+ md5: 04b88013080254850d6c01ed54810589
+ sha256: 607cbeb1a533be98ba96cf5cdf0ddbb101c78019f1fda063261871dad6248609
category: main
optional: false
- - name: sphinx
- version: 7.2.6
+ - name: zstd
+ version: 1.5.5
manager: conda
- platform: osx-arm64
+ platform: osx-64
dependencies:
- sphinxcontrib-jsmath: ""
- sphinxcontrib-applehelp: ""
- sphinxcontrib-devhelp: ""
- sphinxcontrib-qthelp: ""
- python: ">=3.9"
- jinja2: ">=3.0"
- packaging: ">=21.0"
- alabaster: ">=0.7,<0.8"
- requests: ">=2.25.0"
- colorama: ">=0.4.5"
- pygments: ">=2.14"
- sphinxcontrib-htmlhelp: ">=2.0.0"
- importlib-metadata: ">=4.8"
- babel: ">=2.9"
- imagesize: ">=1.3"
- snowballstemmer: ">=2.0"
- docutils: ">=0.18.1,<0.21"
- sphinxcontrib-serializinghtml: ">=1.1.9"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.5-h829000d_0.conda
hash:
- md5: bbfd1120d1824d2d073bc65935f0e4c0
- sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42
+ md5: 80abc41d0c48b82fe0f04e7f42f5cb7e
+ sha256: d54e31d3d8de5e254c0804abd984807b8ae5cd3708d758a8bf1adff1f5df166c
category: main
optional: false
- - name: sphinxcontrib-serializinghtml
- version: 1.1.9
+ - name: zstd
+ version: 1.5.5
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.9"
- sphinx: ">=5"
- url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda
+ libzlib: ">=1.2.13,<1.3.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.5-h4f39d0f_0.conda
hash:
- md5: 0612e497d7860728f2cda421ea2aec09
- sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d
+ md5: 5b212cfb7f9d71d603ad891879dc7933
+ sha256: 7e1fe6057628bbb56849a6741455bbb88705bae6d6646257e57904ac5ee5a481
category: main
optional: false
diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml
index 7df0551194..ce89863ddc 100644
--- a/environments/conda-osx-64.lock.yml
+++ b/environments/conda-osx-64.lock.yml
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: osx-64
-# input_hash: bcf38db86781af22df7f496ce0dafe43a905c359e9c7d6d038429569b874c305
+# input_hash: 84d829289bcc9447b519b5ef1003de9a87b33c825aefe64c768630f2b560d152
channels:
- conda-forge
@@ -8,17 +8,17 @@ channels:
dependencies:
- aws-c-common=0.9.8=h10d778d_0
- bzip2=1.0.8=h10d778d_5
- - c-ares=1.21.0=h10d778d_0
- - ca-certificates=2023.7.22=h8857fd0_0
+ - c-ares=1.22.1=h10d778d_0
+ - ca-certificates=2023.11.17=h8857fd0_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- - font-ttf-ubuntu=0.83=hab24e00_0
+ - font-ttf-ubuntu=0.83=h77eed37_1
- fribidi=1.0.10=hbcb3906_0
- giflib=5.2.1=hb7f2c08_3
- icu=73.2=hf5e326d_0
- json-c=0.17=h8e11ae5_0
- - libboost-headers=1.82.0=h694c41f_6
+ - libboost-headers=1.83.0=h694c41f_0
- libbrotlicommon=1.1.0=h0dc2134_1
- libcxx=16.0.6=hd57cbcb_0
- libdeflate=1.19=ha4e1b8e_0
@@ -28,12 +28,11 @@ dependencies:
- libiconv=1.17=hac89ed1_0
- libjpeg-turbo=3.0.0=h0dc2134_1
- libsodium=1.0.18=hbcb3906_1
- - libtool=2.4.7=hf0c8a7f_0
- libutf8proc=2.8.0=hb7f2c08_0
- libuv=1.46.0=h0c2f820_0
- libwebp-base=1.3.2=h0dc2134_0
- libzlib=1.2.13=h8a1eda9_5
- - llvm-openmp=17.0.5=hb6ac08f_0
+ - llvm-openmp=17.0.6=hb6ac08f_0
- lzo=2.10=haf1e3a3_1000
- poppler-data=0.4.12=hd8ed1ab_0
- pthread-stubs=0.4=hc929b4f_1001
@@ -50,7 +49,7 @@ dependencies:
- aws-checksums=0.1.17=hff1f2c8_5
- expat=2.5.0=hf0c8a7f_1
- fonts-conda-forge=1=0
- - geos=3.12.0=he965462_0
+ - geos=3.12.1=h93d8f39_0
- gettext=0.21.1=h8a4c099_0
- gflags=2.2.2=hb1e8313_1004
- graphite2=1.3.13=h2e338ed_1001
@@ -65,7 +64,7 @@ dependencies:
- libllvm14=14.0.6=hc8e404f_4
- libpng=1.6.39=ha978bb4_0
- libspatialindex=1.9.3=he49afe7_4
- - libsqlite=3.44.0=h92b6c6a_0
+ - libsqlite=3.44.2=h92b6c6a_0
- libxcb=1.15=hb7f2c08_0
- libxml2=2.11.6=hc0ae0f7_0
- lz4-c=1.9.4=hf0c8a7f_0
@@ -81,7 +80,7 @@ dependencies:
- zeromq=4.3.5=h93d8f39_0
- zlib=1.2.13=h8a1eda9_5
- zstd=1.5.5=h829000d_0
- - aws-c-io=0.13.35=hb98174f_8
+ - aws-c-io=0.13.36=hb98174f_0
- blosc=1.21.5=heccf04b_0
- brotli-bin=1.1.0=h0dc2134_1
- fonts-conda-ecosystem=1=0
@@ -97,18 +96,18 @@ dependencies:
- libnghttp2=1.58.0=h64cf6d3_0
- libprotobuf=4.24.4=h0ee05dc_0
- libre2-11=2023.06.02=h4694dbf_0
- - librttopo=1.1.0=h23f359d_14
+ - librttopo=1.1.0=hf05f67e_15
- libssh2=1.11.0=hd019ec5_0
- libtiff=4.6.0=h684deea_2
- libxslt=1.1.37=h20bfa82_1
- libzip=1.10.1=hc158999_3
- minizip=4.0.3=h23f18a7_0
- - nodejs=20.8.1=h9adec40_0
- - nss=3.94=hd6ac835_0
+ - nodejs=20.9.0=h9adec40_0
+ - nss=3.95=hfeb00ea_0
- readline=8.2=h9e318b2_1
- atk-1.0=2.38.0=h1d18e73_1
- - aws-c-event-stream=0.3.2=hb6e475e_6
- - aws-c-http=0.7.14=h950a07a_1
+ - aws-c-event-stream=0.3.2=hdb93a3d_7
+ - aws-c-http=0.7.14=h99202ee_2
- brotli=1.1.0=h0dc2134_1
- fontconfig=2.14.2=h5bb23bf_0
- freexl=2.0.0=h3ec172f_0
@@ -116,7 +115,7 @@ dependencies:
- gts=0.7.6=h53e17e3_4
- krb5=1.21.2=hb884880_0
- lcms2=2.15=hd6ba6f3_3
- - libopenblas=0.3.24=openmp_h48a4ad5_0
+ - libopenblas=0.3.25=openmp_hfef2a42_0
- libthrift=0.19.0=h064b379_1
- libwebp=1.3.2=h44782d1_1
- openjpeg=2.5.0=ha4da562_3
@@ -124,7 +123,7 @@ dependencies:
- prettier=3.1.0=hbd11d21_0
- python=3.11.6=h30d4d87_0_cpython
- re2=2023.06.02=hd34609a_0
- - sqlite=3.44.0=h7461747_0
+ - sqlite=3.44.2=h7461747_0
- aiofiles=23.2.1=pyhd8ed1ab_0
- alabaster=0.7.13=pyhd8ed1ab_0
- anyascii=0.3.2=pyhd8ed1ab_0
@@ -132,10 +131,9 @@ dependencies:
- appnope=0.1.3=pyhd8ed1ab_0
- astroid=3.0.1=py311h6eed73b_0
- attrs=23.1.0=pyh71513ae_1
- - aws-c-auth=0.7.6=hc3630cc_0
- - aws-c-mqtt=0.9.9=h5e4a26e_0
+ - aws-c-auth=0.7.7=h9ac2572_1
+ - aws-c-mqtt=0.9.10=h10c2427_1
- backoff=2.2.1=pyhd8ed1ab_0
- - backports=1.0=pyhd8ed1ab_3
- backports.zoneinfo=0.2.1=py311h6eed73b_8
- blinker=1.7.0=pyhd8ed1ab_0
- brotli-python=1.1.0=py311hdf8f085_1
@@ -145,7 +143,7 @@ dependencies:
- cairo=1.18.0=h99e66fa_0
- catalystcoop.dbfread=3.0.0=py_0
- cchardet=2.1.7=py311hdf8f085_5
- - certifi=2023.7.22=pyhd8ed1ab_0
+ - certifi=2023.11.17=pyhd8ed1ab_0
- cfgv=3.3.1=pyhd8ed1ab_0
- chardet=5.2.0=py311h6eed73b_1
- charset-normalizer=3.3.2=pyhd8ed1ab_0
@@ -164,7 +162,7 @@ dependencies:
- docutils=0.20.1=py311h6eed73b_2
- entrypoints=0.4=pyhd8ed1ab_0
- et_xmlfile=1.1.0=pyhd8ed1ab_0
- - exceptiongroup=1.1.3=pyhd8ed1ab_0
+ - exceptiongroup=1.2.0=pyhd8ed1ab_0
- execnet=2.0.2=pyhd8ed1ab_0
- executing=2.0.1=pyhd8ed1ab_0
- filelock=3.13.1=pyhd8ed1ab_0
@@ -177,18 +175,18 @@ dependencies:
- humanfriendly=10.0=pyhd8ed1ab_6
- hupper=1.12=pyhd8ed1ab_0
- hyperframe=6.0.1=pyhd8ed1ab_0
- - idna=3.4=pyhd8ed1ab_0
+ - idna=3.6=pyhd8ed1ab_0
- ijson=3.2.3=pyhd8ed1ab_0
- imagesize=1.4.1=pyhd8ed1ab_0
- iniconfig=2.0.0=pyhd8ed1ab_0
- itsdangerous=2.1.2=pyhd8ed1ab_0
- - jellyfish=1.0.1=py311h299eb51_1
+ - jellyfish=1.0.3=py311h5e0f0e4_0
- jmespath=1.0.1=pyhd8ed1ab_0
- json5=0.9.14=pyhd8ed1ab_0
- jsonpointer=2.4=py311h6eed73b_3
- jupyterlab_widgets=3.0.9=pyhd8ed1ab_0
- kiwisolver=1.4.5=py311h5fe6e05_1
- - libblas=3.9.0=19_osx64_openblas
+ - libblas=3.9.0=20_osx64_openblas
- libcurl=8.4.0=h726d00d_0
- libgd=2.3.3=h0dceb68_9
- libgrpc=1.59.2=ha7f534c_0
@@ -196,13 +194,13 @@ dependencies:
- llvmlite=0.41.1=py311hb5c2e0a_0
- locket=1.0.0=pyhd8ed1ab_0
- lxml=4.9.3=py311h19a211c_1
- - marko=1.3.1=pyhd8ed1ab_0
+ - marko=2.0.2=pyhd8ed1ab_0
- markupsafe=2.1.3=py311h2725bcf_1
- mdurl=0.1.0=pyhd8ed1ab_0
- mergedeep=1.3.4=pyhd8ed1ab_0
- mistune=3.0.2=pyhd8ed1ab_0
- more-itertools=10.1.0=pyhd8ed1ab_0
- - msgpack-python=1.0.6=py311h5fe6e05_0
+ - msgpack-python=1.0.7=py311h7bea37d_0
- multidict=6.0.4=py311h5547dcb_1
- multimethod=1.9.1=pyhd8ed1ab_0
- munch=4.0.0=pyhd8ed1ab_0
@@ -214,20 +212,19 @@ dependencies:
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parso=0.8.3=pyhd8ed1ab_0
- pastel=0.2.1=pyhd8ed1ab_0
- - pathspec=0.11.2=pyhd8ed1ab_0
- petl=1.7.14=pyhd8ed1ab_0
- pickleshare=0.7.5=py_1003
- pillow=10.1.0=py311hea5c87a_0
- pkginfo=1.9.6=pyhd8ed1ab_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
- pluggy=1.3.0=pyhd8ed1ab_0
- - prometheus_client=0.18.0=pyhd8ed1ab_1
+ - prometheus_client=0.19.0=pyhd8ed1ab_0
- psutil=5.9.5=py311h2725bcf_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pure_eval=0.2.2=pyhd8ed1ab_0
- - pyasn1=0.5.0=pyhd8ed1ab_0
+ - pyasn1=0.5.1=pyhd8ed1ab_0
- pycparser=2.21=pyhd8ed1ab_0
- - pygments=2.16.1=pyhd8ed1ab_0
+ - pygments=2.17.2=pyhd8ed1ab_0
- pyjwt=2.8.0=pyhd8ed1ab_0
- pylev=1.4.0=pyhd8ed1ab_0
- pyparsing=3.1.1=pyhd8ed1ab_0
@@ -246,10 +243,10 @@ dependencies:
- regex=2023.10.3=py311h2725bcf_0
- rfc3986=2.0.0=pyhd8ed1ab_0
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- - rpds-py=0.13.0=py311h5e0f0e4_0
+ - rpds-py=0.13.2=py311h5e0f0e4_0
- rtree=1.1.0=py311hbc1f44b_0
- ruamel.yaml.clib=0.2.7=py311h2725bcf_2
- - ruff=0.1.5=py311hec6fdf1_0
+ - ruff=0.1.6=py311hec6fdf1_0
- setuptools=68.2.2=pyhd8ed1ab_0
- shellingham=1.5.4=pyhd8ed1ab_0
- simpleeval=0.9.13=pyhd8ed1ab_1
@@ -270,20 +267,21 @@ dependencies:
- toolz=0.12.0=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311h2725bcf_1
- - traitlets=5.13.0=pyhd8ed1ab_0
+ - traitlets=5.14.0=pyhd8ed1ab_0
- types-python-dateutil=2.8.19.14=pyhd8ed1ab_0
- types-pyyaml=6.0.12.12=pyhd8ed1ab_0
- typing_extensions=4.8.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_0
- - unicodecsv=0.14.1=py_1
+ - unicodecsv=0.14.1=pyhd8ed1ab_2
- uri-template=1.3.0=pyhd8ed1ab_0
- uvloop=0.19.0=py311ha272bfe_0
- validators=0.22.0=pyhd8ed1ab_0
+ - wcwidth=0.2.12=pyhd8ed1ab_0
- webcolors=1.13=pyhd8ed1ab_0
- webencodings=0.5.1=pyhd8ed1ab_2
- websocket-client=1.6.4=pyhd8ed1ab_0
- websockets=10.4=py311h5547dcb_1
- - wheel=0.41.3=pyhd8ed1ab_0
+ - wheel=0.42.0=pyhd8ed1ab_0
- widgetsnbextension=4.0.9=pyhd8ed1ab_0
- wrapt=1.16.0=py311he705e18_0
- xlrd=2.0.1=pyhd8ed1ab_3
@@ -291,14 +289,13 @@ dependencies:
- xyzservices=2023.10.1=pyhd8ed1ab_0
- zipp=3.17.0=pyhd8ed1ab_0
- aiosignal=1.3.1=pyhd8ed1ab_0
- - anyio=4.0.0=pyhd8ed1ab_0
+ - anyio=4.1.0=pyhd8ed1ab_0
- asgi-csrf=0.9=pyhd8ed1ab_0
- asgiref=3.7.2=pyhd8ed1ab_0
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- - aws-c-s3=0.3.24=hb1cbb54_0
+ - aws-c-s3=0.4.1=h70a162a_0
- babel=2.13.1=pyhd8ed1ab_0
- - backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
- bleach=6.1.0=pyhd8ed1ab_0
- cached-property=1.5.2=hd8ed1ab_1
@@ -312,7 +309,8 @@ dependencies:
- coloredlogs=14.0=pyhd8ed1ab_3
- comm=0.1.4=pyhd8ed1ab_0
- coverage=7.3.2=py311h2725bcf_0
- - fonttools=4.44.3=py311he705e18_0
+ - curl=8.4.0=h726d00d_0
+ - fonttools=4.45.1=py311he705e18_0
- gitdb=4.0.11=pyhd8ed1ab_0
- graphql-core=3.2.3=pyhd8ed1ab_0
- grpcio=1.59.2=py311hfd95bfa_0
@@ -321,7 +319,7 @@ dependencies:
- harfbuzz=8.3.0=hf45c392_0
- hdf5=1.14.2=nompi_hedada53_100
- html5lib=1.1=pyh9f0ad1d_0
- - hypothesis=6.89.0=pyha770c72_0
+ - hypothesis=6.91.0=pyha770c72_0
- importlib-metadata=6.8.0=pyha770c72_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- isodate=0.6.1=pyhd8ed1ab_0
@@ -331,11 +329,11 @@ dependencies:
- jinja2=3.1.2=pyhd8ed1ab_1
- joblib=1.3.2=pyhd8ed1ab_0
- jsonlines=4.0.0=pyhd8ed1ab_0
- - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
+ - jupyterlab_pygments=0.3.0=pyhd8ed1ab_0
- latexcodec=2.0.1=pyh9f0ad1d_0
- - libcblas=3.9.0=19_osx64_openblas
+ - libcblas=3.9.0=20_osx64_openblas
- libgoogle-cloud=2.12.0=hc0857f6_4
- - liblapack=3.9.0=19_osx64_openblas
+ - liblapack=3.9.0=20_osx64_openblas
- linear-tsv=1.1.0=py_1
- markdown-it-py=3.0.0=pyhd8ed1ab_0
- matplotlib-inline=0.1.6=pyhd8ed1ab_0
@@ -346,9 +344,11 @@ dependencies:
- pexpect=4.8.0=pyh1a96a4e_2
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
+ - platformdirs=4.0.0=pyhd8ed1ab_0
- poppler=23.11.0=hdd5a5e8_0
- postgresql=16.1=h413614c_0
- proj=9.3.0=h23b96cc_2
+ - prompt-toolkit=3.0.41=pyha770c72_0
- protobuf=4.24.4=py311h021eaf5_0
- psycopg2=2.9.7=py311h187f0af_1
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
@@ -359,12 +359,11 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.31.0=pyhd8ed1ab_0
+ - referencing=0.31.1=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
- ruamel.yaml=0.18.5=py311he705e18_0
- - sqlalchemy=1.4.49=py311he705e18_1
- terminado=0.18.0=pyh31c8845_0
- tinycss2=1.2.1=pyhd8ed1ab_0
- tqdm=4.66.1=pyhd8ed1ab_0
@@ -374,14 +373,15 @@ dependencies:
- urllib3=1.26.18=pyhd8ed1ab_0
- watchdog=3.0.0=py311h5ef12f2_1
- xerces-c=3.2.4=h6314983_3
- - yarl=1.9.2=py311he705e18_1
+ - yarl=1.9.3=py311he705e18_0
- addfips=0.4.0=pyhd8ed1ab_1
- aniso8601=9.0.1=pyhd8ed1ab_0
+ - annotated-types=0.6.0=pyhd8ed1ab_0
- argon2-cffi-bindings=21.2.0=py311h2725bcf_4
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- - aws-crt-cpp=0.24.7=ha2eb20f_1
- - botocore=1.32.2=pyhd8ed1ab_0
+ - aws-crt-cpp=0.24.7=hf3941dc_6
+ - botocore=1.33.3=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311hd51016d_0
@@ -396,41 +396,42 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
+ - jupyter_core=5.5.0=py311h6eed73b_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h052fcf7_1
- libnetcdf=4.9.2=nompi_h6a32802_112
- - libspatialite=5.1.0=h4a59d8e_1
+ - libspatialite=5.1.0=hf63aa75_2
- mako=1.3.0=pyhd8ed1ab_0
- - numpy=1.26.0=py311hc44ba51_0
+ - numpy=1.26.2=py311h93c810c_0
- pango=1.50.14=h19c1c8a_2
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311h2725bcf_6
- - platformdirs=3.11.0=pyhd8ed1ab_0
+ - prompt_toolkit=3.0.41=hd8ed1ab_0
- psycopg2-binary=2.9.7=pyhd8ed1ab_1
- pybtex=0.24.0=pyhd8ed1ab_2
- - pydantic=1.10.13=py311he705e18_1
+ - pydantic-core=2.14.5=py311h5e0f0e4_0
- pyobjc-framework-cocoa=10.0=py311hf110eff_1
- pyproj=3.6.1=py311he36daed_4
- pytest-console-scripts=1.4.1=pyhd8ed1ab_0
- pytest-cov=4.1.0=pyhd8ed1ab_0
- pytest-mock=3.12.0=pyhd8ed1ab_0
- - pytest-xdist=3.4.0=pyhd8ed1ab_0
+ - pytest-xdist=3.5.0=pyhd8ed1ab_0
- python-build=1.0.3=pyhd8ed1ab_0
- requests=2.31.0=pyhd8ed1ab_0
- rich=13.7.0=pyhd8ed1ab_0
+ - sqlalchemy=2.0.23=py311he705e18_0
- stack_data=0.6.2=pyhd8ed1ab_0
- starlette=0.32.0.post1=pyhd8ed1ab_0
- tiledb=2.16.3=hd3a41d5_3
- ukkonen=1.0.1=py311h5fe6e05_4
- uvicorn=0.24.0=py311h6eed73b_0
- - watchfiles=0.20.0=py311h299eb51_2
- - wcwidth=0.2.10=pyhd8ed1ab_0
+ - virtualenv=20.24.7=pyhd8ed1ab_0
+ - watchfiles=0.21.0=py311h5e0f0e4_0
- aiohttp=3.8.6=py311he705e18_1
- alembic=1.12.1=pyhd8ed1ab_0
- - arelle-release=2.17.4=pyhd8ed1ab_0
+ - arelle-release=2.17.7=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h28d282b_7
- - black=23.10.1=py311h6eed73b_0
- bottleneck=1.3.7=py311h4a70a88_1
- cachecontrol=0.13.1=pyhd8ed1ab_0
- contourpy=1.2.0=py311h7bea37d_0
@@ -443,64 +444,65 @@ dependencies:
- grpcio-status=1.59.2=pyhd8ed1ab_0
- gtk2=2.24.33=h7c1209e_2
- h3-py=3.7.6=py311hdf8f085_1
- - httpx=0.25.1=pyhd8ed1ab_0
- - identify=2.5.31=pyhd8ed1ab_0
+ - httpx=0.25.2=pyhd8ed1ab_0
+ - identify=2.5.32=pyhd8ed1ab_0
+ - ipython=8.18.1=pyh31011fe_1
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- - jupyter_core=5.5.0=py311h6eed73b_0
+ - jupyter_client=8.6.0=pyhd8ed1ab_0
- keyring=24.3.0=py311h6eed73b_0
- - libgdal=3.8.0=h1c9f6b2_4
+ - libgdal=3.8.0=h5b0c7d5_6
- librsvg=2.56.3=hec3db73_0
- numba=0.58.1=py311h32f2313_0
- numexpr=2.8.7=py311h1eadf79_4
- oauthlib=3.2.2=pyhd8ed1ab_0
- pandas=2.1.3=py311h1eadf79_0
- - prompt-toolkit=3.0.41=pyha770c72_0
- pybtex-docutils=1.0.3=py311h6eed73b_1
+ - pydantic=2.5.2=pyhd8ed1ab_0
- pyopenssl=23.3.0=pyhd8ed1ab_0
- readthedocs-sphinx-ext=2.2.3=pyhd8ed1ab_0
- requests-toolbelt=0.10.1=pyhd8ed1ab_0
- responses=0.24.1=pyhd8ed1ab_0
- - s3transfer=0.7.0=pyhd8ed1ab_0
- - scipy=1.11.3=py311h16c3c4d_1
+ - s3transfer=0.8.2=pyhd8ed1ab_0
+ - scipy=1.11.4=py311he0bea55_0
- send2trash=1.8.2=pyhd1c38e8_0
- - shapely=2.0.2=py311h359915d_0
+ - shapely=2.0.2=py311h4c12f3d_1
- stevedore=5.1.0=pyhd8ed1ab_0
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0=h6eed73b_0
- - virtualenv=20.24.6=pyhd8ed1ab_0
- - boto3=1.29.2=pyhd8ed1ab_0
+ - boto3=1.33.3=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- dagster=1.5.9=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.8.0=py311h5646c56_4
+ - gdal=3.8.0=py311h5646c56_6
- geopandas-base=0.14.1=pyha770c72_0
- google-auth=2.23.4=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- - graphviz=8.1.0=hc7f41f9_0
+ - graphviz=9.0.0=hee74176_1
+ - ipykernel=6.26.0=pyh3cd1d5f_0
+ - ipywidgets=8.1.1=pyhd8ed1ab_0
- jsonschema-with-format-nongpl=4.20.0=pyhd8ed1ab_0
- - jupyter_client=8.6.0=pyhd8ed1ab_0
- libarrow=14.0.1=hd201b0c_3_cpu
- - matplotlib-base=3.8.1=py311hd316c10_0
+ - matplotlib-base=3.8.2=py311hd316c10_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
- pre-commit=3.5.0=pyha770c72_0
- - prompt_toolkit=3.0.41=hd8ed1ab_0
+ - pydantic-settings=2.1.0=pyhd8ed1ab_1
- requests-oauthlib=1.3.1=pyhd8ed1ab_0
- scikit-learn=1.3.2=py311h66081b9_1
- timezonefinder=6.2.0=py311he705e18_2
- - catalystcoop.ferc_xbrl_extractor=1.2.1=pyhd8ed1ab_0
- - conda-lock=2.4.2=pyhd8ed1ab_0
+ - catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
+ - conda-lock=2.5.1=pyhd8ed1ab_0
- dagster-graphql=1.5.9=pyhd8ed1ab_0
- - dagster-postgres=0.21.9=pyhd8ed1ab_0
+ - dagster-postgres=0.21.9=pyhd8ed1ab_1
- fiona=1.9.5=py311h809632c_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
- - ipython=8.17.2=pyh31c8845_0
+ - jupyter_console=6.6.3=pyhd8ed1ab_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- libarrow-acero=14.0.1=hc222712_3_cpu
- libarrow-flight=14.0.1=h440f1c2_3_cpu
@@ -508,33 +510,30 @@ dependencies:
- libparquet=14.0.1=h27bd29f_3_cpu
- mapclassify=2.6.1=pyhd8ed1ab_0
- nbclient=0.8.0=pyhd8ed1ab_0
- - pygraphviz=1.11=py311hc6eba27_1
+ - pygraphviz=1.11=py311h03ee4fc_2
+ - qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- dagster-webserver=1.5.9=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- - ipykernel=6.26.0=pyh3cd1d5f_0
- - ipywidgets=8.1.1=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=hc222712_3_cpu
- libarrow-flight-sql=14.0.1=h2cc6c1c_3_cpu
- nbconvert-core=7.11.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_console=6.6.3=pyhd8ed1ab_0
- - jupyter_server=2.10.1=pyhd8ed1ab_0
+ - jupyter_server=2.11.1=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h2cc6c1c_3_cpu
- nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
- - qtconsole-base=5.5.1=pyha770c72_0
- gcsfs=2023.10.0=pyhd8ed1ab_0
- - jupyter-lsp=2.2.0=pyhd8ed1ab_0
+ - jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- - jupyterlab_server=2.25.1=pyhd8ed1ab_0
+ - jupyterlab_server=2.25.2=pyhd8ed1ab_0
- nbconvert=7.11.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- pyarrow=14.0.1=py311h98a0319_3_cpu
- - jupyterlab=4.0.8=pyhd8ed1ab_0
+ - jupyterlab=4.0.9=pyhd8ed1ab_0
- notebook=7.0.6=pyhd8ed1ab_0
- jupyter=1.0.0=pyhd8ed1ab_10
- sphinx-autoapi=3.0.0=pyhd8ed1ab_0
diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml
index a58e3ec5f3..dee2775760 100644
--- a/environments/conda-osx-arm64.lock.yml
+++ b/environments/conda-osx-arm64.lock.yml
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: osx-arm64
-# input_hash: 8d8eb4c72944efa02bab31f0274acad445146594b4cad129cc341a304e08ebb2
+# input_hash: 4af60a188a5341a583519edb866207f4e68583e87831447441cb1088e6d9349a
channels:
- conda-forge
@@ -8,17 +8,17 @@ channels:
dependencies:
- aws-c-common=0.9.8=h93a5062_0
- bzip2=1.0.8=h93a5062_5
- - c-ares=1.21.0=h93a5062_0
- - ca-certificates=2023.7.22=hf0a4a13_0
+ - c-ares=1.22.1=h93a5062_0
+ - ca-certificates=2023.11.17=hf0a4a13_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- - font-ttf-ubuntu=0.83=hab24e00_0
+ - font-ttf-ubuntu=0.83=h77eed37_1
- fribidi=1.0.10=h27ca646_0
- giflib=5.2.1=h1a8c8d9_3
- icu=73.2=hc8870d7_0
- json-c=0.17=h40ed0f5_0
- - libboost-headers=1.82.0=hce30654_6
+ - libboost-headers=1.83.0=hce30654_0
- libbrotlicommon=1.1.0=hb547adb_1
- libcxx=16.0.6=h4653b0c_0
- libdeflate=1.19=hb547adb_0
@@ -28,12 +28,11 @@ dependencies:
- libiconv=1.17=he4db4b2_0
- libjpeg-turbo=3.0.0=hb547adb_1
- libsodium=1.0.18=h27ca646_1
- - libtool=2.4.7=hb7217d7_0
- libutf8proc=2.8.0=h1a8c8d9_0
- libuv=1.46.0=hb547adb_0
- libwebp-base=1.3.2=hb547adb_0
- libzlib=1.2.13=h53f4e23_5
- - llvm-openmp=17.0.5=hcd81f8e_0
+ - llvm-openmp=17.0.6=hcd81f8e_0
- lzo=2.10=h642e427_1000
- pandoc=3.1.3=hce30654_0
- poppler-data=0.4.12=hd8ed1ab_0
@@ -51,7 +50,7 @@ dependencies:
- aws-checksums=0.1.17=hea61927_5
- expat=2.5.0=hb7217d7_1
- fonts-conda-forge=1=0
- - geos=3.12.0=h13dd4ca_0
+ - geos=3.12.1=h965bd2d_0
- gettext=0.21.1=h0186832_0
- gflags=2.2.2=hc88da5d_1004
- graphite2=1.3.13=h9f76cd9_1001
@@ -66,7 +65,7 @@ dependencies:
- libllvm14=14.0.6=hd1a9a77_4
- libpng=1.6.39=h76d750c_0
- libspatialindex=1.9.3=hbdafb3b_4
- - libsqlite=3.44.0=h091b4b1_0
+ - libsqlite=3.44.2=h091b4b1_0
- libxcb=1.15=hf346824_0
- libxml2=2.11.6=h0d0cfa8_0
- lz4-c=1.9.4=hb7217d7_0
@@ -81,7 +80,7 @@ dependencies:
- zeromq=4.3.5=h965bd2d_0
- zlib=1.2.13=h53f4e23_5
- zstd=1.5.5=h4f39d0f_0
- - aws-c-io=0.13.35=he1b4ce3_8
+ - aws-c-io=0.13.36=he1b4ce3_0
- blosc=1.21.5=hc338f07_0
- brotli-bin=1.1.0=hb547adb_1
- fonts-conda-ecosystem=1=0
@@ -97,18 +96,18 @@ dependencies:
- libnghttp2=1.58.0=ha4dd798_0
- libprotobuf=4.24.4=hc9861d8_0
- libre2-11=2023.06.02=h1753957_0
- - librttopo=1.1.0=h667cd51_14
+ - librttopo=1.1.0=hc8f776e_15
- libssh2=1.11.0=h7a5bd25_0
- libtiff=4.6.0=ha8a6c65_2
- libxslt=1.1.37=h1728932_1
- libzip=1.10.1=ha0bc3c6_3
- minizip=4.0.3=hd5cad61_0
- - nodejs=20.8.1=h0950e01_0
- - nss=3.94=hc6b9969_0
+ - nodejs=20.9.0=h0950e01_0
+ - nss=3.95=h6cf673f_0
- readline=8.2=h92ec313_1
- atk-1.0=2.38.0=hcb7b3dd_1
- - aws-c-event-stream=0.3.2=h32206d9_6
- - aws-c-http=0.7.14=h673bc1b_1
+ - aws-c-event-stream=0.3.2=h0574dc0_7
+ - aws-c-http=0.7.14=h90b1786_2
- brotli=1.1.0=hb547adb_1
- fontconfig=2.14.2=h82840c6_0
- freexl=2.0.0=hfbad9fb_0
@@ -116,7 +115,7 @@ dependencies:
- gts=0.7.6=he42f4ea_4
- krb5=1.21.2=h92f50d5_0
- lcms2=2.15=hf2736f0_3
- - libopenblas=0.3.24=openmp_hd76b1f2_0
+ - libopenblas=0.3.25=openmp_h6c19121_0
- libthrift=0.19.0=h026a170_1
- libwebp=1.3.2=hf30222e_1
- openjpeg=2.5.0=h4c1507b_3
@@ -124,7 +123,7 @@ dependencies:
- prettier=3.1.0=hb67532b_0
- python=3.11.6=h47c9636_0_cpython
- re2=2023.06.02=h6135d0a_0
- - sqlite=3.44.0=hf2abe2d_0
+ - sqlite=3.44.2=hf2abe2d_0
- aiofiles=23.2.1=pyhd8ed1ab_0
- alabaster=0.7.13=pyhd8ed1ab_0
- anyascii=0.3.2=pyhd8ed1ab_0
@@ -132,10 +131,9 @@ dependencies:
- appnope=0.1.3=pyhd8ed1ab_0
- astroid=3.0.1=py311h267d04e_0
- attrs=23.1.0=pyh71513ae_1
- - aws-c-auth=0.7.6=h30f9597_0
- - aws-c-mqtt=0.9.9=h2364c62_0
+ - aws-c-auth=0.7.7=h886c30d_1
+ - aws-c-mqtt=0.9.10=h8d54690_1
- backoff=2.2.1=pyhd8ed1ab_0
- - backports=1.0=pyhd8ed1ab_3
- backports.zoneinfo=0.2.1=py311h267d04e_8
- blinker=1.7.0=pyhd8ed1ab_0
- brotli-python=1.1.0=py311ha891d26_1
@@ -145,7 +143,7 @@ dependencies:
- cairo=1.18.0=hd1e100b_0
- catalystcoop.dbfread=3.0.0=py_0
- cchardet=2.1.7=py311ha891d26_5
- - certifi=2023.7.22=pyhd8ed1ab_0
+ - certifi=2023.11.17=pyhd8ed1ab_0
- cfgv=3.3.1=pyhd8ed1ab_0
- chardet=5.2.0=py311h267d04e_1
- charset-normalizer=3.3.2=pyhd8ed1ab_0
@@ -164,7 +162,7 @@ dependencies:
- docutils=0.20.1=py311h267d04e_2
- entrypoints=0.4=pyhd8ed1ab_0
- et_xmlfile=1.1.0=pyhd8ed1ab_0
- - exceptiongroup=1.1.3=pyhd8ed1ab_0
+ - exceptiongroup=1.2.0=pyhd8ed1ab_0
- execnet=2.0.2=pyhd8ed1ab_0
- executing=2.0.1=pyhd8ed1ab_0
- filelock=3.13.1=pyhd8ed1ab_0
@@ -177,18 +175,18 @@ dependencies:
- humanfriendly=10.0=pyhd8ed1ab_6
- hupper=1.12=pyhd8ed1ab_0
- hyperframe=6.0.1=pyhd8ed1ab_0
- - idna=3.4=pyhd8ed1ab_0
+ - idna=3.6=pyhd8ed1ab_0
- ijson=3.2.3=pyhd8ed1ab_0
- imagesize=1.4.1=pyhd8ed1ab_0
- iniconfig=2.0.0=pyhd8ed1ab_0
- itsdangerous=2.1.2=pyhd8ed1ab_0
- - jellyfish=1.0.1=py311h0563b04_1
+ - jellyfish=1.0.3=py311h94f323b_0
- jmespath=1.0.1=pyhd8ed1ab_0
- json5=0.9.14=pyhd8ed1ab_0
- jsonpointer=2.4=py311h267d04e_3
- jupyterlab_widgets=3.0.9=pyhd8ed1ab_0
- kiwisolver=1.4.5=py311he4fd1f5_1
- - libblas=3.9.0=19_osxarm64_openblas
+ - libblas=3.9.0=20_osxarm64_openblas
- libcurl=8.4.0=h2d989ff_0
- libgd=2.3.3=hfdf3952_9
- libgrpc=1.59.2=hbcf6334_0
@@ -196,13 +194,13 @@ dependencies:
- llvmlite=0.41.1=py311hf5d242d_0
- locket=1.0.0=pyhd8ed1ab_0
- lxml=4.9.3=py311hbafe683_1
- - marko=1.3.1=pyhd8ed1ab_0
+ - marko=2.0.2=pyhd8ed1ab_0
- markupsafe=2.1.3=py311heffc1b2_1
- mdurl=0.1.0=pyhd8ed1ab_0
- mergedeep=1.3.4=pyhd8ed1ab_0
- mistune=3.0.2=pyhd8ed1ab_0
- more-itertools=10.1.0=pyhd8ed1ab_0
- - msgpack-python=1.0.6=py311he4fd1f5_0
+ - msgpack-python=1.0.7=py311hd03642b_0
- multidict=6.0.4=py311he2be06e_1
- multimethod=1.9.1=pyhd8ed1ab_0
- munch=4.0.0=pyhd8ed1ab_0
@@ -214,20 +212,19 @@ dependencies:
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parso=0.8.3=pyhd8ed1ab_0
- pastel=0.2.1=pyhd8ed1ab_0
- - pathspec=0.11.2=pyhd8ed1ab_0
- petl=1.7.14=pyhd8ed1ab_0
- pickleshare=0.7.5=py_1003
- pillow=10.1.0=py311hb9c5795_0
- pkginfo=1.9.6=pyhd8ed1ab_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
- pluggy=1.3.0=pyhd8ed1ab_0
- - prometheus_client=0.18.0=pyhd8ed1ab_1
+ - prometheus_client=0.19.0=pyhd8ed1ab_0
- psutil=5.9.5=py311heffc1b2_1
- ptyprocess=0.7.0=pyhd3deb0d_0
- pure_eval=0.2.2=pyhd8ed1ab_0
- - pyasn1=0.5.0=pyhd8ed1ab_0
+ - pyasn1=0.5.1=pyhd8ed1ab_0
- pycparser=2.21=pyhd8ed1ab_0
- - pygments=2.16.1=pyhd8ed1ab_0
+ - pygments=2.17.2=pyhd8ed1ab_0
- pyjwt=2.8.0=pyhd8ed1ab_0
- pylev=1.4.0=pyhd8ed1ab_0
- pyparsing=3.1.1=pyhd8ed1ab_0
@@ -246,10 +243,10 @@ dependencies:
- regex=2023.10.3=py311heffc1b2_0
- rfc3986=2.0.0=pyhd8ed1ab_0
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- - rpds-py=0.13.0=py311h94f323b_0
+ - rpds-py=0.13.2=py311h94f323b_0
- rtree=1.1.0=py311hd698ff7_0
- ruamel.yaml.clib=0.2.7=py311heffc1b2_2
- - ruff=0.1.5=py311h6fc163c_0
+ - ruff=0.1.6=py311h6fc163c_0
- setuptools=68.2.2=pyhd8ed1ab_0
- shellingham=1.5.4=pyhd8ed1ab_0
- simpleeval=0.9.13=pyhd8ed1ab_1
@@ -270,20 +267,21 @@ dependencies:
- toolz=0.12.0=pyhd8ed1ab_0
- toposort=1.10=pyhd8ed1ab_0
- tornado=6.3.3=py311heffc1b2_1
- - traitlets=5.13.0=pyhd8ed1ab_0
+ - traitlets=5.14.0=pyhd8ed1ab_0
- types-python-dateutil=2.8.19.14=pyhd8ed1ab_0
- types-pyyaml=6.0.12.12=pyhd8ed1ab_0
- typing_extensions=4.8.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_0
- - unicodecsv=0.14.1=py_1
+ - unicodecsv=0.14.1=pyhd8ed1ab_2
- uri-template=1.3.0=pyhd8ed1ab_0
- uvloop=0.19.0=py311h05b510d_0
- validators=0.22.0=pyhd8ed1ab_0
+ - wcwidth=0.2.12=pyhd8ed1ab_0
- webcolors=1.13=pyhd8ed1ab_0
- webencodings=0.5.1=pyhd8ed1ab_2
- websocket-client=1.6.4=pyhd8ed1ab_0
- websockets=10.4=py311he2be06e_1
- - wheel=0.41.3=pyhd8ed1ab_0
+ - wheel=0.42.0=pyhd8ed1ab_0
- widgetsnbextension=4.0.9=pyhd8ed1ab_0
- wrapt=1.16.0=py311h05b510d_0
- xlrd=2.0.1=pyhd8ed1ab_3
@@ -291,14 +289,13 @@ dependencies:
- xyzservices=2023.10.1=pyhd8ed1ab_0
- zipp=3.17.0=pyhd8ed1ab_0
- aiosignal=1.3.1=pyhd8ed1ab_0
- - anyio=4.0.0=pyhd8ed1ab_0
+ - anyio=4.1.0=pyhd8ed1ab_0
- asgi-csrf=0.9=pyhd8ed1ab_0
- asgiref=3.7.2=pyhd8ed1ab_0
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- - aws-c-s3=0.3.24=h3940a1a_0
+ - aws-c-s3=0.4.1=ha5b923c_0
- babel=2.13.1=pyhd8ed1ab_0
- - backports.functools_lru_cache=1.6.5=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
- bleach=6.1.0=pyhd8ed1ab_0
- cached-property=1.5.2=hd8ed1ab_1
@@ -312,7 +309,8 @@ dependencies:
- coloredlogs=14.0=pyhd8ed1ab_3
- comm=0.1.4=pyhd8ed1ab_0
- coverage=7.3.2=py311heffc1b2_0
- - fonttools=4.44.3=py311h05b510d_0
+ - curl=8.4.0=h2d989ff_0
+ - fonttools=4.45.1=py311h05b510d_0
- gitdb=4.0.11=pyhd8ed1ab_0
- graphql-core=3.2.3=pyhd8ed1ab_0
- grpcio=1.59.2=py311h79dd126_0
@@ -321,7 +319,7 @@ dependencies:
- harfbuzz=8.3.0=h8f0ba13_0
- hdf5=1.14.2=nompi_h3aba7b3_100
- html5lib=1.1=pyh9f0ad1d_0
- - hypothesis=6.89.0=pyha770c72_0
+ - hypothesis=6.91.0=pyha770c72_0
- importlib-metadata=6.8.0=pyha770c72_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- isodate=0.6.1=pyhd8ed1ab_0
@@ -331,11 +329,11 @@ dependencies:
- jinja2=3.1.2=pyhd8ed1ab_1
- joblib=1.3.2=pyhd8ed1ab_0
- jsonlines=4.0.0=pyhd8ed1ab_0
- - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
+ - jupyterlab_pygments=0.3.0=pyhd8ed1ab_0
- latexcodec=2.0.1=pyh9f0ad1d_0
- - libcblas=3.9.0=19_osxarm64_openblas
+ - libcblas=3.9.0=20_osxarm64_openblas
- libgoogle-cloud=2.12.0=hfb399a7_4
- - liblapack=3.9.0=19_osxarm64_openblas
+ - liblapack=3.9.0=20_osxarm64_openblas
- linear-tsv=1.1.0=py_1
- markdown-it-py=3.0.0=pyhd8ed1ab_0
- matplotlib-inline=0.1.6=pyhd8ed1ab_0
@@ -346,9 +344,11 @@ dependencies:
- pexpect=4.8.0=pyh1a96a4e_2
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
+ - platformdirs=4.0.0=pyhd8ed1ab_0
- poppler=23.11.0=hcdd998b_0
- postgresql=16.1=hc6ab77f_0
- proj=9.3.0=h52fb9d0_2
+ - prompt-toolkit=3.0.41=pyha770c72_0
- protobuf=4.24.4=py311h4d1eceb_0
- psycopg2=2.9.7=py311h589e011_1
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
@@ -359,12 +359,11 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.31.0=pyhd8ed1ab_0
+ - referencing=0.31.1=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
- ruamel.yaml=0.18.5=py311h05b510d_0
- - sqlalchemy=1.4.49=py311h05b510d_1
- terminado=0.18.0=pyh31c8845_0
- tinycss2=1.2.1=pyhd8ed1ab_0
- tqdm=4.66.1=pyhd8ed1ab_0
@@ -374,14 +373,15 @@ dependencies:
- urllib3=1.26.18=pyhd8ed1ab_0
- watchdog=3.0.0=py311heffc1b2_1
- xerces-c=3.2.4=hd886eac_3
- - yarl=1.9.2=py311h05b510d_1
+ - yarl=1.9.3=py311h05b510d_0
- addfips=0.4.0=pyhd8ed1ab_1
- aniso8601=9.0.1=pyhd8ed1ab_0
+ - annotated-types=0.6.0=pyhd8ed1ab_0
- argon2-cffi-bindings=21.2.0=py311heffc1b2_4
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- - aws-crt-cpp=0.24.7=h2da6921_1
- - botocore=1.32.2=pyhd8ed1ab_0
+ - aws-crt-cpp=0.24.7=hba4ac3b_6
+ - botocore=1.33.3=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311h71175c2_0
@@ -396,41 +396,42 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
+ - jupyter_core=5.5.0=py311h267d04e_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h47b5e36_1
- libnetcdf=4.9.2=nompi_hb2fb864_112
- - libspatialite=5.1.0=h5b80306_1
+ - libspatialite=5.1.0=h66af7d6_2
- mako=1.3.0=pyhd8ed1ab_0
- - numpy=1.26.0=py311hb8f3215_0
+ - numpy=1.26.2=py311h6d074dd_0
- pango=1.50.14=hcf40dda_2
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311heffc1b2_6
- - platformdirs=3.11.0=pyhd8ed1ab_0
+ - prompt_toolkit=3.0.41=hd8ed1ab_0
- psycopg2-binary=2.9.7=pyhd8ed1ab_1
- pybtex=0.24.0=pyhd8ed1ab_2
- - pydantic=1.10.13=py311h05b510d_1
+ - pydantic-core=2.14.5=py311h94f323b_0
- pyobjc-framework-cocoa=10.0=py311hb702dc4_1
- pyproj=3.6.1=py311h20a9b75_4
- pytest-console-scripts=1.4.1=pyhd8ed1ab_0
- pytest-cov=4.1.0=pyhd8ed1ab_0
- pytest-mock=3.12.0=pyhd8ed1ab_0
- - pytest-xdist=3.4.0=pyhd8ed1ab_0
+ - pytest-xdist=3.5.0=pyhd8ed1ab_0
- python-build=1.0.3=pyhd8ed1ab_0
- requests=2.31.0=pyhd8ed1ab_0
- rich=13.7.0=pyhd8ed1ab_0
+ - sqlalchemy=2.0.23=py311h05b510d_0
- stack_data=0.6.2=pyhd8ed1ab_0
- starlette=0.32.0.post1=pyhd8ed1ab_0
- tiledb=2.16.3=he15c4da_3
- ukkonen=1.0.1=py311he4fd1f5_4
- uvicorn=0.24.0=py311h267d04e_0
- - watchfiles=0.20.0=py311h0563b04_2
- - wcwidth=0.2.10=pyhd8ed1ab_0
+ - virtualenv=20.24.7=pyhd8ed1ab_0
+ - watchfiles=0.21.0=py311h94f323b_0
- aiohttp=3.8.6=py311h05b510d_1
- alembic=1.12.1=pyhd8ed1ab_0
- - arelle-release=2.17.4=pyhd8ed1ab_0
+ - arelle-release=2.17.7=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h31542fa_7
- - black=23.10.1=py311h267d04e_0
- bottleneck=1.3.7=py311hb49d859_1
- cachecontrol=0.13.1=pyhd8ed1ab_0
- contourpy=1.2.0=py311hd03642b_0
@@ -443,64 +444,65 @@ dependencies:
- grpcio-status=1.59.2=pyhd8ed1ab_0
- gtk2=2.24.33=h57013de_2
- h3-py=3.7.6=py311ha891d26_1
- - httpx=0.25.1=pyhd8ed1ab_0
- - identify=2.5.31=pyhd8ed1ab_0
+ - httpx=0.25.2=pyhd8ed1ab_0
+ - identify=2.5.32=pyhd8ed1ab_0
+ - ipython=8.18.1=pyh31011fe_1
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- - jupyter_core=5.5.0=py311h267d04e_0
+ - jupyter_client=8.6.0=pyhd8ed1ab_0
- keyring=24.3.0=py311h267d04e_0
- - libgdal=3.8.0=h751e6a0_4
+ - libgdal=3.8.0=h76f3012_6
- librsvg=2.56.3=h0db3404_0
- numba=0.58.1=py311h9ec4793_0
- numexpr=2.8.7=py311h6e08293_4
- oauthlib=3.2.2=pyhd8ed1ab_0
- pandas=2.1.3=py311h6e08293_0
- - prompt-toolkit=3.0.41=pyha770c72_0
- pybtex-docutils=1.0.3=py311h267d04e_1
+ - pydantic=2.5.2=pyhd8ed1ab_0
- pyopenssl=23.3.0=pyhd8ed1ab_0
- readthedocs-sphinx-ext=2.2.3=pyhd8ed1ab_0
- requests-toolbelt=0.10.1=pyhd8ed1ab_0
- responses=0.24.1=pyhd8ed1ab_0
- - s3transfer=0.7.0=pyhd8ed1ab_0
- - scipy=1.11.3=py311h93d07a4_1
+ - s3transfer=0.8.2=pyhd8ed1ab_0
+ - scipy=1.11.4=py311h2b215a9_0
- send2trash=1.8.2=pyhd1c38e8_0
- - shapely=2.0.2=py311h4826c84_0
+ - shapely=2.0.2=py311h0815064_1
- stevedore=5.1.0=pyhd8ed1ab_0
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0=ha1ab1f8_0
- - virtualenv=20.24.6=pyhd8ed1ab_0
- - boto3=1.29.2=pyhd8ed1ab_0
+ - boto3=1.33.3=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- dagster=1.5.9=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.8.0=py311h32a4f3d_4
+ - gdal=3.8.0=py311h32a4f3d_6
- geopandas-base=0.14.1=pyha770c72_0
- google-auth=2.23.4=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- - graphviz=8.1.0=h10878c0_0
+ - graphviz=9.0.0=h3face73_1
+ - ipykernel=6.26.0=pyh3cd1d5f_0
+ - ipywidgets=8.1.1=pyhd8ed1ab_0
- jsonschema-with-format-nongpl=4.20.0=pyhd8ed1ab_0
- - jupyter_client=8.6.0=pyhd8ed1ab_0
- libarrow=14.0.1=h8dffd16_3_cpu
- - matplotlib-base=3.8.1=py311hfdba5f6_0
+ - matplotlib-base=3.8.2=py311hfdba5f6_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
- pre-commit=3.5.0=pyha770c72_0
- - prompt_toolkit=3.0.41=hd8ed1ab_0
+ - pydantic-settings=2.1.0=pyhd8ed1ab_1
- requests-oauthlib=1.3.1=pyhd8ed1ab_0
- scikit-learn=1.3.2=py311ha25ca4d_1
- timezonefinder=6.2.0=py311h05b510d_2
- - catalystcoop.ferc_xbrl_extractor=1.2.1=pyhd8ed1ab_0
- - conda-lock=2.4.2=pyhd8ed1ab_0
+ - catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
+ - conda-lock=2.5.1=pyhd8ed1ab_0
- dagster-graphql=1.5.9=pyhd8ed1ab_0
- - dagster-postgres=0.21.9=pyhd8ed1ab_0
+ - dagster-postgres=0.21.9=pyhd8ed1ab_1
- fiona=1.9.5=py311h4760b73_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
- - ipython=8.17.2=pyh31c8845_0
+ - jupyter_console=6.6.3=pyhd8ed1ab_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- libarrow-acero=14.0.1=had9dd58_3_cpu
- libarrow-flight=14.0.1=h1011bfc_3_cpu
@@ -508,33 +510,30 @@ dependencies:
- libparquet=14.0.1=heaab74a_3_cpu
- mapclassify=2.6.1=pyhd8ed1ab_0
- nbclient=0.8.0=pyhd8ed1ab_0
- - pygraphviz=1.11=py311h5178850_1
+ - pygraphviz=1.11=py311h1df6e61_2
+ - qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- dagster-webserver=1.5.9=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- - ipykernel=6.26.0=pyh3cd1d5f_0
- - ipywidgets=8.1.1=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=had9dd58_3_cpu
- libarrow-flight-sql=14.0.1=h660fe36_3_cpu
- nbconvert-core=7.11.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_console=6.6.3=pyhd8ed1ab_0
- - jupyter_server=2.10.1=pyhd8ed1ab_0
+ - jupyter_server=2.11.1=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h594d712_3_cpu
- nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
- - qtconsole-base=5.5.1=pyha770c72_0
- gcsfs=2023.10.0=pyhd8ed1ab_0
- - jupyter-lsp=2.2.0=pyhd8ed1ab_0
+ - jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- - jupyterlab_server=2.25.1=pyhd8ed1ab_0
+ - jupyterlab_server=2.25.2=pyhd8ed1ab_0
- nbconvert=7.11.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- pyarrow=14.0.1=py311h637fcfe_3_cpu
- - jupyterlab=4.0.8=pyhd8ed1ab_0
+ - jupyterlab=4.0.9=pyhd8ed1ab_0
- notebook=7.0.6=pyhd8ed1ab_0
- jupyter=1.0.0=pyhd8ed1ab_10
- sphinx-autoapi=3.0.0=pyhd8ed1ab_0
From 77712e6b80644b127befe14ec491a1a93f738a46 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 1 Dec 2023 19:07:41 +0000
Subject: [PATCH 63/70] Update conda-lock.yml and rendered conda environment
files.
---
environments/conda-linux-64.lock.yml | 30 +-
environments/conda-lock.yml | 380 +++++++++++++-------------
environments/conda-osx-64.lock.yml | 26 +-
environments/conda-osx-arm64.lock.yml | 26 +-
4 files changed, 231 insertions(+), 231 deletions(-)
diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml
index 5f8eb23336..f0c5b6d421 100644
--- a/environments/conda-linux-64.lock.yml
+++ b/environments/conda-linux-64.lock.yml
@@ -26,7 +26,7 @@ dependencies:
- libgcc-ng=13.2.0=h807b86a_3
- aws-c-common=0.9.8=hd590300_0
- bzip2=1.0.8=hd590300_5
- - c-ares=1.22.1=hd590300_0
+ - c-ares=1.23.0=hd590300_0
- fribidi=1.0.10=h36c2ea0_0
- geos=3.12.1=h59595ed_0
- gettext=0.21.1=h27087fc_0
@@ -65,7 +65,7 @@ dependencies:
- openssl=3.1.4=hd590300_0
- pixman=0.42.2=h59595ed_0
- pthread-stubs=0.4=h36c2ea0_1001
- - rdma-core=28.9=h59595ed_1
+ - rdma-core=49.0=hd3aeb46_1
- snappy=1.1.10=h9fff704_0
- tzcode=2023c=h0b41bf4_0
- uriparser=0.9.7=hcb278e6_1
@@ -106,7 +106,7 @@ dependencies:
- readline=8.2=h8228510_1
- s2n=1.3.56=h06160fa_0
- tk=8.6.13=noxft_h4845f30_101
- - ucx=1.15.0=h64cca9d_0
+ - ucx=1.15.0=hae80064_1
- xorg-libsm=1.2.4=h7391055_0
- zeromq=4.3.5=h59595ed_0
- zlib=1.2.13=hd590300_5
@@ -160,7 +160,7 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.9=pyhd8ed1ab_0
+ - dagster-pipes=1.5.10=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- dbus=1.13.6=h5008d03_3
- debugpy=1.8.0=py311hb755f60_1
@@ -401,7 +401,7 @@ dependencies:
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- aws-c-s3=0.4.1=hfadff92_0
- - botocore=1.33.3=pyhd8ed1ab_0
+ - botocore=1.33.5=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311h63ff55d_0
@@ -416,7 +416,7 @@ dependencies:
- harfbuzz=8.3.0=h3d44ed6_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- - jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
+ - jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h38be061_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=hcd42e92_1
@@ -441,10 +441,10 @@ dependencies:
- rich=13.7.0=pyhd8ed1ab_0
- sqlalchemy=2.0.23=py311h459d7ec_0
- stack_data=0.6.2=pyhd8ed1ab_0
- - starlette=0.32.0.post1=pyhd8ed1ab_0
+ - starlette=0.33.0=pyhd8ed1ab_0
- tiledb=2.16.3=h8c794c1_3
- ukkonen=1.0.1=py311h9547e67_4
- - uvicorn=0.24.0=py311h38be061_0
+ - uvicorn=0.24.0.post1=py311h38be061_0
- virtualenv=20.24.7=pyhd8ed1ab_0
- watchfiles=0.21.0=py311h46250e7_0
- aiohttp=3.8.6=py311h459d7ec_1
@@ -488,18 +488,18 @@ dependencies:
- stevedore=5.1.0=pyhd8ed1ab_0
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- - uvicorn-standard=0.24.0=h38be061_0
+ - uvicorn-standard=0.24.0.post1=h38be061_0
- aws-sdk-cpp=1.11.182=h8beafcf_7
- - boto3=1.33.3=pyhd8ed1ab_0
+ - boto3=1.33.5=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.9=pyhd8ed1ab_0
+ - dagster=1.5.10=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- gdal=3.8.0=py311h815a124_6
- geopandas-base=0.14.1=pyha770c72_0
- - google-auth=2.23.4=pyhca7485f_0
+ - google-auth=2.24.0=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- gtk2=2.24.33=h90689f9_2
- ipykernel=6.26.0=pyhf8b6a83_0
@@ -517,8 +517,8 @@ dependencies:
- timezonefinder=6.2.0=py311h459d7ec_2
- catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
- conda-lock=2.5.1=pyhd8ed1ab_0
- - dagster-graphql=1.5.9=pyhd8ed1ab_0
- - dagster-postgres=0.21.9=pyhd8ed1ab_1
+ - dagster-graphql=1.5.10=pyhd8ed1ab_0
+ - dagster-postgres=0.21.10=pyhd8ed1ab_0
- fiona=1.9.5=py311hf8e0aa6_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
@@ -531,7 +531,7 @@ dependencies:
- qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.9=pyhd8ed1ab_0
+ - dagster-webserver=1.5.10=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- libarrow-acero=14.0.1=h59595ed_3_cpu
diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml
index 89512fd344..e43f4fd844 100644
--- a/environments/conda-lock.yml
+++ b/environments/conda-lock.yml
@@ -1914,52 +1914,52 @@ package:
category: main
optional: false
- name: boto3
- version: 1.33.3
+ version: 1.33.5
manager: conda
platform: linux-64
dependencies:
- botocore: ">=1.33.3,<1.34.0"
+ botocore: ">=1.33.5,<1.34.0"
jmespath: ">=0.7.1,<2.0.0"
python: ">=3.7"
- s3transfer: ">=0.8.0,<0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.3-pyhd8ed1ab_0.conda
+ s3transfer: ">=0.8.2,<0.9.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.5-pyhd8ed1ab_0.conda
hash:
- md5: d642fa88c5f9de6caaea3c06018aa676
- sha256: 0fdff135ddeb1baa41f16ffcaab8537ad757857e977172c120bd5ed18676a5f1
+ md5: 7485d3ee00269cd33baa2ad64a0923ee
+ sha256: babecba07e296dc4cd26580427508e7734c522d1488a7f94a1f13204de3ca856
category: main
optional: false
- name: boto3
- version: 1.33.3
+ version: 1.33.5
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
jmespath: ">=0.7.1,<2.0.0"
- s3transfer: ">=0.8.0,<0.9.0"
- botocore: ">=1.33.3,<1.34.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.3-pyhd8ed1ab_0.conda
+ s3transfer: ">=0.8.2,<0.9.0"
+ botocore: ">=1.33.5,<1.34.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.5-pyhd8ed1ab_0.conda
hash:
- md5: d642fa88c5f9de6caaea3c06018aa676
- sha256: 0fdff135ddeb1baa41f16ffcaab8537ad757857e977172c120bd5ed18676a5f1
+ md5: 7485d3ee00269cd33baa2ad64a0923ee
+ sha256: babecba07e296dc4cd26580427508e7734c522d1488a7f94a1f13204de3ca856
category: main
optional: false
- name: boto3
- version: 1.33.3
+ version: 1.33.5
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
jmespath: ">=0.7.1,<2.0.0"
- s3transfer: ">=0.8.0,<0.9.0"
- botocore: ">=1.33.3,<1.34.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.3-pyhd8ed1ab_0.conda
+ s3transfer: ">=0.8.2,<0.9.0"
+ botocore: ">=1.33.5,<1.34.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.5-pyhd8ed1ab_0.conda
hash:
- md5: d642fa88c5f9de6caaea3c06018aa676
- sha256: 0fdff135ddeb1baa41f16ffcaab8537ad757857e977172c120bd5ed18676a5f1
+ md5: 7485d3ee00269cd33baa2ad64a0923ee
+ sha256: babecba07e296dc4cd26580427508e7734c522d1488a7f94a1f13204de3ca856
category: main
optional: false
- name: botocore
- version: 1.33.3
+ version: 1.33.5
manager: conda
platform: linux-64
dependencies:
@@ -1967,14 +1967,14 @@ package:
python: ">=3.7"
python-dateutil: ">=2.1,<3.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda
hash:
- md5: 861cb6464f236f2d93017782d6ee93ab
- sha256: 235d5fae34acdc61c8a52043d927fe1b2426135dda8113a27198b9f210f91c2b
+ md5: 352c39ba5cd9ea01996358f0748e102e
+ sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14
category: main
optional: false
- name: botocore
- version: 1.33.3
+ version: 1.33.5
manager: conda
platform: osx-64
dependencies:
@@ -1982,14 +1982,14 @@ package:
python-dateutil: ">=2.1,<3.0.0"
jmespath: ">=0.7.1,<2.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda
hash:
- md5: 861cb6464f236f2d93017782d6ee93ab
- sha256: 235d5fae34acdc61c8a52043d927fe1b2426135dda8113a27198b9f210f91c2b
+ md5: 352c39ba5cd9ea01996358f0748e102e
+ sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14
category: main
optional: false
- name: botocore
- version: 1.33.3
+ version: 1.33.5
manager: conda
platform: osx-arm64
dependencies:
@@ -1997,10 +1997,10 @@ package:
python-dateutil: ">=2.1,<3.0.0"
jmespath: ">=0.7.1,<2.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda
hash:
- md5: 861cb6464f236f2d93017782d6ee93ab
- sha256: 235d5fae34acdc61c8a52043d927fe1b2426135dda8113a27198b9f210f91c2b
+ md5: 352c39ba5cd9ea01996358f0748e102e
+ sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14
category: main
optional: false
- name: bottleneck
@@ -2246,37 +2246,37 @@ package:
category: main
optional: false
- name: c-ares
- version: 1.22.1
+ version: 1.23.0
manager: conda
platform: linux-64
dependencies:
libgcc-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.22.1-hd590300_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.23.0-hd590300_0.conda
hash:
- md5: 8430bd266c7b2cfbda403f7585d5ee86
- sha256: d41cf87938ba66de538b91afed3ece9b4cf5ed082a7d1c1add46b70f482f34b9
+ md5: d459949bc10f64dee1595c176c2e6291
+ sha256: 6b0eee827bade11c2964a05867499a50ad2a9d1b14dfe18fb867a3bc9357f56f
category: main
optional: false
- name: c-ares
- version: 1.22.1
+ version: 1.23.0
manager: conda
platform: osx-64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.22.1-h10d778d_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.23.0-h10d778d_0.conda
hash:
- md5: 7040d0624b78a81c8d52f22b662d7c35
- sha256: e52123d4d1e880ad883da1fa6301fa318e87cf42b6228833177d41053f7288b4
+ md5: 8da823fabbad661eefc48b779d89a4ac
+ sha256: d1080366254a32bd1ff23f10fcfe61bfb91e2af19e71047fc2ffddd062a59033
category: main
optional: false
- name: c-ares
- version: 1.22.1
+ version: 1.23.0
manager: conda
platform: osx-arm64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.22.1-h93a5062_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.23.0-h93a5062_0.conda
hash:
- md5: f9d38cc3908c066e50b184cdcab12929
- sha256: 75f0222f76c9848ef9c3892300d057cb8285f28341d2f149d1fc10373242969c
+ md5: b187f2b99e52905042d661f824666964
+ sha256: de5385280dcad805428068adb1f4a7eb1e6ec8987e2f25c4ff5766e3fec3b4a2
category: main
optional: false
- name: ca-certificates
@@ -3792,7 +3792,7 @@ package:
category: main
optional: false
- name: dagster
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: linux-64
dependencies:
@@ -3800,7 +3800,7 @@ package:
click: ">=5.0"
coloredlogs: ">=6.1,<=14.0"
croniter: ">=0.3.34"
- dagster-pipes: ">=1.5.9,<1.5.10.0a0"
+ dagster-pipes: ">=1.5.10,<1.5.11.0a0"
docstring_parser: ""
grpcio: ">=1.44.0"
grpcio-health-checking: ">=1.44.0"
@@ -3826,14 +3826,14 @@ package:
typing_extensions: ">=4.4.0"
universal_pathlib: ""
watchdog: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: d8ab27112f82687ffcd456a3b88092e5
- sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
+ md5: bcf42b675edb2999669116bc3b1ed789
+ sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c
category: main
optional: false
- name: dagster
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-64
dependencies:
@@ -3866,15 +3866,15 @@ package:
alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
pydantic: ">1.10.0,!=1.10.7"
pendulum: <3
- dagster-pipes: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
+ dagster-pipes: ">=1.5.10,<1.5.11.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: d8ab27112f82687ffcd456a3b88092e5
- sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
+ md5: bcf42b675edb2999669116bc3b1ed789
+ sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c
category: main
optional: false
- name: dagster
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-arm64
dependencies:
@@ -3907,32 +3907,32 @@ package:
alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
pydantic: ">1.10.0,!=1.10.7"
pendulum: <3
- dagster-pipes: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.9-pyhd8ed1ab_0.conda
+ dagster-pipes: ">=1.5.10,<1.5.11.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: d8ab27112f82687ffcd456a3b88092e5
- sha256: 238b08bf9afbc98405cb0c8c9845514da7b4b21aac5817c2b5f0de04e3a19b1b
+ md5: bcf42b675edb2999669116bc3b1ed789
+ sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c
category: main
optional: false
- name: dagster-graphql
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: linux-64
dependencies:
- dagster: ">=1.5.9,<1.5.10.0a0"
+ dagster: ">=1.5.10,<1.5.11.0a0"
gql-with-requests: ">=3.0.0"
graphene: ">=3"
python: ">=3.8"
requests: ""
starlette: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 7dcd105a5451f9800aa6de278d86db72
- sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ md5: fd3569582db65a0c88fbc7d1bb803853
+ sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129
category: dev
optional: true
- name: dagster-graphql
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-64
dependencies:
@@ -3941,15 +3941,15 @@ package:
python: ">=3.8"
graphene: ">=3"
gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.10,<1.5.11.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 7dcd105a5451f9800aa6de278d86db72
- sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ md5: fd3569582db65a0c88fbc7d1bb803853
+ sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129
category: dev
optional: true
- name: dagster-graphql
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-arm64
dependencies:
@@ -3958,110 +3958,110 @@ package:
python: ">=3.8"
graphene: ">=3"
gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.9-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.10,<1.5.11.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 7dcd105a5451f9800aa6de278d86db72
- sha256: 8484c6b0db1a3505fc7d16e83e0da75b9c886ae3d497266fd06f72fcd3246786
+ md5: fd3569582db65a0c88fbc7d1bb803853
+ sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129
category: dev
optional: true
- name: dagster-pipes
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 0a9787859365c4d2425e589ac53c462b
- sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
+ md5: 69600c68efc23fb84c05c2e9c1c05947
+ sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630
category: main
optional: false
- name: dagster-pipes
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 0a9787859365c4d2425e589ac53c462b
- sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
+ md5: 69600c68efc23fb84c05c2e9c1c05947
+ sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630
category: main
optional: false
- name: dagster-pipes
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 0a9787859365c4d2425e589ac53c462b
- sha256: eebc7dca517350678ebfb8b3fff7ec47c60aff62dae2e69b8c4845b6080ec3e8
+ md5: 69600c68efc23fb84c05c2e9c1c05947
+ sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630
category: main
optional: false
- name: dagster-postgres
- version: 0.21.9
+ version: 0.21.10
manager: conda
platform: linux-64
dependencies:
- dagster: 1.5.9.*
+ dagster: 1.5.10.*
psycopg2-binary: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda
hash:
- md5: 8c1a941fe77b920b1c7933a7a0c6bf2e
- sha256: 0e947f376d6878bd8e505932277e84c373da492a38d2c4ef9d96fc25f5327845
+ md5: ec155b3a7172590ccbc89f461427b5aa
+ sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0
category: main
optional: false
- name: dagster-postgres
- version: 0.21.9
+ version: 0.21.10
manager: conda
platform: osx-64
dependencies:
psycopg2-binary: ""
python: ">=3.8"
- dagster: 1.5.9.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_1.conda
+ dagster: 1.5.10.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda
hash:
- md5: 8c1a941fe77b920b1c7933a7a0c6bf2e
- sha256: 0e947f376d6878bd8e505932277e84c373da492a38d2c4ef9d96fc25f5327845
+ md5: ec155b3a7172590ccbc89f461427b5aa
+ sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0
category: main
optional: false
- name: dagster-postgres
- version: 0.21.9
+ version: 0.21.10
manager: conda
platform: osx-arm64
dependencies:
psycopg2-binary: ""
python: ">=3.8"
- dagster: 1.5.9.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.9-pyhd8ed1ab_1.conda
+ dagster: 1.5.10.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda
hash:
- md5: 8c1a941fe77b920b1c7933a7a0c6bf2e
- sha256: 0e947f376d6878bd8e505932277e84c373da492a38d2c4ef9d96fc25f5327845
+ md5: ec155b3a7172590ccbc89f461427b5aa
+ sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0
category: main
optional: false
- name: dagster-webserver
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: linux-64
dependencies:
click: ">=7.0,<9.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- dagster-graphql: ">=1.5.9,<1.5.10.0a0"
+ dagster: ">=1.5.10,<1.5.11.0a0"
+ dagster-graphql: ">=1.5.10,<1.5.11.0a0"
python: ">=3.8"
starlette: ""
uvicorn-standard: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 880fa7acdbf3494cef45759bb866bb63
- sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
+ md5: 6161623733c03c21098dce0af904ea6b
+ sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88
category: dev
optional: true
- name: dagster-webserver
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-64
dependencies:
@@ -4069,16 +4069,16 @@ package:
uvicorn-standard: ""
python: ">=3.8"
click: ">=7.0,<9.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- dagster-graphql: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.10,<1.5.11.0a0"
+ dagster-graphql: ">=1.5.10,<1.5.11.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 880fa7acdbf3494cef45759bb866bb63
- sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
+ md5: 6161623733c03c21098dce0af904ea6b
+ sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88
category: dev
optional: true
- name: dagster-webserver
- version: 1.5.9
+ version: 1.5.10
manager: conda
platform: osx-arm64
dependencies:
@@ -4086,12 +4086,12 @@ package:
uvicorn-standard: ""
python: ">=3.8"
click: ">=7.0,<9.0"
- dagster: ">=1.5.9,<1.5.10.0a0"
- dagster-graphql: ">=1.5.9,<1.5.10.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.9-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.10,<1.5.11.0a0"
+ dagster-graphql: ">=1.5.10,<1.5.11.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda
hash:
- md5: 880fa7acdbf3494cef45759bb866bb63
- sha256: 2fce08b607d97f72d7452350a0c917d96419074381bf8791ebe116ec3a57b8f4
+ md5: 6161623733c03c21098dce0af904ea6b
+ sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88
category: dev
optional: true
- name: dask-core
@@ -6470,7 +6470,7 @@ package:
category: main
optional: false
- name: google-auth
- version: 2.23.4
+ version: 2.24.0
manager: conda
platform: linux-64
dependencies:
@@ -6483,14 +6483,14 @@ package:
pyu2f: ">=0.1.5"
requests: ">=2.20.0,<3.0.0"
rsa: ">=3.1.4,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.24.0-pyhca7485f_0.conda
hash:
- md5: 9ad01e23627db9def3104ba78fd19229
- sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
+ md5: 5c80374ea4c24d3bd6822108d43715d0
+ sha256: c270d1866bd01f3fa97e5c65496b853af6b1c8d58479132c8b3397534fbb2919
category: main
optional: false
- name: google-auth
- version: 2.23.4
+ version: 2.24.0
manager: conda
platform: osx-64
dependencies:
@@ -6503,14 +6503,14 @@ package:
cachetools: ">=2.0.0,<6.0"
aiohttp: ">=3.6.2,<4.0.0"
cryptography: ">=38.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.24.0-pyhca7485f_0.conda
hash:
- md5: 9ad01e23627db9def3104ba78fd19229
- sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
+ md5: 5c80374ea4c24d3bd6822108d43715d0
+ sha256: c270d1866bd01f3fa97e5c65496b853af6b1c8d58479132c8b3397534fbb2919
category: main
optional: false
- name: google-auth
- version: 2.23.4
+ version: 2.24.0
manager: conda
platform: osx-arm64
dependencies:
@@ -6523,10 +6523,10 @@ package:
cachetools: ">=2.0.0,<6.0"
aiohttp: ">=3.6.2,<4.0.0"
cryptography: ">=38.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.23.4-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.24.0-pyhca7485f_0.conda
hash:
- md5: 9ad01e23627db9def3104ba78fd19229
- sha256: 1319ebc61518025e3bd7de38d27d254d8dcc61cc3b7d9fd1f62148ae614c8657
+ md5: 5c80374ea4c24d3bd6822108d43715d0
+ sha256: c270d1866bd01f3fa97e5c65496b853af6b1c8d58479132c8b3397534fbb2919
category: main
optional: false
- name: google-auth-oauthlib
@@ -9244,45 +9244,45 @@ package:
category: main
optional: false
- name: jsonschema-specifications
- version: 2023.11.1
+ version: 2023.11.2
manager: conda
platform: linux-64
dependencies:
importlib_resources: ">=1.4.0"
python: ">=3.8"
referencing: ">=0.31.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.2-pyhd8ed1ab_0.conda
hash:
- md5: 094ff9cf36957f95bb74cee42ab140b2
- sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
+ md5: 73884ca36d6d96cbce498cde99fab40f
+ sha256: e26115d02dc208a05b557c8dd670923270803b9b3b8af4e22b93d659d1ec77ec
category: main
optional: false
- name: jsonschema-specifications
- version: 2023.11.1
+ version: 2023.11.2
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
importlib_resources: ">=1.4.0"
referencing: ">=0.31.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.2-pyhd8ed1ab_0.conda
hash:
- md5: 094ff9cf36957f95bb74cee42ab140b2
- sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
+ md5: 73884ca36d6d96cbce498cde99fab40f
+ sha256: e26115d02dc208a05b557c8dd670923270803b9b3b8af4e22b93d659d1ec77ec
category: main
optional: false
- name: jsonschema-specifications
- version: 2023.11.1
+ version: 2023.11.2
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
importlib_resources: ">=1.4.0"
referencing: ">=0.31.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.11.2-pyhd8ed1ab_0.conda
hash:
- md5: 094ff9cf36957f95bb74cee42ab140b2
- sha256: 17ac31b620a7bb81c6468b4ba9ad4aeb1c6c6669e9dd7e4ad909da48702a6091
+ md5: 73884ca36d6d96cbce498cde99fab40f
+ sha256: e26115d02dc208a05b557c8dd670923270803b9b3b8af4e22b93d659d1ec77ec
category: main
optional: false
- name: jsonschema-with-format-nongpl
@@ -14502,8 +14502,8 @@ package:
entrypoints: ">=0.2.2"
traitlets: ">=5.0"
markupsafe: ">=2.0"
- pandocfilters: ">=1.4.1"
jupyter_core: ">=4.7"
+ pandocfilters: ">=1.4.1"
nbformat: ">=5.1"
pygments: ">=2.4.1"
nbclient: ">=0.5.0"
@@ -14530,8 +14530,8 @@ package:
entrypoints: ">=0.2.2"
traitlets: ">=5.0"
markupsafe: ">=2.0"
- pandocfilters: ">=1.4.1"
jupyter_core: ">=4.7"
+ pandocfilters: ">=1.4.1"
nbformat: ">=5.1"
pygments: ">=2.4.1"
nbclient: ">=0.5.0"
@@ -18953,17 +18953,17 @@ package:
category: main
optional: false
- name: rdma-core
- version: "28.9"
+ version: "49.0"
manager: conda
platform: linux-64
dependencies:
__glibc: ">=2.17,<3.0.a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
- url: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/rdma-core-49.0-hd3aeb46_1.conda
hash:
- md5: aeffb7c06b5f65e55e6c637408dc4100
- sha256: 832f9393ab3144ce6468c6f150db9d398fad4451e96a8879afb3059f0c9902f6
+ md5: 434d42b3ee35e1aaf6bb42d87730d1a4
+ sha256: dca608dd54c7782f15b6a99220fa1ac8f744c1e183ba69b5d0f29c5be85865b1
category: main
optional: false
- name: re2
@@ -21167,45 +21167,45 @@ package:
category: main
optional: false
- name: starlette
- version: 0.32.0.post1
+ version: 0.33.0
manager: conda
platform: linux-64
dependencies:
anyio: <5,>=3.4.0
python: ">=3.8"
typing_extensions: ">=3.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.33.0-pyhd8ed1ab_0.conda
hash:
- md5: 9aa6d56db739eee2ff473becbe178fd1
- sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
+ md5: 55027cf7f50803f0f5ece8b661eff47b
+ sha256: 3923f4c3e31d8c3a9c574779585137ff834a6108558a8956ef93022d4fcb37a8
category: dev
optional: true
- name: starlette
- version: 0.32.0.post1
+ version: 0.33.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
typing_extensions: ">=3.10.0"
anyio: <5,>=3.4.0
- url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.33.0-pyhd8ed1ab_0.conda
hash:
- md5: 9aa6d56db739eee2ff473becbe178fd1
- sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
+ md5: 55027cf7f50803f0f5ece8b661eff47b
+ sha256: 3923f4c3e31d8c3a9c574779585137ff834a6108558a8956ef93022d4fcb37a8
category: dev
optional: true
- name: starlette
- version: 0.32.0.post1
+ version: 0.33.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
typing_extensions: ">=3.10.0"
anyio: <5,>=3.4.0
- url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.32.0.post1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.33.0-pyhd8ed1ab_0.conda
hash:
- md5: 9aa6d56db739eee2ff473becbe178fd1
- sha256: 9692b83467670b473dc71137376f735249ef2ee6eeefce9068b0dec94810c24c
+ md5: 55027cf7f50803f0f5ece8b661eff47b
+ sha256: 3923f4c3e31d8c3a9c574779585137ff834a6108558a8956ef93022d4fcb37a8
category: dev
optional: true
- name: stevedore
@@ -22450,11 +22450,11 @@ package:
libgcc-ng: ">=12"
libnuma: ">=2.0.16,<3.0a0"
libstdcxx-ng: ">=12"
- rdma-core: ">=28.9,<29.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h64cca9d_0.conda
+ rdma-core: ">=48.0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-hae80064_1.conda
hash:
- md5: b35b1f1a9fdbf93266c91f297dc9060e
- sha256: 8a4dce10304fee0df715addec3d078421aa7aa0824422a6630d621d15bd98e5f
+ md5: c0413425844278251c1cc9459386339b
+ sha256: f511a735bf7a0b56c5ae48839e2248d46a922ffc6ad8ea2da7617485faa70c6f
category: main
optional: false
- name: ukkonen
@@ -22694,7 +22694,7 @@ package:
category: main
optional: false
- name: uvicorn
- version: 0.24.0
+ version: 0.24.0.post1
manager: conda
platform: linux-64
dependencies:
@@ -22702,14 +22702,14 @@ package:
h11: ">=0.8"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.24.0-py311h38be061_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.24.0.post1-py311h38be061_0.conda
hash:
- md5: a6eb331b0b42251227dbdfb5838c287b
- sha256: df5269d01ba7ae8fa7cc0d822a63db7a646005c689e8a90083f145a707df6035
+ md5: 2b1938535dcb0385f024f6fa66eb63ad
+ sha256: e79e66a3baa0fc0ae6d3ca28305a5222f9f3f451d95369a9a6a8a13fbaa20eaa
category: main
optional: false
- name: uvicorn
- version: 0.24.0
+ version: 0.24.0.post1
manager: conda
platform: osx-64
dependencies:
@@ -22717,14 +22717,14 @@ package:
h11: ">=0.8"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-0.24.0-py311h6eed73b_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-0.24.0.post1-py311h6eed73b_0.conda
hash:
- md5: 62249aa566e8be9286966278a6582e1a
- sha256: ab7aa3875fbafd7912b97616573741508e140446fa9819ba870788677ba8fba3
+ md5: 84b59bc83d504ffdceaa08a16fbb0b03
+ sha256: 092a4960fff7aa0263974cfdbf0eee85d53032633293be73bcf971f259fdf869
category: main
optional: false
- name: uvicorn
- version: 0.24.0
+ version: 0.24.0.post1
manager: conda
platform: osx-arm64
dependencies:
@@ -22732,14 +22732,14 @@ package:
h11: ">=0.8"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/uvicorn-0.24.0-py311h267d04e_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/uvicorn-0.24.0.post1-py311h267d04e_0.conda
hash:
- md5: ed05fec89baaa5869db4e27bf4d510dc
- sha256: 275934feb0e2cdfacd65414d8e54d3a9aa0e703f11a52ca3a0485df04a51cf77
+ md5: 72fa7ae2d42c1b919afc2a05c94366da
+ sha256: 092af8de831585eea0c8980a06194ffcd558a41744b17028f7d81dc333726351
category: main
optional: false
- name: uvicorn-standard
- version: 0.24.0
+ version: 0.24.0.post1
manager: conda
platform: linux-64
dependencies:
@@ -22747,18 +22747,18 @@ package:
python-dotenv: ">=0.13"
python_abi: 3.11.*
pyyaml: ">=5.1"
- uvicorn: 0.24.0
+ uvicorn: 0.24.0.post1
uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
watchfiles: ">=0.13"
websockets: ">=10.4"
- url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-standard-0.24.0-h38be061_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/uvicorn-standard-0.24.0.post1-h38be061_0.conda
hash:
- md5: e8143a99cadb40ba9542e6e9ff15d862
- sha256: dc23a3aff61791522ab1d924c0f6b67468c3c72772c5ca690158c160ae42ac33
+ md5: bc7779ba8fab689013281f98989f321e
+ sha256: c0cd1953e1bc87120dce855ee38828bfdf9c66d64dc2796c49b40cd69cfc09cd
category: dev
optional: true
- name: uvicorn-standard
- version: 0.24.0
+ version: 0.24.0.post1
manager: conda
platform: osx-64
dependencies:
@@ -22766,18 +22766,18 @@ package:
python-dotenv: ">=0.13"
python_abi: 3.11.*
pyyaml: ">=5.1"
- uvicorn: 0.24.0
+ uvicorn: 0.24.0.post1
uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
watchfiles: ">=0.13"
websockets: ">=10.4"
- url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-standard-0.24.0-h6eed73b_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/uvicorn-standard-0.24.0.post1-h6eed73b_0.conda
hash:
- md5: fcfded7537383dc21fc53708048fb40f
- sha256: 30476332eed1f448bfe769dcdf8a5a68e55587980026eae317c2a84b17daac2b
+ md5: fc3f047cd7236a5d906b828a9bbec38b
+ sha256: b8885240415223f1e176c8a0af7f3dd5b39cf303338425f75befb591e23c7c1d
category: dev
optional: true
- name: uvicorn-standard
- version: 0.24.0
+ version: 0.24.0.post1
manager: conda
platform: osx-arm64
dependencies:
@@ -22785,14 +22785,14 @@ package:
python-dotenv: ">=0.13"
python_abi: 3.11.*
pyyaml: ">=5.1"
- uvicorn: 0.24.0
+ uvicorn: 0.24.0.post1
uvloop: ">=0.14.0,!=0.15.0,!=0.15.1"
watchfiles: ">=0.13"
websockets: ">=10.4"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/uvicorn-standard-0.24.0-ha1ab1f8_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/uvicorn-standard-0.24.0.post1-ha1ab1f8_0.conda
hash:
- md5: e35093930996a0cd5668b020f880e0f2
- sha256: 391af506e734bd59d1a3b4611e27393b26ea6aa585070a63a45d4522a1fbd500
+ md5: e4c1c55ae8b7aab529ecf8211f4cc4e4
+ sha256: 92230fa9751494f3bc00c552803050cddf578e216421b3b7825a5d40dacea4d0
category: dev
optional: true
- name: uvloop
diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml
index ce89863ddc..cd652ccaa8 100644
--- a/environments/conda-osx-64.lock.yml
+++ b/environments/conda-osx-64.lock.yml
@@ -8,7 +8,7 @@ channels:
dependencies:
- aws-c-common=0.9.8=h10d778d_0
- bzip2=1.0.8=h10d778d_5
- - c-ares=1.22.1=h10d778d_0
+ - c-ares=1.23.0=h10d778d_0
- ca-certificates=2023.11.17=h8857fd0_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
@@ -152,7 +152,7 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.9=pyhd8ed1ab_0
+ - dagster-pipes=1.5.10=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- debugpy=1.8.0=py311hdf8f085_1
- decorator=5.1.1=pyhd8ed1ab_0
@@ -381,7 +381,7 @@ dependencies:
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- aws-crt-cpp=0.24.7=hf3941dc_6
- - botocore=1.33.3=pyhd8ed1ab_0
+ - botocore=1.33.5=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311hd51016d_0
@@ -395,7 +395,7 @@ dependencies:
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- - jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
+ - jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h6eed73b_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h052fcf7_1
@@ -421,10 +421,10 @@ dependencies:
- rich=13.7.0=pyhd8ed1ab_0
- sqlalchemy=2.0.23=py311he705e18_0
- stack_data=0.6.2=pyhd8ed1ab_0
- - starlette=0.32.0.post1=pyhd8ed1ab_0
+ - starlette=0.33.0=pyhd8ed1ab_0
- tiledb=2.16.3=hd3a41d5_3
- ukkonen=1.0.1=py311h5fe6e05_4
- - uvicorn=0.24.0=py311h6eed73b_0
+ - uvicorn=0.24.0.post1=py311h6eed73b_0
- virtualenv=20.24.7=pyhd8ed1ab_0
- watchfiles=0.21.0=py311h5e0f0e4_0
- aiohttp=3.8.6=py311he705e18_1
@@ -470,17 +470,17 @@ dependencies:
- stevedore=5.1.0=pyhd8ed1ab_0
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- - uvicorn-standard=0.24.0=h6eed73b_0
- - boto3=1.33.3=pyhd8ed1ab_0
+ - uvicorn-standard=0.24.0.post1=h6eed73b_0
+ - boto3=1.33.5=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.9=pyhd8ed1ab_0
+ - dagster=1.5.10=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- gdal=3.8.0=py311h5646c56_6
- geopandas-base=0.14.1=pyha770c72_0
- - google-auth=2.23.4=pyhca7485f_0
+ - google-auth=2.24.0=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- graphviz=9.0.0=hee74176_1
- ipykernel=6.26.0=pyh3cd1d5f_0
@@ -497,8 +497,8 @@ dependencies:
- timezonefinder=6.2.0=py311he705e18_2
- catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
- conda-lock=2.5.1=pyhd8ed1ab_0
- - dagster-graphql=1.5.9=pyhd8ed1ab_0
- - dagster-postgres=0.21.9=pyhd8ed1ab_1
+ - dagster-graphql=1.5.10=pyhd8ed1ab_0
+ - dagster-postgres=0.21.10=pyhd8ed1ab_0
- fiona=1.9.5=py311h809632c_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
@@ -514,7 +514,7 @@ dependencies:
- qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.9=pyhd8ed1ab_0
+ - dagster-webserver=1.5.10=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=hc222712_3_cpu
diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml
index dee2775760..f815132ca8 100644
--- a/environments/conda-osx-arm64.lock.yml
+++ b/environments/conda-osx-arm64.lock.yml
@@ -8,7 +8,7 @@ channels:
dependencies:
- aws-c-common=0.9.8=h93a5062_0
- bzip2=1.0.8=h93a5062_5
- - c-ares=1.22.1=h93a5062_0
+ - c-ares=1.23.0=h93a5062_0
- ca-certificates=2023.11.17=hf0a4a13_0
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
@@ -152,7 +152,7 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.9=pyhd8ed1ab_0
+ - dagster-pipes=1.5.10=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- debugpy=1.8.0=py311ha891d26_1
- decorator=5.1.1=pyhd8ed1ab_0
@@ -381,7 +381,7 @@ dependencies:
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- aws-crt-cpp=0.24.7=hba4ac3b_6
- - botocore=1.33.3=pyhd8ed1ab_0
+ - botocore=1.33.5=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.5=py311h71175c2_0
@@ -395,7 +395,7 @@ dependencies:
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=6.8.0=hd8ed1ab_0
- - jsonschema-specifications=2023.11.1=pyhd8ed1ab_0
+ - jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- jupyter_core=5.5.0=py311h267d04e_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h47b5e36_1
@@ -421,10 +421,10 @@ dependencies:
- rich=13.7.0=pyhd8ed1ab_0
- sqlalchemy=2.0.23=py311h05b510d_0
- stack_data=0.6.2=pyhd8ed1ab_0
- - starlette=0.32.0.post1=pyhd8ed1ab_0
+ - starlette=0.33.0=pyhd8ed1ab_0
- tiledb=2.16.3=he15c4da_3
- ukkonen=1.0.1=py311he4fd1f5_4
- - uvicorn=0.24.0=py311h267d04e_0
+ - uvicorn=0.24.0.post1=py311h267d04e_0
- virtualenv=20.24.7=pyhd8ed1ab_0
- watchfiles=0.21.0=py311h94f323b_0
- aiohttp=3.8.6=py311h05b510d_1
@@ -470,17 +470,17 @@ dependencies:
- stevedore=5.1.0=pyhd8ed1ab_0
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- - uvicorn-standard=0.24.0=ha1ab1f8_0
- - boto3=1.33.3=pyhd8ed1ab_0
+ - uvicorn-standard=0.24.0.post1=ha1ab1f8_0
+ - boto3=1.33.5=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.9=pyhd8ed1ab_0
+ - dagster=1.5.10=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- gdal=3.8.0=py311h32a4f3d_6
- geopandas-base=0.14.1=pyha770c72_0
- - google-auth=2.23.4=pyhca7485f_0
+ - google-auth=2.24.0=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- graphviz=9.0.0=h3face73_1
- ipykernel=6.26.0=pyh3cd1d5f_0
@@ -497,8 +497,8 @@ dependencies:
- timezonefinder=6.2.0=py311h05b510d_2
- catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
- conda-lock=2.5.1=pyhd8ed1ab_0
- - dagster-graphql=1.5.9=pyhd8ed1ab_0
- - dagster-postgres=0.21.9=pyhd8ed1ab_1
+ - dagster-graphql=1.5.10=pyhd8ed1ab_0
+ - dagster-postgres=0.21.10=pyhd8ed1ab_0
- fiona=1.9.5=py311h4760b73_1
- google-api-core=2.14.0=pyhd8ed1ab_0
- google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
@@ -514,7 +514,7 @@ dependencies:
- qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.9=pyhd8ed1ab_0
+ - dagster-webserver=1.5.10=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=had9dd58_3_cpu
From 1928c14d691129d048b35557a35b5437240258be Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Fri, 1 Dec 2023 19:44:21 +0000
Subject: [PATCH 64/70] [pre-commit.ci] auto fixes from pre-commit.com hooks
For more information, see https://pre-commit.ci
---
src/pudl/transform/eia.py | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/pudl/transform/eia.py b/src/pudl/transform/eia.py
index 9acf25d76a..d2d1a360ba 100644
--- a/src/pudl/transform/eia.py
+++ b/src/pudl/transform/eia.py
@@ -623,9 +623,7 @@ def harvest_entity_tables( # noqa: C901
required_resource_keys={"dataset_settings"},
io_manager_key="pudl_sqlite_io_manager",
)
-def core_eia860__assn_boiler_generator(
- context, **clean_dfs
-) -> pd.DataFrame: # noqa: C901
+def core_eia860__assn_boiler_generator(context, **clean_dfs) -> pd.DataFrame: # noqa: C901
"""Creates a set of more complete boiler generator associations.
Creates a unique unit_id_pudl for each collection of boilers and generators
From 5e85257e2a1e2c0d5f750bff9c136b0311f94e9a Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Fri, 1 Dec 2023 12:25:55 -0900
Subject: [PATCH 65/70] Remove intro.rst and update ferc s3 urls again
---
docs/index.rst | 15 ++--
docs/intro.rst | 238 -------------------------------------------------
2 files changed, 9 insertions(+), 244 deletions(-)
delete mode 100644 docs/intro.rst
diff --git a/docs/index.rst b/docs/index.rst
index ff75d5f13f..fc2ab28f78 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -34,12 +34,15 @@ We also publish SQLite databases containing relatively pristine versions of our
difficult to parse inputs, especially the old Visual FoxPro (DBF, pre-2021) and new XBRL
data (2021+) published by FERC:
-* `FERC Form 1 (DBF) `__
-* `FERC Form 1 (XBRL) `__
-* `FERC Form 2 (XBRL) `__
-* `FERC Form 6 (XBRL) `__
-* `FERC Form 60 (XBRL) `__
-* `FERC Form 714 (XBRL) `__
+* `FERC Form 1 (DBF) `__
+* `FERC Form 1 (XBRL) `__
+* `FERC Form 2 (DBF) `__
+* `FERC Form 2 (XBRL) `__
+* `FERC Form 6 (DBF) `__
+* `FERC Form 6 (XBRL) `__
+* `FERC Form 60 (DBF) `__
+* `FERC Form 60 (XBRL) `__
+* `FERC Form 714 (XBRL) `__
.. _raw-data-archive:
diff --git a/docs/intro.rst b/docs/intro.rst
deleted file mode 100644
index c3c85c1ab5..0000000000
--- a/docs/intro.rst
+++ /dev/null
@@ -1,238 +0,0 @@
-=======================================================================================
-Introduction
-=======================================================================================
-
-PUDL is a data processing pipeline created by `Catalyst Cooperative
-`__ that cleans, integrates, and standardizes some of the most
-widely used public energy datasets in the US. The data serve researchers, activists,
-journalists, and policy makers that might not have the technical expertise to access it
-in its raw form, the time to clean and prepare the data for bulk analysis, or the means
-to purchase it from existing commercial providers.
-
----------------------------------------------------------------------------------------
-Available Data
----------------------------------------------------------------------------------------
-
-We focus primarily on poorly curated data published by the US government in
-semi-structured but machine readable formats. For details on exactly what data is
-available from these data sources and what state it is in, see the the individual
-pages for each source:
-
-* :doc:`data_sources/eia860`
-* :doc:`data_sources/eia861`
-* :doc:`data_sources/eia923`
-* :doc:`data_sources/epacems`
-* :doc:`data_sources/ferc1`
-* :doc:`data_sources/ferc714`
-
-We also publish SQLite databases containing relatively pristine versions of our more
-difficult to parse inputs, especially the old Visual FoxPro (DBF, pre-2021) and new XBRL
-data (2021+) published by FERC:
-
-* `FERC Form 1 (DBF) `__
-* `FERC Form 1 (XBRL) `__
-* `FERC Form 2 (DBF) `__
-* `FERC Form 2 (XBRL) `__
-* `FERC Form 6 (DBF) `__
-* `FERC Form 6 (XBRL) `__
-* `FERC Form 60 (DBF) `__
-* `FERC Form 60 (XBRL) `__
-* `FERC Form 714 (XBRL) `__
-
-To get started using PUDL data, visit our :doc:`data_access` page, or continue reading
-to learn more about the PUDL data processing pipeline.
-
-.. _raw-data-archive:
-
----------------------------------------------------------------------------------------
-Raw Data Archives
----------------------------------------------------------------------------------------
-
-PUDL depends on "raw" data inputs from sources that are known to occasionally update
-their data or alter the published format. These changes may be incompatible with the way
-the data are read and interpreted by PUDL, so, to ensure the integrity of our data
-processing, we periodically create archives of `the raw inputs on Zenodo
-`__. Each of the data inputs may
-have several different versions archived, and all are assigned a unique DOI and made
-available through the REST API. Each release of the PUDL Python package is embedded
-with a set of of DOIs to indicate which version of the raw inputs it is meant to
-process. This process helps ensure that our outputs are replicable.
-
-To enable programmatic access to individual partitions of the data (by year, state,
-etc.), we archive the raw inputs as `Frictionless Data Packages
-`__. The data packages contain both the
-raw data in their originally published format (CSVs, Excel spreadsheets, and Visual
-FoxPro database (DBF) files) and metadata that describes how each the
-dataset is partitioned.
-
-The PUDL software will download a copy of the appropriate raw inputs automatically as
-needed and organize them in a local :doc:`datastore `.
-
-.. seealso::
-
- The software that creates and archives the raw inputs can be found in our
- `PUDL Archiver `__
- repository on GitHub.
-
-.. _etl-process:
-
----------------------------------------------------------------------------------------
-The ETL Process
----------------------------------------------------------------------------------------
-
-The core of PUDL's work takes place in the ETL (Extract, Transform, and Load)
-process.
-
-Extract
-^^^^^^^
-
-The Extract step reads the raw data from the original heterogeneous formats into a
-collection of :class:`pandas.DataFrame` with uniform column names across all years so
-that it can be easily processed in bulk. Data distributed as binary database files, such
-as the DBF files from FERC Form 1, may be converted into a unified SQLite database
-before individual dataframes are created.
-
-.. seealso::
-
- Module documentation within the :mod:`pudl.extract` subpackage.
-
-Transform
-^^^^^^^^^
-
-The Transform step is generally broken down into two phases. Phase one focuses on
-cleaning and organizing data within individual tables while phase two focuses on the
-integration and deduplication of data between tables. These tasks can be tedious
-`data wrangling toil `__ that impose a
-huge amount of overhead on anyone trying to do analysis based on the publicly
-available data. PUDL implements common data cleaning operations in the hopes that we
-can all work on more interesting problems most of the time. These operations include:
-
-* Standardization of units (e.g. dollars not thousands of dollars)
-* Standardization of N/A values
-* Standardization of freeform names and IDs
-* Use of controlled vocabularies for categorical values like fuel type
-* Use of more readable codes and column names
-* Imposition of well defined, rich data types for each column
-* Converting local timestamps to UTC
-* Reshaping of data into well normalized tables which minimize data duplication
-* Inferring Plant IDs which link records across many years of FERC Form 1 data
-* Inferring linkages between FERC and EIA Plants and Utilities.
-* Inferring more complete associations between EIA boilers and generators
-
-.. seealso::
-
- The module and per-table transform functions in the :mod:`pudl.transform`
- sub-package have more details on the specific transformations applied to each
- table.
-
-Many of the original datasets contain large amounts of duplicated data. For instance,
-the EIA reports the name of each power plant in every table that refers to otherwise
-unique plant-related data. Similarly, many attributes like plant latitude and
-longitude are reported separately every year. Often, these reported values are not
-self-consistent. There may be several different spellings of a plant's name, or an
-incorrectly reported latitude in one year.
-
-The transform step attempts to eliminate this kind of inconsistent and duplicate
-information when normalizing the tables by choosing only the most consistently reported
-value for inclusion in the final database. If a value which should be static is not
-consistently reported, it may also be set to N/A.
-
-.. seealso::
-
- * `Tidy Data `__ by Hadley
- Wickham, Journal of Statistical Software (2014).
- * `A Simple Guide to the Five Normal Forms in Relational Database Theory `__
- by William Kent, Communications of the ACM (1983).
-
-Load
-^^^^
-
-At the end of the Transform step, we have collections of :class:`pandas.DataFrame` that
-correspond to database tables. These are loaded into a SQLite database.
-To handle the ~1 billion row :doc:`data_sources/epacems`, we load the dataframes into
-an Apache Parquet dataset that is partitioned by state and year.
-
-These outputs can be accessed via Python, R, and many other tools. See the
-:doc:`data_dictionaries/pudl_db` page for a list of the normalized database tables and
-their contents.
-
-.. seealso::
-
- Module documentation within the :mod:`pudl.load` sub-package.
-
-.. _db-and-outputs:
-
----------------------------------------------------------------------------------------
-Output Tables
----------------------------------------------------------------------------------------
-
-Denormalized Outputs
-^^^^^^^^^^^^^^^^^^^^
-
-We normalize the data to make storage more efficient and avoid data integrity issues,
-but you may want to combine information from more than one of the tables to make the
-data more readable and readily interpretable. For example, PUDL stores the name that EIA
-uses to refer to a power plant in the :ref:`plants_entity_eia` table in association with
-the plant's unique numeric ID. If you are working with data from the
-:ref:`fuel_receipts_costs_eia923` table, which records monthly per-plant fuel
-deliveries, you may want to have the name of the plant alongside the fuel delivery
-information since it's more recognizable than the plant ID.
-
-Rather than requiring everyone to write their own SQL ``SELECT`` and ``JOIN`` statements
-or do a bunch of :func:`pandas.merge` operations to bring together data, PUDL provides a
-variety of predefined queries as methods of the :class:`pudl.output.pudltabl.PudlTabl`
-class. These methods perform common joins to return output tables (pandas DataFrames)
-that contain all of the useful information in one place. In some cases, like with EIA,
-the output tables are composed to closely resemble the raw spreadsheet tables you're
-familiar with.
-
-.. note::
-
- In the future, we intend to replace the simple denormalized output tables with
- database views that are integrated into the distributed SQLite database directly.
- This will provide the same convenience without requiring use of the Python software
- layer.
-
-Analysis Outputs
-^^^^^^^^^^^^^^^^
-
-There are several analytical routines built into the
-:mod:`pudl.output.pudltabl.PudlTabl` output objects for calculating derived values
-like the heat rate by generation unit (:meth:`hr_by_unit
-`) or the capacity factor by generator
-(:meth:`capacity_factor `). We intend to
-integrate more analytical outputs into the library over time.
-
-.. seealso::
-
- * `The PUDL Examples GitHub repo `__
- to see how to access the PUDL Database directly, use the output functions, or
- work with the EPA CEMS data using Dask.
- * `How to Learn Dask in 2021 `__
- is a great collection of self-guided resources if you are already familiar with
- Python, Pandas, and NumPy.
-
-.. _test-and-validate:
-
----------------------------------------------------------------------------------------
-Data Validation
----------------------------------------------------------------------------------------
-We have a growing collection of data validation test cases that we run before
-publishing a data release to try and avoid publishing data with known issues. Most of
-these validations are described in the :mod:`pudl.validate` module. They check things
-like:
-
-* The heat content of various fuel types are within expected bounds.
-* Coal ash, moisture, mercury, sulfur etc. content are within expected bounds
-* Generator heat rates and capacity factors are realistic for the type of prime mover
- being reported.
-
-Some data validations are currently only specified within our test suite, including:
-
-* The expected number of records within each table
-* The fact that there are no entirely N/A columns
-
-A variety of database integrity checks are also run either during the ETL process or
-when the data is loaded into SQLite.
-
-See our :doc:`dev/testing` documentation for more information.
From 24968f4d913412f4657604729383a6cd5fab0eee Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Mon, 4 Dec 2023 20:04:54 +0000
Subject: [PATCH 66/70] Update conda-lock.yml and rendered conda environment
files.
---
environments/conda-linux-64.lock.yml | 18 +--
environments/conda-lock.yml | 207 +++++++++++++-------------
environments/conda-osx-64.lock.yml | 18 +--
environments/conda-osx-arm64.lock.yml | 18 +--
4 files changed, 129 insertions(+), 132 deletions(-)
diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml
index b45e606241..2eec140474 100644
--- a/environments/conda-linux-64.lock.yml
+++ b/environments/conda-linux-64.lock.yml
@@ -232,6 +232,7 @@ dependencies:
- pickleshare=0.7.5=py_1003
- pkginfo=1.9.6=pyhd8ed1ab_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
+ - platformdirs=4.1.0=pyhd8ed1ab_0
- pluggy=1.3.0=pyhd8ed1ab_0
- prettier=3.1.0=h31abb78_0
- prometheus_client=0.19.0=pyhd8ed1ab_0
@@ -349,6 +350,7 @@ dependencies:
- jinja2=3.1.2=pyhd8ed1ab_1
- joblib=1.3.2=pyhd8ed1ab_0
- jsonlines=4.0.0=pyhd8ed1ab_0
+ - jupyter_core=5.5.0=py311h38be061_0
- jupyterlab_pygments=0.3.0=pyhd8ed1ab_0
- latexcodec=2.0.1=pyh9f0ad1d_0
- libcblas=3.9.0=20_linux64_openblas
@@ -366,7 +368,6 @@ dependencies:
- pillow=10.1.0=py311ha6c5da5_0
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
- - platformdirs=4.0.0=pyhd8ed1ab_0
- postgresql=16.1=h8972f4a_2
- proj=9.3.0=h1d62c97_2
- prompt-toolkit=3.0.41=pyha770c72_0
@@ -391,6 +392,7 @@ dependencies:
- typing_inspect=0.9.0=pyhd8ed1ab_0
- universal_pathlib=0.1.4=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
+ - virtualenv=20.25.0=pyhd8ed1ab_0
- watchdog=3.0.0=py311h38be061_1
- xerces-c=3.2.4=hac6953d_3
- yarl=1.9.3=py311h459d7ec_0
@@ -417,7 +419,6 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=7.0.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- - jupyter_core=5.5.0=py311h38be061_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=hcd42e92_1
- libnetcdf=4.9.2=nompi_h80fb2b6_112
@@ -445,11 +446,10 @@ dependencies:
- tiledb=2.16.3=h8c794c1_3
- ukkonen=1.0.1=py311h9547e67_4
- uvicorn=0.24.0.post1=py311h38be061_0
- - virtualenv=20.25.0=pyhd8ed1ab_0
- watchfiles=0.21.0=py311h46250e7_0
- aiohttp=3.8.6=py311h459d7ec_1
- alembic=1.13.0=pyhd8ed1ab_0
- - arelle-release=2.17.7=pyhd8ed1ab_0
+ - arelle-release=2.18.0=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-crt-cpp=0.24.7=h97e63c7_6
- bottleneck=1.3.7=py311h1f0f07a_1
@@ -465,7 +465,7 @@ dependencies:
- h3-py=3.7.6=py311hb755f60_1
- httpx=0.25.2=pyhd8ed1ab_0
- identify=2.5.32=pyhd8ed1ab_0
- - ipython=8.18.1=pyh31011fe_1
+ - ipython=8.18.1=pyh31011fe_2
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
@@ -538,21 +538,21 @@ dependencies:
- libarrow-flight=14.0.1=h120cb0d_3_cpu
- libarrow-gandiva=14.0.1=hacb8726_3_cpu
- libparquet=14.0.1=h352af49_3_cpu
- - nbconvert-core=7.11.0=pyhd8ed1ab_0
+ - nbconvert-core=7.12.0=pyhd8ed1ab_0
- pygraphviz=1.11=py311hbf5cbc9_2
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_server=2.11.1=pyhd8ed1ab_0
+ - jupyter_server=2.11.2=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=h59595ed_3_cpu
- libarrow-flight-sql=14.0.1=h61ff412_3_cpu
- - nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
+ - nbconvert-pandoc=7.12.0=pyhd8ed1ab_0
- gcsfs=2023.12.0=pyhd8ed1ab_0
- jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.2=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h61ff412_3_cpu
- - nbconvert=7.11.0=pyhd8ed1ab_0
+ - nbconvert=7.12.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- jupyterlab=4.0.9=pyhd8ed1ab_0
- pyarrow=14.0.1=py311h39c9aba_3_cpu
diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml
index f3a4470731..4baf150d36 100644
--- a/environments/conda-lock.yml
+++ b/environments/conda-lock.yml
@@ -536,7 +536,7 @@ package:
category: main
optional: false
- name: arelle-release
- version: 2.17.7
+ version: 2.18.0
manager: conda
platform: linux-64
dependencies:
@@ -549,50 +549,50 @@ package:
python: ">=3.8"
python-dateutil: 2.*
regex: ""
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.18.0-pyhd8ed1ab_0.conda
hash:
- md5: b42bbf2e318b6bbbd9de2d81ecf8ed50
- sha256: 3094446e601ad9160677c2bb5b75b9946c81b679bebf42bf52c126e71d76fb43
+ md5: cf492dd79a1d1d1ef2af299da2a604ca
+ sha256: f3fa253f2a26faa56348acc2a76eaf55778f871b995af429c9636d9159a4b483
category: main
optional: false
- name: arelle-release
- version: 2.17.7
+ version: 2.18.0
manager: conda
platform: osx-64
dependencies:
certifi: ""
regex: ""
python: ">=3.8"
- numpy: 1.*
python-dateutil: 2.*
+ numpy: 1.*
isodate: 0.*
lxml: 4.*
openpyxl: 3.*
pyparsing: 3.*
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.18.0-pyhd8ed1ab_0.conda
hash:
- md5: b42bbf2e318b6bbbd9de2d81ecf8ed50
- sha256: 3094446e601ad9160677c2bb5b75b9946c81b679bebf42bf52c126e71d76fb43
+ md5: cf492dd79a1d1d1ef2af299da2a604ca
+ sha256: f3fa253f2a26faa56348acc2a76eaf55778f871b995af429c9636d9159a4b483
category: main
optional: false
- name: arelle-release
- version: 2.17.7
+ version: 2.18.0
manager: conda
platform: osx-arm64
dependencies:
certifi: ""
regex: ""
python: ">=3.8"
- numpy: 1.*
python-dateutil: 2.*
+ numpy: 1.*
isodate: 0.*
lxml: 4.*
openpyxl: 3.*
pyparsing: 3.*
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.17.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.18.0-pyhd8ed1ab_0.conda
hash:
- md5: b42bbf2e318b6bbbd9de2d81ecf8ed50
- sha256: 3094446e601ad9160677c2bb5b75b9946c81b679bebf42bf52c126e71d76fb43
+ md5: cf492dd79a1d1d1ef2af299da2a604ca
+ sha256: f3fa253f2a26faa56348acc2a76eaf55778f871b995af429c9636d9159a4b483
category: main
optional: false
- name: argon2-cffi
@@ -8533,16 +8533,16 @@ package:
matplotlib-inline: ""
pexpect: ">4.3"
pickleshare: ""
- prompt-toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
+ prompt-toolkit: ">=3.0.41,<3.1.0"
pygments: ">=2.4.0"
python: ">=3.9"
stack_data: ""
traitlets: ">=5"
typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_2.conda
hash:
- md5: ac2f9c2e10c2e90e8d135cef51f9753a
- sha256: 67490e640faa372d663a5c5cd2d61f417cce22a019a4de82a9e5ddb1cf2ee181
+ md5: 5e23d20fc6e33061c063220146579990
+ sha256: c956b70ed41b7f61a780a7e584f03f68e7e5073c8c138960bfbc5e705d9124b1
category: main
optional: false
- name: ipython
@@ -8562,11 +8562,11 @@ package:
traitlets: ">=5"
jedi: ">=0.16"
pexpect: ">4.3"
- prompt-toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_1.conda
+ prompt-toolkit: ">=3.0.41,<3.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_2.conda
hash:
- md5: ac2f9c2e10c2e90e8d135cef51f9753a
- sha256: 67490e640faa372d663a5c5cd2d61f417cce22a019a4de82a9e5ddb1cf2ee181
+ md5: 5e23d20fc6e33061c063220146579990
+ sha256: c956b70ed41b7f61a780a7e584f03f68e7e5073c8c138960bfbc5e705d9124b1
category: main
optional: false
- name: ipython
@@ -8586,11 +8586,11 @@ package:
traitlets: ">=5"
jedi: ">=0.16"
pexpect: ">4.3"
- prompt-toolkit: ">=3.0.30,<3.1.0,!=3.0.37"
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_1.conda
+ prompt-toolkit: ">=3.0.41,<3.1.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_2.conda
hash:
- md5: ac2f9c2e10c2e90e8d135cef51f9753a
- sha256: 67490e640faa372d663a5c5cd2d61f417cce22a019a4de82a9e5ddb1cf2ee181
+ md5: 5e23d20fc6e33061c063220146579990
+ sha256: c956b70ed41b7f61a780a7e584f03f68e7e5073c8c138960bfbc5e705d9124b1
category: main
optional: false
- name: ipywidgets
@@ -9376,8 +9376,8 @@ package:
dependencies:
ipywidgets: ""
notebook: ""
- ipykernel: ""
nbconvert: ""
+ ipykernel: ""
qtconsole-base: ""
jupyter_console: ""
python: ">=3.6"
@@ -9394,8 +9394,8 @@ package:
dependencies:
ipywidgets: ""
notebook: ""
- ipykernel: ""
nbconvert: ""
+ ipykernel: ""
qtconsole-base: ""
jupyter_console: ""
python: ">=3.6"
@@ -9709,7 +9709,7 @@ package:
category: main
optional: false
- name: jupyter_server
- version: 2.11.1
+ version: 2.11.2
manager: conda
platform: linux-64
dependencies:
@@ -9732,14 +9732,14 @@ package:
tornado: ">=6.2.0"
traitlets: ">=5.6.0"
websocket-client: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.2-pyhd8ed1ab_0.conda
hash:
- md5: 0699b715659c026f7f81c27d0e744205
- sha256: 605825c0e2d5af7935b37319b9a46ff39e081e7a0f4dc973f0dd583f41c69ce5
+ md5: c831341804aecf5abcdbb348be301f92
+ sha256: 9e56c09fa7f4b95aab30b51008416d041c53cfd94ef3a4abc339d1eabb015df2
category: main
optional: false
- name: jupyter_server
- version: 2.11.1
+ version: 2.11.2
manager: conda
platform: osx-64
dependencies:
@@ -9762,14 +9762,14 @@ package:
anyio: ">=3.1.0"
send2trash: ">=1.8.2"
jupyter_events: ">=0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.2-pyhd8ed1ab_0.conda
hash:
- md5: 0699b715659c026f7f81c27d0e744205
- sha256: 605825c0e2d5af7935b37319b9a46ff39e081e7a0f4dc973f0dd583f41c69ce5
+ md5: c831341804aecf5abcdbb348be301f92
+ sha256: 9e56c09fa7f4b95aab30b51008416d041c53cfd94ef3a4abc339d1eabb015df2
category: main
optional: false
- name: jupyter_server
- version: 2.11.1
+ version: 2.11.2
manager: conda
platform: osx-arm64
dependencies:
@@ -9792,10 +9792,10 @@ package:
anyio: ">=3.1.0"
send2trash: ">=1.8.2"
jupyter_events: ">=0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.2-pyhd8ed1ab_0.conda
hash:
- md5: 0699b715659c026f7f81c27d0e744205
- sha256: 605825c0e2d5af7935b37319b9a46ff39e081e7a0f4dc973f0dd583f41c69ce5
+ md5: c831341804aecf5abcdbb348be301f92
+ sha256: 9e56c09fa7f4b95aab30b51008416d041c53cfd94ef3a4abc339d1eabb015df2
category: main
optional: false
- name: jupyter_server_terminals
@@ -9874,8 +9874,8 @@ package:
ipykernel: ""
jupyter_core: ""
python: ">=3.8"
- jinja2: ">=3.0.3"
tornado: ">=6.2.0"
+ jinja2: ">=3.0.3"
importlib_metadata: ">=4.8.3"
jupyter_server: ">=2.4.0,<3"
importlib_resources: ">=1.4"
@@ -9900,8 +9900,8 @@ package:
ipykernel: ""
jupyter_core: ""
python: ">=3.8"
- jinja2: ">=3.0.3"
tornado: ">=6.2.0"
+ jinja2: ">=3.0.3"
importlib_metadata: ">=4.8.3"
jupyter_server: ">=2.4.0,<3"
importlib_resources: ">=1.4"
@@ -14420,49 +14420,49 @@ package:
category: main
optional: false
- name: nbconvert
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: linux-64
dependencies:
- nbconvert-core: 7.11.0
- nbconvert-pandoc: 7.11.0
+ nbconvert-core: 7.12.0
+ nbconvert-pandoc: 7.12.0
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: e492b36cbea1c83d1663fa73a8abff9b
- sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
+ md5: 364e28ab12477494e72839aaa588073d
+ sha256: 0137330ab16bddf1fcaf60c0501c6145705b775fd547823708ed84364c934b76
category: main
optional: false
- name: nbconvert
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- nbconvert-core: 7.11.0
- nbconvert-pandoc: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
+ nbconvert-core: 7.12.0
+ nbconvert-pandoc: 7.12.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: e492b36cbea1c83d1663fa73a8abff9b
- sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
+ md5: 364e28ab12477494e72839aaa588073d
+ sha256: 0137330ab16bddf1fcaf60c0501c6145705b775fd547823708ed84364c934b76
category: main
optional: false
- name: nbconvert
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- nbconvert-core: 7.11.0
- nbconvert-pandoc: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda
+ nbconvert-core: 7.12.0
+ nbconvert-pandoc: 7.12.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: e492b36cbea1c83d1663fa73a8abff9b
- sha256: 6af7048b30c0ce6746297548df981037802f713853a1e856aedd2f8164946d39
+ md5: 364e28ab12477494e72839aaa588073d
+ sha256: 0137330ab16bddf1fcaf60c0501c6145705b775fd547823708ed84364c934b76
category: main
optional: false
- name: nbconvert-core
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: linux-64
dependencies:
@@ -14483,14 +14483,14 @@ package:
python: ">=3.8"
tinycss2: ""
traitlets: ">=5.0"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: d59e0cb1ca993f8f910cfdf393232acf
- sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
+ md5: 4d67c68fd0d130091ada039bc2d81b33
+ sha256: 04c3ac88701d98d58139569e4899c3254bf99908179a898cc3dcadd8c0ef44b4
category: main
optional: false
- name: nbconvert-core
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: osx-64
dependencies:
@@ -14511,14 +14511,14 @@ package:
pygments: ">=2.4.1"
nbclient: ">=0.5.0"
mistune: ">=2.0.3,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: d59e0cb1ca993f8f910cfdf393232acf
- sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
+ md5: 4d67c68fd0d130091ada039bc2d81b33
+ sha256: 04c3ac88701d98d58139569e4899c3254bf99908179a898cc3dcadd8c0ef44b4
category: main
optional: false
- name: nbconvert-core
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: osx-arm64
dependencies:
@@ -14539,52 +14539,52 @@ package:
pygments: ">=2.4.1"
nbclient: ">=0.5.0"
mistune: ">=2.0.3,<4"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.11.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: d59e0cb1ca993f8f910cfdf393232acf
- sha256: 81732e083c4c85a52248e20ff0e40a14b0b49db9cc7ce414e8aa7d6f8980dad0
+ md5: 4d67c68fd0d130091ada039bc2d81b33
+ sha256: 04c3ac88701d98d58139569e4899c3254bf99908179a898cc3dcadd8c0ef44b4
category: main
optional: false
- name: nbconvert-pandoc
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: linux-64
dependencies:
- nbconvert-core: 7.11.0
+ nbconvert-core: 7.12.0
pandoc: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: 51bd005efab7e5c5c2af2570327bd213
- sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ md5: 460d7cac50322a39b61a833885a6a8d5
+ sha256: ebf25caef387ec79f8d8f6771240d451ffaebcc2cdd127c0b152c6697d661d10
category: main
optional: false
- name: nbconvert-pandoc
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: osx-64
dependencies:
pandoc: ""
python: ">=3.8"
- nbconvert-core: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
+ nbconvert-core: 7.12.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: 51bd005efab7e5c5c2af2570327bd213
- sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ md5: 460d7cac50322a39b61a833885a6a8d5
+ sha256: ebf25caef387ec79f8d8f6771240d451ffaebcc2cdd127c0b152c6697d661d10
category: main
optional: false
- name: nbconvert-pandoc
- version: 7.11.0
+ version: 7.12.0
manager: conda
platform: osx-arm64
dependencies:
pandoc: ""
python: ">=3.8"
- nbconvert-core: 7.11.0
- url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.11.0-pyhd8ed1ab_0.conda
+ nbconvert-core: 7.12.0
+ url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.12.0-pyhd8ed1ab_0.conda
hash:
- md5: 51bd005efab7e5c5c2af2570327bd213
- sha256: 377d3c3f973b6885406ff6606d24c5e1fbd0d0fdc64c0dc17162f6daf35e08cf
+ md5: 460d7cac50322a39b61a833885a6a8d5
+ sha256: ebf25caef387ec79f8d8f6771240d451ffaebcc2cdd127c0b152c6697d661d10
category: main
optional: false
- name: nbformat
@@ -16340,42 +16340,39 @@ package:
category: main
optional: false
- name: platformdirs
- version: 4.0.0
+ version: 4.1.0
manager: conda
platform: linux-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=4.7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 6bb4ee32cd435deaeac72776c001e7ac
- sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937
+ md5: 45a5065664da0d1dfa8f8cd2eaf05ab9
+ sha256: 9e4ff17ce802159ed31344eb913eaa877688226765b77947b102b42255a53853
category: main
optional: false
- name: platformdirs
- version: 4.0.0
+ version: 4.1.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=4.7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 6bb4ee32cd435deaeac72776c001e7ac
- sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937
+ md5: 45a5065664da0d1dfa8f8cd2eaf05ab9
+ sha256: 9e4ff17ce802159ed31344eb913eaa877688226765b77947b102b42255a53853
category: main
optional: false
- name: platformdirs
- version: 4.0.0
+ version: 4.1.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
- typing_extensions: ">=4.7.1"
- url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda
hash:
- md5: 6bb4ee32cd435deaeac72776c001e7ac
- sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937
+ md5: 45a5065664da0d1dfa8f8cd2eaf05ab9
+ sha256: 9e4ff17ce802159ed31344eb913eaa877688226765b77947b102b42255a53853
category: main
optional: false
- name: pluggy
diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml
index da2a4d0732..af75e5e3dc 100644
--- a/environments/conda-osx-64.lock.yml
+++ b/environments/conda-osx-64.lock.yml
@@ -217,6 +217,7 @@ dependencies:
- pillow=10.1.0=py311hea5c87a_0
- pkginfo=1.9.6=pyhd8ed1ab_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
+ - platformdirs=4.1.0=pyhd8ed1ab_0
- pluggy=1.3.0=pyhd8ed1ab_0
- prometheus_client=0.19.0=pyhd8ed1ab_0
- psutil=5.9.5=py311h2725bcf_1
@@ -329,6 +330,7 @@ dependencies:
- jinja2=3.1.2=pyhd8ed1ab_1
- joblib=1.3.2=pyhd8ed1ab_0
- jsonlines=4.0.0=pyhd8ed1ab_0
+ - jupyter_core=5.5.0=py311h6eed73b_0
- jupyterlab_pygments=0.3.0=pyhd8ed1ab_0
- latexcodec=2.0.1=pyh9f0ad1d_0
- libcblas=3.9.0=20_osx64_openblas
@@ -344,7 +346,6 @@ dependencies:
- pexpect=4.8.0=pyh1a96a4e_2
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
- - platformdirs=4.0.0=pyhd8ed1ab_0
- poppler=23.12.0=hdd5a5e8_0
- postgresql=16.1=h413614c_2
- proj=9.3.0=h23b96cc_2
@@ -371,6 +372,7 @@ dependencies:
- typing_inspect=0.9.0=pyhd8ed1ab_0
- universal_pathlib=0.1.4=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
+ - virtualenv=20.25.0=pyhd8ed1ab_0
- watchdog=3.0.0=py311h5ef12f2_1
- xerces-c=3.2.4=h6314983_3
- yarl=1.9.3=py311he705e18_0
@@ -396,7 +398,6 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=7.0.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- - jupyter_core=5.5.0=py311h6eed73b_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h052fcf7_1
- libnetcdf=4.9.2=nompi_h6a32802_112
@@ -425,11 +426,10 @@ dependencies:
- tiledb=2.16.3=hd3a41d5_3
- ukkonen=1.0.1=py311h5fe6e05_4
- uvicorn=0.24.0.post1=py311h6eed73b_0
- - virtualenv=20.25.0=pyhd8ed1ab_0
- watchfiles=0.21.0=py311h5e0f0e4_0
- aiohttp=3.8.6=py311he705e18_1
- alembic=1.13.0=pyhd8ed1ab_0
- - arelle-release=2.17.7=pyhd8ed1ab_0
+ - arelle-release=2.18.0=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h28d282b_7
- bottleneck=1.3.7=py311h4a70a88_1
@@ -446,7 +446,7 @@ dependencies:
- h3-py=3.7.6=py311hdf8f085_1
- httpx=0.25.2=pyhd8ed1ab_0
- identify=2.5.32=pyhd8ed1ab_0
- - ipython=8.18.1=pyh31011fe_1
+ - ipython=8.18.1=pyh31011fe_2
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
@@ -519,18 +519,18 @@ dependencies:
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=hc222712_3_cpu
- libarrow-flight-sql=14.0.1=h2cc6c1c_3_cpu
- - nbconvert-core=7.11.0=pyhd8ed1ab_0
+ - nbconvert-core=7.12.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_server=2.11.1=pyhd8ed1ab_0
+ - jupyter_server=2.11.2=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h2cc6c1c_3_cpu
- - nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
+ - nbconvert-pandoc=7.12.0=pyhd8ed1ab_0
- gcsfs=2023.12.0=pyhd8ed1ab_0
- jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.2=pyhd8ed1ab_0
- - nbconvert=7.11.0=pyhd8ed1ab_0
+ - nbconvert=7.12.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- pyarrow=14.0.1=py311h98a0319_3_cpu
- jupyterlab=4.0.9=pyhd8ed1ab_0
diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml
index 631841e00f..992644fc0d 100644
--- a/environments/conda-osx-arm64.lock.yml
+++ b/environments/conda-osx-arm64.lock.yml
@@ -217,6 +217,7 @@ dependencies:
- pillow=10.1.0=py311hb9c5795_0
- pkginfo=1.9.6=pyhd8ed1ab_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
+ - platformdirs=4.1.0=pyhd8ed1ab_0
- pluggy=1.3.0=pyhd8ed1ab_0
- prometheus_client=0.19.0=pyhd8ed1ab_0
- psutil=5.9.5=py311heffc1b2_1
@@ -329,6 +330,7 @@ dependencies:
- jinja2=3.1.2=pyhd8ed1ab_1
- joblib=1.3.2=pyhd8ed1ab_0
- jsonlines=4.0.0=pyhd8ed1ab_0
+ - jupyter_core=5.5.0=py311h267d04e_0
- jupyterlab_pygments=0.3.0=pyhd8ed1ab_0
- latexcodec=2.0.1=pyh9f0ad1d_0
- libcblas=3.9.0=20_osxarm64_openblas
@@ -344,7 +346,6 @@ dependencies:
- pexpect=4.8.0=pyh1a96a4e_2
- pint=0.22=pyhd8ed1ab_1
- pip=23.3.1=pyhd8ed1ab_0
- - platformdirs=4.0.0=pyhd8ed1ab_0
- poppler=23.12.0=hcdd998b_0
- postgresql=16.1=hc6ab77f_2
- proj=9.3.0=h52fb9d0_2
@@ -371,6 +372,7 @@ dependencies:
- typing_inspect=0.9.0=pyhd8ed1ab_0
- universal_pathlib=0.1.4=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
+ - virtualenv=20.25.0=pyhd8ed1ab_0
- watchdog=3.0.0=py311heffc1b2_1
- xerces-c=3.2.4=hd886eac_3
- yarl=1.9.3=py311h05b510d_0
@@ -396,7 +398,6 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=7.0.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- - jupyter_core=5.5.0=py311h267d04e_0
- jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
- kealib=1.5.2=h47b5e36_1
- libnetcdf=4.9.2=nompi_hb2fb864_112
@@ -425,11 +426,10 @@ dependencies:
- tiledb=2.16.3=he15c4da_3
- ukkonen=1.0.1=py311he4fd1f5_4
- uvicorn=0.24.0.post1=py311h267d04e_0
- - virtualenv=20.25.0=pyhd8ed1ab_0
- watchfiles=0.21.0=py311h94f323b_0
- aiohttp=3.8.6=py311h05b510d_1
- alembic=1.13.0=pyhd8ed1ab_0
- - arelle-release=2.17.7=pyhd8ed1ab_0
+ - arelle-release=2.18.0=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h31542fa_7
- bottleneck=1.3.7=py311hb49d859_1
@@ -446,7 +446,7 @@ dependencies:
- h3-py=3.7.6=py311ha891d26_1
- httpx=0.25.2=pyhd8ed1ab_0
- identify=2.5.32=pyhd8ed1ab_0
- - ipython=8.18.1=pyh31011fe_1
+ - ipython=8.18.1=pyh31011fe_2
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
@@ -519,18 +519,18 @@ dependencies:
- google-cloud-core=2.3.3=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=had9dd58_3_cpu
- libarrow-flight-sql=14.0.1=h660fe36_3_cpu
- - nbconvert-core=7.11.0=pyhd8ed1ab_0
+ - nbconvert-core=7.12.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_server=2.11.1=pyhd8ed1ab_0
+ - jupyter_server=2.11.2=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h594d712_3_cpu
- - nbconvert-pandoc=7.11.0=pyhd8ed1ab_0
+ - nbconvert-pandoc=7.12.0=pyhd8ed1ab_0
- gcsfs=2023.12.0=pyhd8ed1ab_0
- jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.2=pyhd8ed1ab_0
- - nbconvert=7.11.0=pyhd8ed1ab_0
+ - nbconvert=7.12.0=pyhd8ed1ab_0
- notebook-shim=0.2.3=pyhd8ed1ab_0
- pyarrow=14.0.1=py311h637fcfe_3_cpu
- jupyterlab=4.0.9=pyhd8ed1ab_0
From 660eaffe6d6dc8c134f07b1bd8aa3c38c065d2ce Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Wed, 13 Dec 2023 16:40:31 -0900
Subject: [PATCH 67/70] Remove some old table names from metaddata
---
docs/release_notes.rst | 14 +-
..._apply_naming_convention_to_all_assets.py} | 140 +++---------------
src/pudl/analysis/eia_ferc1_record_linkage.py | 2 +-
src/pudl/metadata/resources/eia.py | 96 ------------
src/pudl/metadata/resources/ferc1.py | 10 --
.../resources/ferc1_eia_record_linkage.py | 4 +-
6 files changed, 33 insertions(+), 233 deletions(-)
rename migrations/versions/{773df9b1eb8c_apply_naming_convention_to_all_assets.py => 4b08158ae952_apply_naming_convention_to_all_assets.py} (97%)
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index a2b05da514..19c19aa4c6 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -303,13 +303,13 @@ Analysis
complete estimates of generator heat rates and thus fuel costs and emissions. Thanks
to :user:`grgmiller` for his contribution, which was integrated by :user:`cmgosnell`!
See PRs :pr:`1096,1608` and issues :issue:`1468,1478`.
-* Integrated :mod:`pudl.analysis.ferc1_eia` from our RMI collaboration repo, which uses
- logistic regression to match FERC1 plants data to EIA 860 records. While far from
- perfect, this baseline model utilizes the manually created training data and plant IDs
- to perform record linkage on the FERC1 data and EIA plant parts list created in
- :mod:`pudl.analysis.plant_parts_eia`. See issue :issue:`1064` & PR :pr:`2224`. To
- account for 1:m matches in the manual data, we added ``plant_match_ferc1`` as a plant
- part in :mod:`pudl.analysis.plant_parts_eia`.
+* Integrated :mod:`pudl.analysis.eia_ferc1_record_linkage` from our RMI collaboration
+ repo, which uses logistic regression to match FERC1 plants data to EIA 860 records.
+ While far from perfect, this baseline model utilizes the manually created training
+ data and plant IDs to perform record linkage on the FERC1 data and EIA plant parts
+ list created in :mod:`pudl.analysis.plant_parts_eia`. See issue :issue:`1064` & PR
+ :pr:`2224`. To account for 1:m matches in the manual data, we added
+ ``plant_match_ferc1`` as a plant part in :mod:`pudl.analysis.plant_parts_eia`.
* Refined how we are associating generation and fuel data in
:mod:`pudl.analysis.allocate_gen_fuel`, which was renamed from ``allocate_net_gen``.
Energy source codes that show up in the :ref:`core_eia923__monthly_generation_fuel` or
diff --git a/migrations/versions/773df9b1eb8c_apply_naming_convention_to_all_assets.py b/migrations/versions/4b08158ae952_apply_naming_convention_to_all_assets.py
similarity index 97%
rename from migrations/versions/773df9b1eb8c_apply_naming_convention_to_all_assets.py
rename to migrations/versions/4b08158ae952_apply_naming_convention_to_all_assets.py
index cb1575258a..e623f2a241 100644
--- a/migrations/versions/773df9b1eb8c_apply_naming_convention_to_all_assets.py
+++ b/migrations/versions/4b08158ae952_apply_naming_convention_to_all_assets.py
@@ -1,8 +1,8 @@
"""Apply naming convention to all assets
-Revision ID: 773df9b1eb8c
+Revision ID: 4b08158ae952
Revises:
-Create Date: 2023-11-30 16:23:04.422005
+Create Date: 2023-12-13 11:50:58.385316
"""
import sqlalchemy as sa
@@ -10,7 +10,7 @@
from sqlalchemy.dialects import sqlite
# revision identifiers, used by Alembic.
-revision = '773df9b1eb8c'
+revision = '4b08158ae952'
down_revision = None
branch_labels = None
depends_on = None
@@ -262,9 +262,9 @@ def upgrade() -> None:
sa.PrimaryKeyConstraint('code', name=op.f('pk_core_ferc1__codes_power_purchase_types'))
)
op.create_table('core_ferc714__respondent_id',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
- sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False, comment='FERC Form 714 respondent ID. Note that this ID does not correspond to FERC respondent IDs from other forms.'),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True, comment='Name of the utility, balancing area authority, or planning authority responding to FERC Form 714.'),
+ sa.Column('eia_code', sa.Integer(), nullable=True, comment='EIA utility or balancing area authority ID associated with this FERC Form 714 respondent. Note that many utilities are also balancing authorities and in many cases EIA uses the same integer ID to identify a utility in its role as a balancing authority AND as a utility, but there is no requirement that these IDs be the same, and in a number of cases they are different.'),
sa.PrimaryKeyConstraint('respondent_id_ferc714', name=op.f('pk_core_ferc714__respondent_id'))
)
op.create_table('core_ferc__codes_accounts',
@@ -287,13 +287,13 @@ def upgrade() -> None:
op.create_table('core_pudl__codes_subdivisions',
sa.Column('country_code', sa.Enum('USA', 'CAN'), nullable=False, comment='Three letter ISO-3166 country code (e.g. USA or CAN).'),
sa.Column('country_name', sa.Text(), nullable=True, comment='Full country name (e.g. United States of America).'),
- sa.Column('subdivision_code', sa.Enum('NE', 'HI', 'OK', 'MA', 'QC', 'GA', 'SK', 'SD', 'WI', 'ID', 'KS', 'IA', 'NU', 'ON', 'AZ', 'IL', 'UT', 'FL', 'KY', 'MB', 'MD', 'CO', 'MO', 'AL', 'AB', 'NB', 'MT', 'NH', 'BC', 'MI', 'NS', 'OH', 'NJ', 'MS', 'GU', 'NT', 'WA', 'AS', 'OR', 'VT', 'SC', 'ND', 'NY', 'PR', 'NM', 'PE', 'VI', 'DC', 'WY', 'LA', 'IN', 'NV', 'AR', 'PA', 'ME', 'TX', 'YT', 'CT', 'MN', 'WV', 'AK', 'NC', 'RI', 'CA', 'MP', 'DE', 'NL', 'VA', 'TN'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
+ sa.Column('subdivision_code', sa.Enum('NJ', 'KY', 'PE', 'NT', 'DE', 'MP', 'ON', 'MB', 'OK', 'SD', 'GU', 'CA', 'CT', 'NE', 'AS', 'UT', 'KS', 'MO', 'NC', 'QC', 'NB', 'AL', 'AR', 'BC', 'NU', 'OR', 'VT', 'NM', 'PR', 'WI', 'WA', 'PA', 'RI', 'TX', 'GA', 'MA', 'AB', 'AZ', 'YT', 'ME', 'VI', 'SC', 'IN', 'WV', 'FL', 'NY', 'MS', 'ID', 'DC', 'IL', 'MI', 'CO', 'LA', 'NL', 'MD', 'OH', 'NS', 'AK', 'SK', 'VA', 'MT', 'ND', 'NH', 'MN', 'TN', 'IA', 'HI', 'WY', 'NV'), nullable=False, comment='Two-letter ISO-3166 political subdivision code (e.g. US state or Canadian provice abbreviations like CA or AB).'),
sa.Column('subdivision_name', sa.Text(), nullable=True, comment='Full name of political subdivision (e.g. US state or Canadian province names like California or Alberta.'),
sa.Column('subdivision_type', sa.Text(), nullable=True, comment='ISO-3166 political subdivision type. E.g. state, province, outlying_area.'),
sa.Column('timezone_approx', sa.Enum('Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Timbuktu', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/ComodRivadavia', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Atka', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Buenos_Aires', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Catamarca', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Ciudad_Juarez', 'America/Coral_Harbour', 'America/Cordoba', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Ensenada', 'America/Fort_Nelson', 'America/Fort_Wayne', 'America/Fortaleza', 'America/Glace_Bay', 'America/Godthab', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Indianapolis', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Jujuy', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Knox_IN', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Louisville', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Mendoza', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montreal', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Acre', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Rosario', 'America/Santa_Isabel', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Shiprock', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Virgin', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/South_Pole', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Ashkhabad', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Calcutta', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Chongqing', 'Asia/Chungking', 'Asia/Colombo', 'Asia/Dacca', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Harbin', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Istanbul', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kashgar', 'Asia/Kathmandu', 'Asia/Katmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macao', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Rangoon', 'Asia/Riyadh', 'Asia/Saigon', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Tel_Aviv', 'Asia/Thimbu', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ujung_Pandang', 'Asia/Ulaanbaatar', 'Asia/Ulan_Bator', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faeroe', 'Atlantic/Faroe', 'Atlantic/Jan_Mayen', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/ACT', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Canberra', 'Australia/Currie', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/LHI', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/NSW', 'Australia/North', 'Australia/Perth', 'Australia/Queensland', 'Australia/South', 'Australia/Sydney', 'Australia/Tasmania', 'Australia/Victoria', 'Australia/West', 'Australia/Yancowinna', 'Brazil/Acre', 'Brazil/DeNoronha', 'Brazil/East', 'Brazil/West', 'CET', 'CST6CDT', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Kyiv', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC', 'PST8PDT', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kanton', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu'), nullable=True, comment='IANA timezone name of the timezone which encompasses the largest portion of the population in the associated geographic area.'),
sa.Column('state_id_fips', sa.Text(), nullable=True, comment='Two digit state FIPS code.'),
sa.Column('division_name_us_census', sa.Text(), nullable=True, comment='Longer human readable name describing the US Census division.'),
- sa.Column('division_code_us_census', sa.Enum('WNC', 'NEW', 'PCN', 'WSC', 'SAT', 'PCC', 'ESC', 'ENC', 'MAT', 'MTN'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
+ sa.Column('division_code_us_census', sa.Enum('SAT', 'PCC', 'WNC', 'WSC', 'MTN', 'NEW', 'ENC', 'MAT', 'ESC', 'PCN'), nullable=True, comment='Three-letter US Census division code as it appears in the bulk electricity data published by the EIA. Note that EIA splits the Pacific division into distinct contiguous (CA, OR, WA) and non-contiguous (AK, HI) states. For reference see this US Census region and division map: https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf'),
sa.Column('region_name_us_census', sa.Text(), nullable=True, comment='Human-readable name of a US Census region.'),
sa.Column('is_epacems_state', sa.Boolean(), nullable=True, comment="Indicates whether the associated state reports data within the EPA's Continuous Emissions Monitoring System."),
sa.PrimaryKeyConstraint('country_code', 'subdivision_code', name=op.f('pk_core_pudl__codes_subdivisions'))
@@ -892,7 +892,7 @@ def upgrade() -> None:
sa.PrimaryKeyConstraint('plant_id_eia', 'generator_id', name=op.f('pk_core_eia__entity_generators'))
)
op.create_table('core_ferc714__hourly_demand_pa',
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False, comment='FERC Form 714 respondent ID. Note that this ID does not correspond to FERC respondent IDs from other forms.'),
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('utc_datetime', sqlite.DATETIME(), nullable=False),
sa.Column('timezone', sa.Enum('America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'), nullable=True, comment='IANA timezone name'),
@@ -1091,10 +1091,10 @@ def upgrade() -> None:
sa.PrimaryKeyConstraint('plant_id_eia', 'report_date', 'prime_mover_code', 'energy_source_code', name=op.f('pk_out_eia923__monthly_generation_fuel_combined'))
)
op.create_table('out_ferc714__respondents_with_fips',
- sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('eia_code', sa.Integer(), nullable=True, comment='EIA utility or balancing area authority ID associated with this FERC Form 714 respondent. Note that many utilities are also balancing authorities and in many cases EIA uses the same integer ID to identify a utility in its role as a balancing authority AND as a utility, but there is no requirement that these IDs be the same, and in a number of cases they are different.'),
sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=True, comment='FERC Form 714 respondent ID. Note that this ID does not correspond to FERC respondent IDs from other forms.'),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True, comment='Name of the utility, balancing area authority, or planning authority responding to FERC Form 714.'),
sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
@@ -1109,16 +1109,16 @@ def upgrade() -> None:
)
op.create_table('out_ferc714__summarized_demand',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
- sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False),
+ sa.Column('respondent_id_ferc714', sa.Integer(), nullable=False, comment='FERC Form 714 respondent ID. Note that this ID does not correspond to FERC respondent IDs from other forms.'),
sa.Column('demand_annual_mwh', sa.Float(), nullable=True),
sa.Column('population', sa.Float(), nullable=True, comment='County population, sourced from Census DP1 data.'),
sa.Column('area_km2', sa.Float(), nullable=True, comment='County area in km2.'),
sa.Column('population_density_km2', sa.Float(), nullable=True, comment='Average population per sq. km area of a service territory.'),
sa.Column('demand_annual_per_capita_mwh', sa.Float(), nullable=True, comment='Per-capita annual demand, averaged using Census county-level population estimates.'),
sa.Column('demand_density_mwh_km2', sa.Float(), nullable=True, comment='Annual demand per km2 of a given service territory.'),
- sa.Column('eia_code', sa.Integer(), nullable=True),
+ sa.Column('eia_code', sa.Integer(), nullable=True, comment='EIA utility or balancing area authority ID associated with this FERC Form 714 respondent. Note that many utilities are also balancing authorities and in many cases EIA uses the same integer ID to identify a utility in its role as a balancing authority AND as a utility, but there is no requirement that these IDs be the same, and in a number of cases they are different.'),
sa.Column('respondent_type', sa.Enum('utility', 'balancing_authority'), nullable=True),
- sa.Column('respondent_name_ferc714', sa.Text(), nullable=True),
+ sa.Column('respondent_name_ferc714', sa.Text(), nullable=True, comment='Name of the utility, balancing area authority, or planning authority responding to FERC Form 714.'),
sa.Column('balancing_authority_id_eia', sa.Integer(), nullable=True, comment='EIA balancing authority ID. This is often (but not always!) the same as the utility ID associated with the same legal entity.'),
sa.Column('balancing_authority_code_eia', sa.Text(), nullable=True, comment='EIA short code identifying a balancing authority.'),
sa.Column('balancing_authority_name_eia', sa.Text(), nullable=True, comment='Name of the balancing authority.'),
@@ -2658,7 +2658,7 @@ def upgrade() -> None:
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
sa.Column('project_num', sa.Integer(), nullable=True, comment='FERC Licensed Project Number.'),
- sa.Column('plant_type', sa.Enum('na_category', 'run_of_river', 'hydro', 'storage', 'run_of_river_with_storage'), nullable=True),
+ sa.Column('plant_type', sa.Enum('run_of_river', 'na_category', 'run_of_river_with_storage', 'storage', 'hydro'), nullable=True),
sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
@@ -2776,7 +2776,7 @@ def upgrade() -> None:
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('plant_id_ferc1', sa.Integer(), nullable=True, comment='Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.'),
sa.Column('plant_name_ferc1', sa.Text(), nullable=True, comment='Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.'),
- sa.Column('plant_type', sa.Enum('na_category', 'steam', 'combustion_turbine', 'geothermal', 'combined_cycle', 'internal_combustion', 'nuclear', 'solar_thermal', 'wind', 'photovoltaic'), nullable=True),
+ sa.Column('plant_type', sa.Enum('solar_thermal', 'internal_combustion', 'wind', 'combustion_turbine', 'combined_cycle', 'steam', 'na_category', 'photovoltaic', 'nuclear', 'geothermal'), nullable=True),
sa.Column('construction_type', sa.Enum('conventional', 'outdoor', 'semioutdoor'), nullable=True, comment="Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings."),
sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
@@ -3312,7 +3312,7 @@ def upgrade() -> None:
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
- sa.Column('owner_state', sa.Enum('NE', 'HI', 'OK', 'MA', 'QC', 'GA', 'SK', 'SD', 'WI', 'ID', 'KS', 'IA', 'NU', 'ON', 'AZ', 'IL', 'UT', 'FL', 'KY', 'MB', 'MD', 'CO', 'MO', 'AL', 'AB', 'NB', 'MT', 'NH', 'BC', 'MI', 'NS', 'OH', 'NJ', 'MS', 'GU', 'NT', 'WA', 'AS', 'OR', 'VT', 'SC', 'ND', 'NY', 'PR', 'NM', 'PE', 'VI', 'DC', 'WY', 'LA', 'IN', 'NV', 'AR', 'PA', 'ME', 'TX', 'YT', 'CT', 'MN', 'WV', 'AK', 'NC', 'RI', 'CA', 'MP', 'DE', 'NL', 'VA', 'TN'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('NJ', 'KY', 'PE', 'NT', 'DE', 'MP', 'ON', 'MB', 'OK', 'SD', 'GU', 'CA', 'CT', 'NE', 'AS', 'UT', 'KS', 'MO', 'NC', 'QC', 'NB', 'AL', 'AR', 'BC', 'NU', 'OR', 'VT', 'NM', 'PR', 'WI', 'WA', 'PA', 'RI', 'TX', 'GA', 'MA', 'AB', 'AZ', 'YT', 'ME', 'VI', 'SC', 'IN', 'WV', 'FL', 'NY', 'MS', 'ID', 'DC', 'IL', 'MI', 'CO', 'LA', 'NL', 'MD', 'OH', 'NS', 'AK', 'SK', 'VA', 'MT', 'ND', 'NH', 'MN', 'TN', 'IA', 'HI', 'WY', 'NV'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
@@ -3324,46 +3324,6 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_core_eia860__scd_ownership_plant_id_eia_core_eia860__scd_generators')),
sa.PrimaryKeyConstraint('report_date', 'plant_id_eia', 'generator_id', 'owner_utility_id_eia', name=op.f('pk_core_eia860__scd_ownership'))
)
- op.create_table('mega_generators_eia',
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('utility_name_eia', sa.Text(), nullable=True, comment='The name of the utility.'),
- sa.Column('technology_description', sa.Text(), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('energy_source_code_1', sa.Text(), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('generator_operating_date', sa.Date(), nullable=True, comment='Date the generator began commercial operation.'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('fuel_cost_from_eiaapi', sa.Boolean(), nullable=True, comment='Indicates whether the fuel cost was derived from the EIA API.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_mega_generators_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_mega_generators_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_mega_generators_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_mega_generators_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_mega_generators_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_mega_generators_eia_utility_id_pudl_core_pudl__entity_utilities_pudl'))
- )
op.create_table('out_eia860__yearly_ownership',
sa.Column('report_date', sa.Date(), nullable=False, comment='Date reported.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=False, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
@@ -3373,7 +3333,7 @@ def upgrade() -> None:
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('owner_utility_name_eia', sa.Text(), nullable=True, comment='The name of the EIA owner utility.'),
sa.Column('generator_id', sa.Text(), nullable=False, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('owner_state', sa.Enum('NE', 'HI', 'OK', 'MA', 'QC', 'GA', 'SK', 'SD', 'WI', 'ID', 'KS', 'IA', 'NU', 'ON', 'AZ', 'IL', 'UT', 'FL', 'KY', 'MB', 'MD', 'CO', 'MO', 'AL', 'AB', 'NB', 'MT', 'NH', 'BC', 'MI', 'NS', 'OH', 'NJ', 'MS', 'GU', 'NT', 'WA', 'AS', 'OR', 'VT', 'SC', 'ND', 'NY', 'PR', 'NM', 'PE', 'VI', 'DC', 'WY', 'LA', 'IN', 'NV', 'AR', 'PA', 'ME', 'TX', 'YT', 'CT', 'MN', 'WV', 'AK', 'NC', 'RI', 'CA', 'MP', 'DE', 'NL', 'VA', 'TN'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
+ sa.Column('owner_state', sa.Enum('NJ', 'KY', 'PE', 'NT', 'DE', 'MP', 'ON', 'MB', 'OK', 'SD', 'GU', 'CA', 'CT', 'NE', 'AS', 'UT', 'KS', 'MO', 'NC', 'QC', 'NB', 'AL', 'AR', 'BC', 'NU', 'OR', 'VT', 'NM', 'PR', 'WI', 'WA', 'PA', 'RI', 'TX', 'GA', 'MA', 'AB', 'AZ', 'YT', 'ME', 'VI', 'SC', 'IN', 'WV', 'FL', 'NY', 'MS', 'ID', 'DC', 'IL', 'MI', 'CO', 'LA', 'NL', 'MD', 'OH', 'NS', 'AK', 'SK', 'VA', 'MT', 'ND', 'NH', 'MN', 'TN', 'IA', 'HI', 'WY', 'NV'), nullable=True, comment='Two letter ISO-3166 political subdivision code.'),
sa.Column('owner_city', sa.Text(), nullable=True, comment='City of owner.'),
sa.Column('owner_country', sa.Enum('USA', 'CAN'), nullable=True, comment='Three letter ISO-3166 country code.'),
sa.Column('owner_street_address', sa.Text(), nullable=True, comment='Steet address of owner.'),
@@ -3834,7 +3794,7 @@ def upgrade() -> None:
sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_operating_year', 'plant_technology', 'plant_prime_mover', 'plant_prime_fuel', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_unit'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('plant_part', sa.Enum('plant_unit', 'plant_gen', 'plant', 'plant_operating_year', 'plant_prime_fuel', 'plant_prime_mover', 'plant_technology', 'plant_ferc_acct', 'plant_match_ferc1'), nullable=True, comment='The part of the plant a record corresponds to.'),
sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
@@ -3843,7 +3803,7 @@ def upgrade() -> None:
sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_operating_year', 'plant_technology', 'plant_prime_mover', 'plant_prime_fuel', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_unit'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_gen', 'plant', 'plant_operating_year', 'plant_prime_fuel', 'plant_prime_mover', 'plant_technology', 'plant_ferc_acct', 'plant_match_ferc1'), nullable=True, comment='Plant part of the associated true granularity record.'),
sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
@@ -3887,7 +3847,7 @@ def upgrade() -> None:
sa.Column('record_id_eia', sa.Text(), nullable=True, comment='Identifier for EIA plant parts analysis records.'),
sa.Column('match_type', sa.Text(), nullable=True, comment='Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.'),
sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_operating_year', 'plant_technology', 'plant_prime_mover', 'plant_prime_fuel', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_unit'), nullable=True, comment='The part of the plant a record corresponds to.'),
+ sa.Column('plant_part', sa.Enum('plant_unit', 'plant_gen', 'plant', 'plant_operating_year', 'plant_prime_fuel', 'plant_prime_mover', 'plant_technology', 'plant_ferc_acct', 'plant_match_ferc1'), nullable=True, comment='The part of the plant a record corresponds to.'),
sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
@@ -3903,7 +3863,7 @@ def upgrade() -> None:
sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_operating_year', 'plant_technology', 'plant_prime_mover', 'plant_prime_fuel', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_unit'), nullable=True, comment='Plant part of the associated true granularity record.'),
+ sa.Column('appro_part_label', sa.Enum('plant_unit', 'plant_gen', 'plant', 'plant_operating_year', 'plant_prime_fuel', 'plant_prime_mover', 'plant_technology', 'plant_ferc_acct', 'plant_match_ferc1'), nullable=True, comment='Plant part of the associated true granularity record.'),
sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
@@ -4010,64 +3970,11 @@ def upgrade() -> None:
sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_out_pudl__yearly_assn_eia_ferc1_plant_parts_utility_id_pudl_core_pudl__entity_utilities_pudl')),
sa.PrimaryKeyConstraint('record_id_ferc1', name=op.f('pk_out_pudl__yearly_assn_eia_ferc1_plant_parts'))
)
- op.create_table('plant_parts_eia',
- sa.Column('record_id_eia', sa.Text(), nullable=False, comment='Identifier for EIA plant parts analysis records.'),
- sa.Column('plant_id_eia', sa.Integer(), nullable=True, comment='The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.'),
- sa.Column('report_date', sa.Date(), nullable=True, comment='Date reported.'),
- sa.Column('plant_part', sa.Enum('plant_ferc_acct', 'plant_operating_year', 'plant_technology', 'plant_prime_mover', 'plant_prime_fuel', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_unit'), nullable=True, comment='The part of the plant a record corresponds to.'),
- sa.Column('generator_id', sa.Text(), nullable=True, comment='Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!'),
- sa.Column('unit_id_pudl', sa.Integer(), nullable=True, comment='Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.'),
- sa.Column('prime_mover_code', sa.Text(), nullable=True, comment='Code for the type of prime mover (e.g. CT, CG)'),
- sa.Column('energy_source_code_1', sa.Enum('WO', 'GEO', 'TDF', 'SG', 'SUN', 'NUC', 'DFO', 'MSN', 'SUB', 'WC', 'OTH', 'AB', 'RC', 'LFG', 'SGC', 'SLW', 'SGP', 'WDL', 'BFG', 'WH', 'MSB', 'ANT', 'BLQ', 'LIG', 'OBS', 'OG', 'SC', 'MWH', 'NG', 'PC', 'RFO', 'BIT', 'WAT', 'OBG', 'PG', 'JF', 'WDS', 'KER', 'WND', 'MSW', 'OBL', 'PUR'), nullable=True, comment='The code representing the most predominant type of energy that fuels the generator.'),
- sa.Column('technology_description', sa.Enum('All Other', 'Natural Gas Fired Combustion Turbine', 'Wood/Wood Waste Biomass', 'Conventional Steam Coal', 'Coal Integrated Gasification Combined Cycle', 'Other Gases', 'Petroleum Coke', 'Landfill Gas', 'Geothermal', 'Hydrokinetic', 'Natural Gas Internal Combustion Engine', 'Natural Gas Fired Combined Cycle', 'Natural Gas with Compressed Air Storage', 'Batteries', 'Natural Gas Steam Turbine', 'Onshore Wind Turbine', 'Petroleum Liquids', 'Solar Thermal with Energy Storage', 'Other Waste Biomass', 'Conventional Hydroelectric', 'Municipal Solid Waste', 'Solar Photovoltaic', 'Solar Thermal without Energy Storage', 'Hydroelectric Pumped Storage', 'Nuclear', 'Flywheels', 'Other Natural Gas', 'Offshore Wind Turbine'), nullable=True, comment='High level description of the technology used by the generator to produce electricity.'),
- sa.Column('ferc_acct_name', sa.Enum('Hydraulic', 'Nuclear', 'Steam', 'Other'), nullable=True, comment='Name of FERC account, derived from technology description and prime mover code.'),
- sa.Column('utility_id_eia', sa.Integer(), nullable=True, comment='The EIA Utility Identification number.'),
- sa.Column('true_gran', sa.Boolean(), nullable=True, comment='Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.'),
- sa.Column('appro_part_label', sa.Enum('plant_ferc_acct', 'plant_operating_year', 'plant_technology', 'plant_prime_mover', 'plant_prime_fuel', 'plant_gen', 'plant', 'plant_match_ferc1', 'plant_unit'), nullable=True, comment='Plant part of the associated true granularity record.'),
- sa.Column('appro_record_id_eia', sa.Text(), nullable=True, comment='EIA record ID of the associated true granularity record.'),
- sa.Column('ferc1_generator_agg_id', sa.Integer(), nullable=True, comment='ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process.'),
- sa.Column('capacity_eoy_mw', sa.Float(), nullable=True, comment='Total end of year installed (nameplate) capacity for a plant part, in megawatts.'),
- sa.Column('capacity_factor', sa.Float(), nullable=True, comment='Fraction of potential generation that was actually reported for a plant part.'),
- sa.Column('capacity_mw', sa.Float(), nullable=True, comment='Total installed (nameplate) capacity, in megawatts.'),
- sa.Column('construction_year', sa.Integer(), nullable=True, comment="Year the plant's oldest still operational unit was built."),
- sa.Column('fraction_owned', sa.Float(), nullable=True, comment='Proportion of generator ownership attributable to this utility.'),
- sa.Column('fuel_cost_per_mmbtu', sa.Float(), nullable=True, comment='Average fuel cost per mmBTU of heat content in nominal USD.'),
- sa.Column('fuel_cost_per_mwh', sa.Float(), nullable=True, comment='Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.'),
- sa.Column('fuel_type_code_pudl', sa.Enum('coal', 'gas', 'hydro', 'nuclear', 'oil', 'other', 'solar', 'waste', 'wind'), nullable=True, comment='Simplified fuel type code used in PUDL'),
- sa.Column('generator_retirement_date', sa.Date(), nullable=True, comment='Date of the scheduled or effected retirement of the generator.'),
- sa.Column('unit_heat_rate_mmbtu_per_mwh', sa.Float(), nullable=True, comment='Fuel content per unit of electricity generated. Coming from MCOE calculation.'),
- sa.Column('installation_year', sa.Integer(), nullable=True, comment="Year the plant's most recently built unit was installed."),
- sa.Column('net_generation_mwh', sa.Float(), nullable=True, comment='Net electricity generation for the specified period in megawatt-hours (MWh).'),
- sa.Column('generator_operating_year', sa.Integer(), nullable=True, comment='Year a generator went into service.'),
- sa.Column('operational_status', sa.Text(), nullable=True, comment='The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.'),
- sa.Column('operational_status_pudl', sa.Enum('operating', 'retired', 'proposed'), nullable=True, comment='The operating status of the asset using PUDL categories.'),
- sa.Column('ownership_record_type', sa.Enum('owned', 'total'), nullable=True, comment='Whether each generator record is for one owner or represents a total of all ownerships.'),
- sa.Column('ownership_dupe', sa.Boolean(), nullable=True, comment='Whether a plant part record has a duplicate record with different ownership status.'),
- sa.Column('planned_generator_retirement_date', sa.Date(), nullable=True, comment='Planned effective date of the scheduled retirement of the generator.'),
- sa.Column('plant_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL plant ID. May not be constant over time.'),
- sa.Column('plant_name_eia', sa.Text(), nullable=True, comment='Plant name.'),
- sa.Column('plant_name_ppe', sa.Text(), nullable=True, comment='Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.'),
- sa.Column('plant_part_id_eia', sa.Text(), nullable=True, comment='Contains EIA plant ID, plant part, ownership, and EIA utility id'),
- sa.Column('record_count', sa.Integer(), nullable=True, comment='Number of distinct generator IDs that partcipated in the aggregation for a plant part list record.'),
- sa.Column('total_fuel_cost', sa.Float(), nullable=True, comment='Total annual reported fuel costs for the plant part. Includes costs from all fuels.'),
- sa.Column('total_mmbtu', sa.Float(), nullable=True, comment='Total annual heat content of fuel consumed by a plant part record in the plant parts list.'),
- sa.Column('utility_id_pudl', sa.Integer(), nullable=True, comment='A manually assigned PUDL utility ID. May not be stable over time.'),
- sa.Column('report_year', sa.Integer(), nullable=True, comment='Four-digit year in which the data was reported.'),
- sa.Column('plant_id_report_year', sa.Text(), nullable=True, comment='PUDL plant ID and report year of the record.'),
- sa.ForeignKeyConstraint(['energy_source_code_1'], ['core_eia__codes_energy_sources.code'], name=op.f('fk_plant_parts_eia_energy_source_code_1_core_eia__codes_energy_sources')),
- sa.ForeignKeyConstraint(['plant_id_eia', 'generator_id', 'report_date'], ['core_eia860__scd_generators.plant_id_eia', 'core_eia860__scd_generators.generator_id', 'core_eia860__scd_generators.report_date'], name=op.f('fk_plant_parts_eia_plant_id_eia_core_eia860__scd_generators')),
- sa.ForeignKeyConstraint(['plant_id_pudl'], ['core_pudl__entity_plants_pudl.plant_id_pudl'], name=op.f('fk_plant_parts_eia_plant_id_pudl_core_pudl__entity_plants_pudl')),
- sa.ForeignKeyConstraint(['prime_mover_code'], ['core_eia__codes_prime_movers.code'], name=op.f('fk_plant_parts_eia_prime_mover_code_core_eia__codes_prime_movers')),
- sa.ForeignKeyConstraint(['utility_id_eia', 'report_date'], ['core_eia860__scd_utilities.utility_id_eia', 'core_eia860__scd_utilities.report_date'], name=op.f('fk_plant_parts_eia_utility_id_eia_core_eia860__scd_utilities')),
- sa.ForeignKeyConstraint(['utility_id_pudl'], ['core_pudl__entity_utilities_pudl.utility_id_pudl'], name=op.f('fk_plant_parts_eia_utility_id_pudl_core_pudl__entity_utilities_pudl')),
- sa.PrimaryKeyConstraint('record_id_eia', name=op.f('pk_plant_parts_eia'))
- )
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
- op.drop_table('plant_parts_eia')
op.drop_table('out_pudl__yearly_assn_eia_ferc1_plant_parts')
op.drop_table('out_eia__yearly_plant_parts')
op.drop_table('out_eia__yearly_generators_by_ownership')
@@ -4079,7 +3986,6 @@ def downgrade() -> None:
op.drop_table('out_eia923__yearly_generation')
op.drop_table('out_eia923__yearly_boiler_fuel')
op.drop_table('out_eia860__yearly_ownership')
- op.drop_table('mega_generators_eia')
op.drop_table('core_eia860__scd_ownership')
op.drop_table('core_eia860__assn_yearly_boiler_emissions_control_equipment')
op.drop_table('core_eia860__assn_boiler_stack_flue')
diff --git a/src/pudl/analysis/eia_ferc1_record_linkage.py b/src/pudl/analysis/eia_ferc1_record_linkage.py
index 36347b1e0f..27844f65ec 100644
--- a/src/pudl/analysis/eia_ferc1_record_linkage.py
+++ b/src/pudl/analysis/eia_ferc1_record_linkage.py
@@ -1051,7 +1051,7 @@ def add_null_overrides(connects_ferc1_eia):
logger.debug(f"Found {len(null_overrides)} null overrides")
# List of EIA columns to null. Ideally would like to get this from elsewhere, but
# compiling this here for now...
- eia_cols_to_null = Resource.from_id("plant_parts_eia").get_field_names()
+ eia_cols_to_null = Resource.from_id("out_eia__yearly_plant_parts").get_field_names()
# Make all EIA values NA for record_id_ferc1 values in the Null overrides list and
# make the match_type column say "overriden"
connects_ferc1_eia.loc[
diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py
index bebf089c51..72efd02d5f 100644
--- a/src/pudl/metadata/resources/eia.py
+++ b/src/pudl/metadata/resources/eia.py
@@ -525,48 +525,6 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "out_eia__yearly_generators_by_ownership": {
- "description": "A mega table of all EIA generators with ownership integrated.",
- "schema": {
- "fields": [
- "plant_id_eia",
- "generator_id",
- "report_date",
- "unit_id_pudl",
- "plant_id_pudl",
- "plant_name_eia",
- "utility_id_eia",
- "utility_id_pudl",
- "utility_name_eia",
- "technology_description",
- "energy_source_code_1",
- "prime_mover_code",
- "generator_operating_date",
- "generator_retirement_date",
- "operational_status",
- "capacity_mw",
- "fuel_type_code_pudl",
- "planned_generator_retirement_date",
- "capacity_factor",
- "fuel_cost_from_eiaapi",
- "fuel_cost_per_mmbtu",
- "fuel_cost_per_mwh",
- "unit_heat_rate_mmbtu_per_mwh",
- "net_generation_mwh",
- "total_fuel_cost",
- "total_mmbtu",
- "ferc_acct_name",
- "generator_operating_year",
- "operational_status_pudl",
- "capacity_eoy_mw",
- "fraction_owned",
- "ownership_record_type",
- ],
- },
- "sources": ["eia860", "eia923"],
- "etl_group": "outputs",
- "field_namespace": "eia",
- },
"core_eia__codes_momentary_interruptions": {
"description": "A coding table for utility definitions of momentary service interruptions.",
"schema": {
@@ -623,60 +581,6 @@
"etl_group": "entity_eia",
"field_namespace": "eia",
},
- "out_eia__yearly_plant_parts": {
- "description": "Output table with the aggregation of all EIA plant parts. For use with matching to FERC 1.",
- "schema": {
- "fields": [
- "record_id_eia",
- "plant_id_eia",
- "report_date",
- "plant_part",
- "generator_id",
- "unit_id_pudl",
- "prime_mover_code",
- "energy_source_code_1",
- "technology_description",
- "ferc_acct_name",
- "utility_id_eia",
- "true_gran",
- "appro_part_label",
- "appro_record_id_eia",
- "ferc1_generator_agg_id",
- "capacity_eoy_mw",
- "capacity_factor",
- "capacity_mw",
- "construction_year",
- "fraction_owned",
- "fuel_cost_per_mmbtu",
- "fuel_cost_per_mwh",
- "fuel_type_code_pudl",
- "generator_retirement_date",
- "unit_heat_rate_mmbtu_per_mwh",
- "installation_year",
- "net_generation_mwh",
- "generator_operating_year",
- "operational_status",
- "operational_status_pudl",
- "ownership_record_type",
- "ownership_dupe",
- "planned_generator_retirement_date",
- "plant_id_pudl",
- "plant_name_eia",
- "plant_name_ppe",
- "plant_part_id_eia",
- "record_count",
- "total_fuel_cost",
- "total_mmbtu",
- "utility_id_pudl",
- "report_year",
- "plant_id_report_year",
- ],
- "primary_key": ["record_id_eia"],
- },
- "sources": ["eia860", "eia923"],
- "etl_group": "outputs",
- "field_namespace": "eia",
- },
"core_eia__codes_prime_movers": {
"description": "Long descriptions explaining the short prime mover codes reported in the EIA-860 and EIA-923.",
"schema": {
diff --git a/src/pudl/metadata/resources/ferc1.py b/src/pudl/metadata/resources/ferc1.py
index b76bd418c3..6f64e0ccf9 100644
--- a/src/pudl/metadata/resources/ferc1.py
+++ b/src/pudl/metadata/resources/ferc1.py
@@ -802,16 +802,6 @@
"etl_group": "ferc1",
"field_namespace": "ferc1",
},
- "retained_earnings_appropriations_ferc1": {
- "description": "Retained Earnings - some of the unstructed part of schedule 118.",
- "schema": {
- "fields": ["utility_id_ferc1", "report_year", "utility_type", "record_id"],
- },
- "sources": ["ferc1"],
- "etl_group": "ferc1_disabled",
- "field_namespace": "ferc1",
- "create_database_schema": False,
- },
"core_ferc1__yearly_operating_revenues_sched300": {
"description": (
"Electric operating revenues - The structed part of schedule 300."
diff --git a/src/pudl/metadata/resources/ferc1_eia_record_linkage.py b/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
index 5592735261..2163307820 100644
--- a/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
+++ b/src/pudl/metadata/resources/ferc1_eia_record_linkage.py
@@ -2,7 +2,7 @@
from typing import Any
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
- "plant_parts_eia": {
+ "out_eia__yearly_plant_parts": {
"description": """Output table with the aggregation of all EIA plant parts. For use with matching to FERC 1.
Practically speaking, a plant is a collection of generator(s). There are many
@@ -80,7 +80,7 @@
"etl_group": "outputs",
"field_namespace": "eia",
},
- "mega_generators_eia": {
+ "out_eia__yearly_generators_by_ownership": {
"description": "A mega table of all EIA generators with ownership integrated.",
"schema": {
"fields": [
From aaa99eee53b0dea1abb9b8a2d990b233fce306f9 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 14 Dec 2023 01:43:41 +0000
Subject: [PATCH 68/70] Update conda-lock.yml and rendered conda environment
files.
---
environments/conda-linux-64.lock.yml | 121 +-
environments/conda-lock.yml | 1713 ++++++++++++-------------
environments/conda-osx-64.lock.yml | 123 +-
environments/conda-osx-arm64.lock.yml | 123 +-
4 files changed, 1018 insertions(+), 1062 deletions(-)
diff --git a/environments/conda-linux-64.lock.yml b/environments/conda-linux-64.lock.yml
index 2eec140474..c1e746c6af 100644
--- a/environments/conda-linux-64.lock.yml
+++ b/environments/conda-linux-64.lock.yml
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: linux-64
-# input_hash: 566bcbefc936d18bbf3a48ce8800e5d3209d9925447fc48984c419514bfaa6f6
+# input_hash: 25338bdeb54a81fb064efcdf38a56212bb8da4efc4654985f265ded511dcb38f
channels:
- conda-forge
@@ -43,11 +43,11 @@ dependencies:
- libbrotlicommon=1.1.0=hd590300_1
- libcrc32c=1.1.2=h9c3ff4c_0
- libdeflate=1.19=hd590300_0
- - libev=4.33=h516909a_1
+ - libev=4.33=hd590300_2
- libexpat=2.5.0=hcb278e6_1
- libffi=3.4.2=h7f98852_5
- libgfortran5=13.2.0=ha4646dd_3
- - libiconv=1.17=h166bdaf_0
+ - libiconv=1.17=hd590300_1
- libjpeg-turbo=3.0.0=hd590300_1
- libnsl=2.0.1=hd590300_0
- libnuma=2.0.16=h0b41bf4_1
@@ -92,7 +92,7 @@ dependencies:
- libgfortran-ng=13.2.0=h69a702a_3
- libkml=1.3.0=h01aab08_1018
- libllvm14=14.0.6=hcd5def8_4
- - libnghttp2=1.58.0=h47da74e_0
+ - libnghttp2=1.58.0=h47da74e_1
- libpng=1.6.39=h753d276_0
- libprotobuf=4.24.4=hf27288f_0
- libre2-11=2023.06.02=h7a70373_0
@@ -106,7 +106,7 @@ dependencies:
- readline=8.2=h8228510_1
- s2n=1.3.56=h06160fa_0
- tk=8.6.13=noxft_h4845f30_101
- - ucx=1.15.0=hae80064_1
+ - ucx=1.15.0=h75e419f_2
- xorg-libsm=1.2.4=h7391055_0
- zeromq=4.3.5=h59595ed_0
- zlib=1.2.13=hd590300_5
@@ -117,7 +117,7 @@ dependencies:
- freetype=2.12.1=h267a509_2
- krb5=1.21.2=h659d440_0
- libarchive=3.7.2=h039dbb9_0
- - libglib=2.78.1=h783c2da_1
+ - libglib=2.78.3=h783c2da_0
- libllvm15=15.0.7=h5cf9203_3
- libopenblas=0.3.25=pthreads_h413a1c8_0
- libthrift=0.19.0=hb90f79a_1
@@ -136,7 +136,7 @@ dependencies:
- alabaster=0.7.13=pyhd8ed1ab_0
- anyascii=0.3.2=pyhd8ed1ab_0
- appdirs=1.4.4=pyh9f0ad1d_0
- - astroid=3.0.1=py311h38be061_0
+ - astroid=3.0.2=py311h38be061_0
- atk-1.0=2.38.0=hd4edc92_1
- attrs=23.1.0=pyh71513ae_1
- aws-c-event-stream=0.3.2=h1fff966_7
@@ -160,15 +160,15 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.10=pyhd8ed1ab_0
+ - dagster-pipes=1.5.12=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- dbus=1.13.6=h5008d03_3
- debugpy=1.8.0=py311hb755f60_1
- decorator=5.1.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- - distlib=0.3.7=pyhd8ed1ab_0
+ - distlib=0.3.8=pyhd8ed1ab_0
- docstring_parser=0.15=pyhd8ed1ab_0
- - docutils=0.20.1=py311h38be061_2
+ - docutils=0.20.1=py311h38be061_3
- entrypoints=0.4=pyhd8ed1ab_0
- et_xmlfile=1.1.0=pyhd8ed1ab_0
- exceptiongroup=1.2.0=pyhd8ed1ab_0
@@ -178,10 +178,10 @@ dependencies:
- fontconfig=2.14.2=h14ed4e7_0
- freexl=2.0.0=h743c826_0
- frozenlist=1.4.0=py311h459d7ec_1
- - fsspec=2023.12.0=pyhca7485f_0
+ - fsspec=2023.12.2=pyhca7485f_0
- gdk-pixbuf=2.42.10=h829c605_4
- - google-cloud-sdk=455.0.0=py311h38be061_0
- - greenlet=3.0.1=py311hb755f60_0
+ - google-cloud-sdk=457.0.0=py311h38be061_0
+ - greenlet=3.0.2=py311hb755f60_0
- gts=0.7.6=h977cf35_4
- hpack=4.0.0=pyh9f0ad1d_0
- httptools=0.6.1=py311h459d7ec_0
@@ -202,13 +202,13 @@ dependencies:
- kiwisolver=1.4.5=py311h9547e67_1
- lcms2=2.16=hb7c19ff_0
- libblas=3.9.0=20_linux64_openblas
- - libcurl=8.4.0=hca28451_0
+ - libcurl=8.5.0=hca28451_0
- libgrpc=1.59.2=hd6c4280_0
- - libpq=16.1=hfc447b1_2
+ - libpq=16.1=h33b98f1_7
- libwebp=1.3.2=h658648e_1
- llvmlite=0.41.1=py311ha6695c7_0
- locket=1.0.0=pyhd8ed1ab_0
- - lxml=4.9.3=py311h1a07684_1
+ - lxml=4.9.3=py311h1a07684_2
- marko=2.0.2=pyhd8ed1ab_0
- markupsafe=2.1.3=py311h459d7ec_1
- mdurl=0.1.0=pyhd8ed1ab_0
@@ -218,7 +218,6 @@ dependencies:
- msgpack-python=1.0.7=py311h9547e67_0
- multidict=6.0.4=py311h459d7ec_1
- multimethod=1.9.1=pyhd8ed1ab_0
- - munch=4.0.0=pyhd8ed1ab_0
- munkres=1.1.4=pyh9f0ad1d_0
- mypy_extensions=1.0.0=pyha770c72_0
- nest-asyncio=1.5.8=pyhd8ed1ab_0
@@ -234,7 +233,7 @@ dependencies:
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
- platformdirs=4.1.0=pyhd8ed1ab_0
- pluggy=1.3.0=pyhd8ed1ab_0
- - prettier=3.1.0=h31abb78_0
+ - prettier=3.1.1=h31abb78_0
- prometheus_client=0.19.0=pyhd8ed1ab_0
- psutil=5.9.5=py311h459d7ec_1
- ptyprocess=0.7.0=pyhd3deb0d_0
@@ -256,14 +255,14 @@ dependencies:
- pywin32-on-windows=0.1.0=pyh1179c8e_3
- pyxlsb=1.0.10=pyhd8ed1ab_0
- pyyaml=6.0.1=py311h459d7ec_1
- - pyzmq=25.1.1=py311h34ded2d_2
+ - pyzmq=25.1.2=py311h34ded2d_0
- regex=2023.10.3=py311h459d7ec_0
- rfc3986=2.0.0=pyhd8ed1ab_0
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- rpds-py=0.13.2=py311h46250e7_0
- rtree=1.1.0=py311h3bb2b0f_0
- ruamel.yaml.clib=0.2.7=py311h459d7ec_2
- - ruff=0.1.6=py311h7145743_0
+ - ruff=0.1.7=py311h7145743_0
- send2trash=1.8.2=pyh41d4057_0
- setuptools=68.2.2=pyhd8ed1ab_0
- shellingham=1.5.4=pyhd8ed1ab_0
@@ -288,7 +287,7 @@ dependencies:
- traitlets=5.14.0=pyhd8ed1ab_0
- types-python-dateutil=2.8.19.14=pyhd8ed1ab_0
- types-pyyaml=6.0.12.12=pyhd8ed1ab_0
- - typing_extensions=4.8.0=pyha770c72_0
+ - typing_extensions=4.9.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_0
- unicodecsv=0.14.1=pyhd8ed1ab_2
- uri-template=1.3.0=pyhd8ed1ab_0
@@ -316,7 +315,7 @@ dependencies:
- async-lru=2.0.4=pyhd8ed1ab_0
- aws-c-auth=0.7.7=h4faf3ed_1
- aws-c-mqtt=0.9.10=hba57965_1
- - babel=2.13.1=pyhd8ed1ab_0
+ - babel=2.14.0=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
- bleach=6.1.0=pyhd8ed1ab_0
- cached-property=1.5.2=hd8ed1ab_1
@@ -331,16 +330,16 @@ dependencies:
- coloredlogs=14.0=pyhd8ed1ab_3
- comm=0.1.4=pyhd8ed1ab_0
- coverage=7.3.2=py311h459d7ec_0
- - curl=8.4.0=hca28451_0
+ - curl=8.5.0=hca28451_0
- fonttools=4.46.0=py311h459d7ec_0
- gitdb=4.0.11=pyhd8ed1ab_0
- graphql-core=3.2.3=pyhd8ed1ab_0
- grpcio=1.59.2=py311ha6695c7_0
- h11=0.14.0=pyhd8ed1ab_0
- h2=4.1.0=pyhd8ed1ab_0
- - hdf5=1.14.2=nompi_h4f84152_100
+ - hdf5=1.14.3=nompi_h4f84152_100
- html5lib=1.1=pyh9f0ad1d_0
- - hypothesis=6.91.0=pyha770c72_0
+ - hypothesis=6.92.0=pyha770c72_0
- importlib-metadata=7.0.0=pyha770c72_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- isodate=0.6.1=pyhd8ed1ab_0
@@ -366,13 +365,13 @@ dependencies:
- partd=1.4.1=pyhd8ed1ab_0
- pexpect=4.8.0=pyh1a96a4e_2
- pillow=10.1.0=py311ha6c5da5_0
- - pint=0.22=pyhd8ed1ab_1
+ - pint=0.23=pyhd8ed1ab_0
- pip=23.3.1=pyhd8ed1ab_0
- - postgresql=16.1=h8972f4a_2
+ - postgresql=16.1=h8972f4a_7
- proj=9.3.0=h1d62c97_2
- - prompt-toolkit=3.0.41=pyha770c72_0
+ - prompt-toolkit=3.0.42=pyha770c72_0
- protobuf=4.24.4=py311h46cbc50_0
- - psycopg2=2.9.7=py311h03dec38_1
+ - psycopg2=2.9.9=py311h03dec38_0
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
- pyproject_hooks=1.0.0=pyhd8ed1ab_0
- pytest=7.4.3=pyhd8ed1ab_0
@@ -380,7 +379,7 @@ dependencies:
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.31.1=pyhd8ed1ab_0
+ - referencing=0.32.0=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
@@ -388,7 +387,7 @@ dependencies:
- terminado=0.18.0=pyh0d859eb_0
- tinycss2=1.2.1=pyhd8ed1ab_0
- tqdm=4.66.1=pyhd8ed1ab_0
- - typing-extensions=4.8.0=hd8ed1ab_0
+ - typing-extensions=4.9.0=hd8ed1ab_0
- typing_inspect=0.9.0=pyhd8ed1ab_0
- universal_pathlib=0.1.4=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
@@ -403,7 +402,7 @@ dependencies:
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- aws-c-s3=0.4.1=hfadff92_0
- - botocore=1.33.6=pyhd8ed1ab_0
+ - botocore=1.33.13=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.7=py311hcb13ee4_1
@@ -411,7 +410,7 @@ dependencies:
- geotiff=1.7.1=hf074850_14
- gitpython=3.1.40=pyhd8ed1ab_0
- google-crc32c=1.1.2=py311h9b08b9c_5
- - googleapis-common-protos=1.61.0=pyhd8ed1ab_0
+ - googleapis-common-protos=1.62.0=pyhd8ed1ab_0
- gql=3.4.1=pyhd8ed1ab_0
- graphql-relay=3.2.0=pyhd8ed1ab_0
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
@@ -419,7 +418,7 @@ dependencies:
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=7.0.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
+ - jupyter_server_terminals=0.5.0=pyhd8ed1ab_0
- kealib=1.5.2=hcd42e92_1
- libnetcdf=4.9.2=nompi_h80fb2b6_112
- libspatialite=5.1.0=h7385560_2
@@ -428,8 +427,8 @@ dependencies:
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311h459d7ec_6
- poppler=23.12.0=h590f24d_0
- - prompt_toolkit=3.0.41=hd8ed1ab_0
- - psycopg2-binary=2.9.7=pyhd8ed1ab_1
+ - prompt_toolkit=3.0.42=hd8ed1ab_0
+ - psycopg2-binary=2.9.9=pyhd8ed1ab_0
- pybtex=0.24.0=pyhd8ed1ab_2
- pydantic-core=2.14.5=py311h46250e7_0
- pyproj=3.6.1=py311h1facc83_4
@@ -443,13 +442,13 @@ dependencies:
- sqlalchemy=2.0.23=py311h459d7ec_0
- stack_data=0.6.2=pyhd8ed1ab_0
- starlette=0.33.0=pyhd8ed1ab_0
- - tiledb=2.16.3=h8c794c1_3
+ - tiledb=2.18.2=h8c794c1_0
- ukkonen=1.0.1=py311h9547e67_4
- uvicorn=0.24.0.post1=py311h38be061_0
- watchfiles=0.21.0=py311h46250e7_0
- aiohttp=3.8.6=py311h459d7ec_1
- alembic=1.13.0=pyhd8ed1ab_0
- - arelle-release=2.18.0=pyhd8ed1ab_0
+ - arelle-release=2.19.0=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-crt-cpp=0.24.7=h97e63c7_6
- bottleneck=1.3.7=py311h1f0f07a_1
@@ -459,26 +458,26 @@ dependencies:
- dnspython=2.4.2=pyhd8ed1ab_1
- ensureconda=1.4.3=pyhd8ed1ab_0
- folium=0.15.1=pyhd8ed1ab_0
- - google-resumable-media=2.6.0=pyhd8ed1ab_0
+ - google-resumable-media=2.7.0=pyhd8ed1ab_0
- graphene=3.3=pyhd8ed1ab_0
- grpcio-status=1.59.2=pyhd8ed1ab_0
- h3-py=3.7.6=py311hb755f60_1
- httpx=0.25.2=pyhd8ed1ab_0
- - identify=2.5.32=pyhd8ed1ab_0
- - ipython=8.18.1=pyh31011fe_2
+ - identify=2.5.33=pyhd8ed1ab_0
+ - ipython=8.18.1=pyh707e725_3
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
- - libgdal=3.8.1=hcae7082_1
+ - libgdal=3.8.1=hd0089ee_2
- numba=0.58.1=py311h96b013e_0
- numexpr=2.8.7=py311h039bad6_104
- oauthlib=3.2.2=pyhd8ed1ab_0
- - pandas=2.1.3=py311h320fe9a_0
+ - pandas=2.1.4=py311h320fe9a_0
- pango=1.50.14=ha41ecd1_2
- pybtex-docutils=1.0.3=py311h38be061_1
- pydantic=2.5.2=pyhd8ed1ab_0
- pyopenssl=23.3.0=pyhd8ed1ab_0
- - readthedocs-sphinx-ext=2.2.3=pyhd8ed1ab_0
+ - readthedocs-sphinx-ext=2.2.4=pyhd8ed1ab_0
- requests-toolbelt=0.10.1=pyhd8ed1ab_0
- responses=0.24.1=pyhd8ed1ab_0
- s3transfer=0.8.2=pyhd8ed1ab_0
@@ -490,18 +489,18 @@ dependencies:
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0.post1=h38be061_0
- aws-sdk-cpp=1.11.182=h8beafcf_7
- - boto3=1.33.6=pyhd8ed1ab_0
+ - boto3=1.33.13=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.10=pyhd8ed1ab_0
+ - dagster=1.5.12=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.8.1=py311h815a124_1
+ - gdal=3.8.1=py311h67923c1_2
- geopandas-base=0.14.1=pyha770c72_0
- - google-auth=2.24.0=pyhca7485f_0
+ - google-auth=2.25.2=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- - gtk2=2.24.33=h90689f9_2
+ - gtk2=2.24.33=h7f000aa_3
- ipykernel=6.26.0=pyhf8b6a83_0
- ipywidgets=8.1.1=pyhd8ed1ab_0
- jsonschema-with-format-nongpl=4.20.0=pyhd8ed1ab_0
@@ -510,18 +509,18 @@ dependencies:
- matplotlib-base=3.8.2=py311h54ef318_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
- - pre-commit=3.5.0=pyha770c72_0
+ - pre-commit=3.6.0=pyha770c72_0
- pydantic-settings=2.1.0=pyhd8ed1ab_1
- requests-oauthlib=1.3.1=pyhd8ed1ab_0
- - scikit-learn=1.3.2=py311hc009520_1
+ - scikit-learn=1.3.2=py311hc009520_2
- timezonefinder=6.2.0=py311h459d7ec_2
- catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
- conda-lock=2.5.1=pyhd8ed1ab_0
- - dagster-graphql=1.5.10=pyhd8ed1ab_0
- - dagster-postgres=0.21.10=pyhd8ed1ab_0
- - fiona=1.9.5=py311hf8e0aa6_1
- - google-api-core=2.14.0=pyhd8ed1ab_0
- - google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
+ - dagster-graphql=1.5.12=pyhd8ed1ab_0
+ - dagster-postgres=0.21.12=pyhd8ed1ab_0
+ - fiona=1.9.5=py311hf8e0aa6_2
+ - google-api-core=2.15.0=pyhd8ed1ab_0
+ - google-auth-oauthlib=1.2.0=pyhd8ed1ab_0
- graphviz=9.0.0=h78e8752_1
- jupyter_console=6.6.3=pyhd8ed1ab_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
@@ -531,9 +530,9 @@ dependencies:
- qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.10=pyhd8ed1ab_0
+ - dagster-webserver=1.5.12=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- - google-cloud-core=2.3.3=pyhd8ed1ab_0
+ - google-cloud-core=2.4.1=pyhd8ed1ab_0
- libarrow-acero=14.0.1=h59595ed_3_cpu
- libarrow-flight=14.0.1=h120cb0d_3_cpu
- libarrow-gandiva=14.0.1=hacb8726_3_cpu
@@ -542,12 +541,12 @@ dependencies:
- pygraphviz=1.11=py311hbf5cbc9_2
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- - google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_server=2.11.2=pyhd8ed1ab_0
+ - google-cloud-storage=2.14.0=pyhca7485f_0
+ - jupyter_server=2.12.1=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=h59595ed_3_cpu
- libarrow-flight-sql=14.0.1=h61ff412_3_cpu
- nbconvert-pandoc=7.12.0=pyhd8ed1ab_0
- - gcsfs=2023.12.0=pyhd8ed1ab_0
+ - gcsfs=2023.12.2.post1=pyhd8ed1ab_0
- jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.2=pyhd8ed1ab_0
diff --git a/environments/conda-lock.yml b/environments/conda-lock.yml
index 4baf150d36..81e9736e0e 100644
--- a/environments/conda-lock.yml
+++ b/environments/conda-lock.yml
@@ -15,9 +15,9 @@
version: 1
metadata:
content_hash:
- linux-64: 566bcbefc936d18bbf3a48ce8800e5d3209d9925447fc48984c419514bfaa6f6
- osx-64: 39e56673d0def5503b315f36cec2b3e4bfd804758ec3bcea79dad417c6b146a2
- osx-arm64: c275fe8ff3012ad83a98252ba570f9b278f142720b73f42abfd4c4a1107f67e2
+ linux-64: 25338bdeb54a81fb064efcdf38a56212bb8da4efc4654985f265ded511dcb38f
+ osx-64: 0c46f3c7a9c86a583e588c727d6a7e7d3214ce9d048dd4e49df3a792c36b3e9c
+ osx-arm64: 3e57b04f7b2300284a5c81502687a5c373c4be31786246211ea23f019d4a513f
channels:
- url: conda-forge
used_env_vars: []
@@ -536,7 +536,7 @@ package:
category: main
optional: false
- name: arelle-release
- version: 2.18.0
+ version: 2.19.0
manager: conda
platform: linux-64
dependencies:
@@ -549,14 +549,14 @@ package:
python: ">=3.8"
python-dateutil: 2.*
regex: ""
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.18.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: cf492dd79a1d1d1ef2af299da2a604ca
- sha256: f3fa253f2a26faa56348acc2a76eaf55778f871b995af429c9636d9159a4b483
+ md5: 068ef7fb7bf167aba90230d0e00f92e9
+ sha256: 15befe5d71fd89539c54d963cb26baa05c6d511ebbc169b62ff2d72cb180259d
category: main
optional: false
- name: arelle-release
- version: 2.18.0
+ version: 2.19.0
manager: conda
platform: osx-64
dependencies:
@@ -569,14 +569,14 @@ package:
lxml: 4.*
openpyxl: 3.*
pyparsing: 3.*
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.18.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: cf492dd79a1d1d1ef2af299da2a604ca
- sha256: f3fa253f2a26faa56348acc2a76eaf55778f871b995af429c9636d9159a4b483
+ md5: 068ef7fb7bf167aba90230d0e00f92e9
+ sha256: 15befe5d71fd89539c54d963cb26baa05c6d511ebbc169b62ff2d72cb180259d
category: main
optional: false
- name: arelle-release
- version: 2.18.0
+ version: 2.19.0
manager: conda
platform: osx-arm64
dependencies:
@@ -589,10 +589,10 @@ package:
lxml: 4.*
openpyxl: 3.*
pyparsing: 3.*
- url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.18.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/arelle-release-2.19.0-pyhd8ed1ab_0.conda
hash:
- md5: cf492dd79a1d1d1ef2af299da2a604ca
- sha256: f3fa253f2a26faa56348acc2a76eaf55778f871b995af429c9636d9159a4b483
+ md5: 068ef7fb7bf167aba90230d0e00f92e9
+ sha256: 15befe5d71fd89539c54d963cb26baa05c6d511ebbc169b62ff2d72cb180259d
category: main
optional: false
- name: argon2-cffi
@@ -804,42 +804,42 @@ package:
category: main
optional: false
- name: astroid
- version: 3.0.1
+ version: 3.0.2
manager: conda
platform: linux-64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.1-py311h38be061_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.2-py311h38be061_0.conda
hash:
- md5: 1cfd7512ea9cf20a14568c6991da262f
- sha256: 5aa75c004f51dab842c28f1003e4bf5d6d725867e25474a722aa9fe331649301
+ md5: f8811b77ac1d389d28f8fb4960eee238
+ sha256: b0946bb0eaa24022e4a627e8e9ef595478333d594f5de7136333417f6be040d1
category: main
optional: false
- name: astroid
- version: 3.0.1
+ version: 3.0.2
manager: conda
platform: osx-64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/astroid-3.0.1-py311h6eed73b_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/astroid-3.0.2-py311h6eed73b_0.conda
hash:
- md5: 39aff7722673b4083e5b0d9aa7e33681
- sha256: 9b3233dda23466616bdab742c890062ec757e985f9314c93b5244d5c624b3c1f
+ md5: a2e76b577f7db434f81b40bb64176478
+ sha256: bb3e7ec8fcfecf374549403b69948d423751a11bc047c130ffb85a724c42e1bd
category: main
optional: false
- name: astroid
- version: 3.0.1
+ version: 3.0.2
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-3.0.1-py311h267d04e_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-3.0.2-py311h267d04e_0.conda
hash:
- md5: 1f1ed24d8d83b882f223403c119a1e44
- sha256: 97c2611101771a148a8c0b4fff48e93e2e969a2f5998f21d6aa034ca339fc209
+ md5: fc693fad14bdfb471f4538b4b02b7167
+ sha256: 9948ee58536c7d8ce9fbbaa250ffcbaed383eaef2b3477a9047f62ad6bb62cb5
category: main
optional: false
- name: asttokens
@@ -1625,45 +1625,45 @@ package:
category: main
optional: false
- name: babel
- version: 2.13.1
+ version: 2.14.0
manager: conda
platform: linux-64
dependencies:
python: ">=3.7"
pytz: ""
setuptools: ""
- url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda
hash:
- md5: 3ccff479c246692468f604df9c85ef26
- sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
+ md5: 9669586875baeced8fc30c0826c3270e
+ sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6
category: main
optional: false
- name: babel
- version: 2.13.1
+ version: 2.14.0
manager: conda
platform: osx-64
dependencies:
setuptools: ""
pytz: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda
hash:
- md5: 3ccff479c246692468f604df9c85ef26
- sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
+ md5: 9669586875baeced8fc30c0826c3270e
+ sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6
category: main
optional: false
- name: babel
- version: 2.13.1
+ version: 2.14.0
manager: conda
platform: osx-arm64
dependencies:
setuptools: ""
pytz: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda
hash:
- md5: 3ccff479c246692468f604df9c85ef26
- sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147
+ md5: 9669586875baeced8fc30c0826c3270e
+ sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6
category: main
optional: false
- name: backoff
@@ -1914,52 +1914,52 @@ package:
category: main
optional: false
- name: boto3
- version: 1.33.6
+ version: 1.33.13
manager: conda
platform: linux-64
dependencies:
- botocore: ">=1.33.6,<1.34.0"
+ botocore: ">=1.33.13,<1.34.0"
jmespath: ">=0.7.1,<2.0.0"
python: ">=3.7"
s3transfer: ">=0.8.2,<0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.6-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.13-pyhd8ed1ab_0.conda
hash:
- md5: fff8f43d8786f4e2a0ab4ed431f8c511
- sha256: 7fad398c6730cb751de3495b8204a7cd133aeecdd684273bc3359f31e1c01eca
+ md5: 4a1b38a0938b9fc23fb4fc202d832097
+ sha256: 01f797f967ac92346a5bffdae165c5d4bacda8405b828fcd58534a0f82287f76
category: main
optional: false
- name: boto3
- version: 1.33.6
+ version: 1.33.13
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
jmespath: ">=0.7.1,<2.0.0"
s3transfer: ">=0.8.2,<0.9.0"
- botocore: ">=1.33.6,<1.34.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.6-pyhd8ed1ab_0.conda
+ botocore: ">=1.33.13,<1.34.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.13-pyhd8ed1ab_0.conda
hash:
- md5: fff8f43d8786f4e2a0ab4ed431f8c511
- sha256: 7fad398c6730cb751de3495b8204a7cd133aeecdd684273bc3359f31e1c01eca
+ md5: 4a1b38a0938b9fc23fb4fc202d832097
+ sha256: 01f797f967ac92346a5bffdae165c5d4bacda8405b828fcd58534a0f82287f76
category: main
optional: false
- name: boto3
- version: 1.33.6
+ version: 1.33.13
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
jmespath: ">=0.7.1,<2.0.0"
s3transfer: ">=0.8.2,<0.9.0"
- botocore: ">=1.33.6,<1.34.0"
- url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.6-pyhd8ed1ab_0.conda
+ botocore: ">=1.33.13,<1.34.0"
+ url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.13-pyhd8ed1ab_0.conda
hash:
- md5: fff8f43d8786f4e2a0ab4ed431f8c511
- sha256: 7fad398c6730cb751de3495b8204a7cd133aeecdd684273bc3359f31e1c01eca
+ md5: 4a1b38a0938b9fc23fb4fc202d832097
+ sha256: 01f797f967ac92346a5bffdae165c5d4bacda8405b828fcd58534a0f82287f76
category: main
optional: false
- name: botocore
- version: 1.33.6
+ version: 1.33.13
manager: conda
platform: linux-64
dependencies:
@@ -1967,14 +1967,14 @@ package:
python: ">=3.7"
python-dateutil: ">=2.1,<3.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.6-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.13-pyhd8ed1ab_0.conda
hash:
- md5: e1c7565a0bfba34c3be07a3ad882356f
- sha256: 06549a55df5711e0306395e8187f03c46f25337fb7e9ab6c014cf26a76ca9cef
+ md5: d2566fd9134b6f8b8e69a07e9a1fa17e
+ sha256: 498d08274880ef279e9a6dd68f66b384d71321d92301fa60330712f9edceab0c
category: main
optional: false
- name: botocore
- version: 1.33.6
+ version: 1.33.13
manager: conda
platform: osx-64
dependencies:
@@ -1982,14 +1982,14 @@ package:
python-dateutil: ">=2.1,<3.0.0"
jmespath: ">=0.7.1,<2.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.6-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.13-pyhd8ed1ab_0.conda
hash:
- md5: e1c7565a0bfba34c3be07a3ad882356f
- sha256: 06549a55df5711e0306395e8187f03c46f25337fb7e9ab6c014cf26a76ca9cef
+ md5: d2566fd9134b6f8b8e69a07e9a1fa17e
+ sha256: 498d08274880ef279e9a6dd68f66b384d71321d92301fa60330712f9edceab0c
category: main
optional: false
- name: botocore
- version: 1.33.6
+ version: 1.33.13
manager: conda
platform: osx-arm64
dependencies:
@@ -1997,10 +1997,10 @@ package:
python-dateutil: ">=2.1,<3.0.0"
jmespath: ">=0.7.1,<2.0.0"
urllib3: ">=1.25.4,<1.27"
- url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.6-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.13-pyhd8ed1ab_0.conda
hash:
- md5: e1c7565a0bfba34c3be07a3ad882356f
- sha256: 06549a55df5711e0306395e8187f03c46f25337fb7e9ab6c014cf26a76ca9cef
+ md5: d2566fd9134b6f8b8e69a07e9a1fa17e
+ sha256: 498d08274880ef279e9a6dd68f66b384d71321d92301fa60330712f9edceab0c
category: main
optional: false
- name: bottleneck
@@ -3704,55 +3704,55 @@ package:
category: main
optional: false
- name: curl
- version: 8.4.0
+ version: 8.5.0
manager: conda
platform: linux-64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libcurl: 8.4.0
+ libcurl: 8.5.0
libgcc-ng: ">=12"
libssh2: ">=1.11.0,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/curl-8.4.0-hca28451_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/curl-8.5.0-hca28451_0.conda
hash:
- md5: 2bcf7689cae931dd35d9a45626f49fce
- sha256: 373c50b5b668cf39a71d17a42a96144d5efc1e62e7d81c1dd830e2493cefc8cc
+ md5: e5e83fb15e752dbc8f54c4ac7da7d0f1
+ sha256: febf098d6ca901b589d02c58eedcf5cb77d8fa4bfe35a52109f5909980b426db
category: main
optional: false
- name: curl
- version: 8.4.0
+ version: 8.5.0
manager: conda
platform: osx-64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libcurl: 8.4.0
+ libcurl: 8.5.0
libssh2: ">=1.11.0,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/curl-8.4.0-h726d00d_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/curl-8.5.0-h726d00d_0.conda
hash:
- md5: e1de44cac6e7774dd2c1e074f5d637a9
- sha256: 32cb23c91dd4cd88d3e6c7adb38ea3d1a1e5da79c63a20ec27d3d0924fcf644c
+ md5: a4440b9488f87d4da98c1a4cb121931a
+ sha256: f9e59c964945f5526cec0beb98e9983cee40da2a1e189f174af3da25a7c38c09
category: main
optional: false
- name: curl
- version: 8.4.0
+ version: 8.5.0
manager: conda
platform: osx-arm64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libcurl: 8.4.0
+ libcurl: 8.5.0
libssh2: ">=1.11.0,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.4.0-h2d989ff_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.5.0-h2d989ff_0.conda
hash:
- md5: ae975c2ea5334bd8a8ddecb5013a30c6
- sha256: d0fa5d1a7a6d0e9dcf930db1e4a750991244567ea5e09a15a00c163a52113465
+ md5: e69501791fc0552a668adf28344bb2b1
+ sha256: b74a05b0e0f606e8fe6def4bec62cdcc9ae4c08152e0b298252ae033019432d5
category: main
optional: false
- name: cycler
@@ -3792,7 +3792,7 @@ package:
category: main
optional: false
- name: dagster
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: linux-64
dependencies:
@@ -3800,7 +3800,7 @@ package:
click: ">=5.0"
coloredlogs: ">=6.1,<=14.0"
croniter: ">=0.3.34"
- dagster-pipes: ">=1.5.10,<1.5.11.0a0"
+ dagster-pipes: ">=1.5.12,<1.5.13.0a0"
docstring_parser: ""
grpcio: ">=1.44.0"
grpcio-health-checking: ">=1.44.0"
@@ -3826,14 +3826,14 @@ package:
typing_extensions: ">=4.4.0"
universal_pathlib: ""
watchdog: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: bcf42b675edb2999669116bc3b1ed789
- sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c
+ md5: a2ed0674a7dfb3b153148cc816855a4a
+ sha256: 027a55889f14722a2a4d2e9296d1390fa9521f2a908147333834359096dd3444
category: main
optional: false
- name: dagster
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-64
dependencies:
@@ -3866,15 +3866,15 @@ package:
alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
pydantic: ">1.10.0,!=1.10.7"
pendulum: <3
- dagster-pipes: ">=1.5.10,<1.5.11.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda
+ dagster-pipes: ">=1.5.12,<1.5.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: bcf42b675edb2999669116bc3b1ed789
- sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c
+ md5: a2ed0674a7dfb3b153148cc816855a4a
+ sha256: 027a55889f14722a2a4d2e9296d1390fa9521f2a908147333834359096dd3444
category: main
optional: false
- name: dagster
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-arm64
dependencies:
@@ -3907,32 +3907,32 @@ package:
alembic: ">=1.2.1,!=1.6.3,!=1.7.0,!=1.11.0"
pydantic: ">1.10.0,!=1.10.7"
pendulum: <3
- dagster-pipes: ">=1.5.10,<1.5.11.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.10-pyhd8ed1ab_0.conda
+ dagster-pipes: ">=1.5.12,<1.5.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: bcf42b675edb2999669116bc3b1ed789
- sha256: dcee8473cbd1823005285f5fc82fbb16d9d1b2b46bcdf8371ee4fe2fdb0ad50c
+ md5: a2ed0674a7dfb3b153148cc816855a4a
+ sha256: 027a55889f14722a2a4d2e9296d1390fa9521f2a908147333834359096dd3444
category: main
optional: false
- name: dagster-graphql
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: linux-64
dependencies:
- dagster: ">=1.5.10,<1.5.11.0a0"
+ dagster: ">=1.5.12,<1.5.13.0a0"
gql-with-requests: ">=3.0.0"
graphene: ">=3"
python: ">=3.8"
requests: ""
starlette: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: fd3569582db65a0c88fbc7d1bb803853
- sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129
+ md5: f516bf51aaa40ccc15add9302a659ec2
+ sha256: f1b4d4608e72dced9f1fe3f44673324eaa47abd1c4dea6a31c7aba5f6a2d8e47
category: dev
optional: true
- name: dagster-graphql
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-64
dependencies:
@@ -3941,15 +3941,15 @@ package:
python: ">=3.8"
graphene: ">=3"
gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.10,<1.5.11.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.12,<1.5.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: fd3569582db65a0c88fbc7d1bb803853
- sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129
+ md5: f516bf51aaa40ccc15add9302a659ec2
+ sha256: f1b4d4608e72dced9f1fe3f44673324eaa47abd1c4dea6a31c7aba5f6a2d8e47
category: dev
optional: true
- name: dagster-graphql
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-arm64
dependencies:
@@ -3958,110 +3958,110 @@ package:
python: ">=3.8"
graphene: ">=3"
gql-with-requests: ">=3.0.0"
- dagster: ">=1.5.10,<1.5.11.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.10-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.12,<1.5.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-graphql-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: fd3569582db65a0c88fbc7d1bb803853
- sha256: a142f082da2b7905713b09e0ad19eef971a5d4f66063ba7a2b19247e3932e129
+ md5: f516bf51aaa40ccc15add9302a659ec2
+ sha256: f1b4d4608e72dced9f1fe3f44673324eaa47abd1c4dea6a31c7aba5f6a2d8e47
category: dev
optional: true
- name: dagster-pipes
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: 69600c68efc23fb84c05c2e9c1c05947
- sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630
+ md5: 1c66ca63de735589ae01017033df2034
+ sha256: 561c86c9aa3211b37cc5675c7c8d719cb027525846c4dc2b879517a4558efa77
category: main
optional: false
- name: dagster-pipes
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: 69600c68efc23fb84c05c2e9c1c05947
- sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630
+ md5: 1c66ca63de735589ae01017033df2034
+ sha256: 561c86c9aa3211b37cc5675c7c8d719cb027525846c4dc2b879517a4558efa77
category: main
optional: false
- name: dagster-pipes
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-pipes-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: 69600c68efc23fb84c05c2e9c1c05947
- sha256: a98a8b2501af4bc112d5b2f5e3edea6c22a084651cc720786c405877b8507630
+ md5: 1c66ca63de735589ae01017033df2034
+ sha256: 561c86c9aa3211b37cc5675c7c8d719cb027525846c4dc2b879517a4558efa77
category: main
optional: false
- name: dagster-postgres
- version: 0.21.10
+ version: 0.21.12
manager: conda
platform: linux-64
dependencies:
- dagster: 1.5.10.*
+ dagster: 1.5.12.*
psycopg2-binary: ""
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.12-pyhd8ed1ab_0.conda
hash:
- md5: ec155b3a7172590ccbc89f461427b5aa
- sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0
+ md5: 3e77306199e15b093ad06f02c4b31947
+ sha256: 9b4ddf5b96c96b8208a7b627bdfb78ff472cd54c380c111f3ec85bb877147499
category: main
optional: false
- name: dagster-postgres
- version: 0.21.10
+ version: 0.21.12
manager: conda
platform: osx-64
dependencies:
psycopg2-binary: ""
python: ">=3.8"
- dagster: 1.5.10.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda
+ dagster: 1.5.12.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.12-pyhd8ed1ab_0.conda
hash:
- md5: ec155b3a7172590ccbc89f461427b5aa
- sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0
+ md5: 3e77306199e15b093ad06f02c4b31947
+ sha256: 9b4ddf5b96c96b8208a7b627bdfb78ff472cd54c380c111f3ec85bb877147499
category: main
optional: false
- name: dagster-postgres
- version: 0.21.10
+ version: 0.21.12
manager: conda
platform: osx-arm64
dependencies:
psycopg2-binary: ""
python: ">=3.8"
- dagster: 1.5.10.*
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.10-pyhd8ed1ab_0.conda
+ dagster: 1.5.12.*
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-postgres-0.21.12-pyhd8ed1ab_0.conda
hash:
- md5: ec155b3a7172590ccbc89f461427b5aa
- sha256: 4eb986655ef547d4dc72cd34b60687c9c3c390806493c15187c4d26d89d58fc0
+ md5: 3e77306199e15b093ad06f02c4b31947
+ sha256: 9b4ddf5b96c96b8208a7b627bdfb78ff472cd54c380c111f3ec85bb877147499
category: main
optional: false
- name: dagster-webserver
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: linux-64
dependencies:
click: ">=7.0,<9.0"
- dagster: ">=1.5.10,<1.5.11.0a0"
- dagster-graphql: ">=1.5.10,<1.5.11.0a0"
+ dagster: ">=1.5.12,<1.5.13.0a0"
+ dagster-graphql: ">=1.5.12,<1.5.13.0a0"
python: ">=3.8"
starlette: ""
uvicorn-standard: ""
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: 6161623733c03c21098dce0af904ea6b
- sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88
+ md5: 92f1a728da0e353b6981455a63ba2523
+ sha256: bb72a39afb99dc3d5bcbc9ab723daeb7a1926b3b20153d255f3ae058b1306593
category: dev
optional: true
- name: dagster-webserver
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-64
dependencies:
@@ -4069,16 +4069,16 @@ package:
uvicorn-standard: ""
python: ">=3.8"
click: ">=7.0,<9.0"
- dagster: ">=1.5.10,<1.5.11.0a0"
- dagster-graphql: ">=1.5.10,<1.5.11.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.12,<1.5.13.0a0"
+ dagster-graphql: ">=1.5.12,<1.5.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: 6161623733c03c21098dce0af904ea6b
- sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88
+ md5: 92f1a728da0e353b6981455a63ba2523
+ sha256: bb72a39afb99dc3d5bcbc9ab723daeb7a1926b3b20153d255f3ae058b1306593
category: dev
optional: true
- name: dagster-webserver
- version: 1.5.10
+ version: 1.5.12
manager: conda
platform: osx-arm64
dependencies:
@@ -4086,12 +4086,12 @@ package:
uvicorn-standard: ""
python: ">=3.8"
click: ">=7.0,<9.0"
- dagster: ">=1.5.10,<1.5.11.0a0"
- dagster-graphql: ">=1.5.10,<1.5.11.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.10-pyhd8ed1ab_0.conda
+ dagster: ">=1.5.12,<1.5.13.0a0"
+ dagster-graphql: ">=1.5.12,<1.5.13.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/dagster-webserver-1.5.12-pyhd8ed1ab_0.conda
hash:
- md5: 6161623733c03c21098dce0af904ea6b
- sha256: 975173f6a39f40d5fa505354007200741689714bb1eaf1cba8e52fab1a2bfc88
+ md5: 92f1a728da0e353b6981455a63ba2523
+ sha256: bb72a39afb99dc3d5bcbc9ab723daeb7a1926b3b20153d255f3ae058b1306593
category: dev
optional: true
- name: dask-core
@@ -4298,9 +4298,9 @@ package:
asgi-csrf: ">=0.9"
itsdangerous: ">=1.1"
click-default-group-wheel: ">=1.2.2"
+ pluggy: ">=1.0"
hupper: ">=1.9"
uvicorn: ">=0.11"
- pluggy: ">=1.0"
aiofiles: ">=0.4"
asgiref: ">=3.2.10"
janus: ">=0.6.2"
@@ -4327,9 +4327,9 @@ package:
asgi-csrf: ">=0.9"
itsdangerous: ">=1.1"
click-default-group-wheel: ">=1.2.2"
+ pluggy: ">=1.0"
hupper: ">=1.9"
uvicorn: ">=0.11"
- pluggy: ">=1.0"
aiofiles: ">=0.4"
asgiref: ">=3.2.10"
janus: ">=0.6.2"
@@ -4470,39 +4470,39 @@ package:
category: main
optional: false
- name: distlib
- version: 0.3.7
+ version: 0.3.8
manager: conda
platform: linux-64
dependencies:
python: 2.7|>=3.6
- url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
hash:
- md5: 12d8aae6994f342618443a8f05c652a0
- sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
+ md5: db16c66b759a64dc5183d69cc3745a52
+ sha256: 3ff11acdd5cc2f80227682966916e878e45ced94f59c402efb94911a5774e84e
category: main
optional: false
- name: distlib
- version: 0.3.7
+ version: 0.3.8
manager: conda
platform: osx-64
dependencies:
python: 2.7|>=3.6
- url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
hash:
- md5: 12d8aae6994f342618443a8f05c652a0
- sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
+ md5: db16c66b759a64dc5183d69cc3745a52
+ sha256: 3ff11acdd5cc2f80227682966916e878e45ced94f59c402efb94911a5774e84e
category: main
optional: false
- name: distlib
- version: 0.3.7
+ version: 0.3.8
manager: conda
platform: osx-arm64
dependencies:
python: 2.7|>=3.6
- url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda
hash:
- md5: 12d8aae6994f342618443a8f05c652a0
- sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619
+ md5: db16c66b759a64dc5183d69cc3745a52
+ sha256: 3ff11acdd5cc2f80227682966916e878e45ced94f59c402efb94911a5774e84e
category: main
optional: false
- name: dnspython
@@ -4647,10 +4647,10 @@ package:
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_2.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda
hash:
- md5: 33f8066e53679dd4be2355fec849bf01
- sha256: 4e90bbc89f9ab192cb247d8b8ebe54c33e57652f8a057f9f176d9d9dd32993b9
+ md5: 1c33f55e5cdcc2a2b973c432b5225bfe
+ sha256: 0011a2193a5995a6706936156ea5d1021153ec11eb8869b6abfe15a8f6f22ea8
category: main
optional: false
- name: docutils
@@ -4660,10 +4660,10 @@ package:
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py311h6eed73b_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py311h6eed73b_3.conda
hash:
- md5: d56b49f1a2c908d05d1ca6b3f85d0fd5
- sha256: 869e919066b308794e399bc551fc508c175da5f9324b7a324eb259cef8adabf2
+ md5: 2919376c4957faadc7b96f8894759bfb
+ sha256: 0fae62e203900a8a013ba2ede852645b87b1568980ddd8e11390c11dc24c3e3c
category: main
optional: false
- name: docutils
@@ -4673,10 +4673,10 @@ package:
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py311h267d04e_3.conda
hash:
- md5: e82ee6e9db96d5f7ddf289399744240d
- sha256: 3bc810b946ef8f87681ea4bee2610e8c418f9f61772f5d1ff3ffa803ae7cfbb6
+ md5: 29944e93a6f38b2e0fd4f6b743558959
+ sha256: 21af625c067faa77cd3aa2bfd8ca2449cdacdb1b531da8b4cbb476f4a928fdd9
category: main
optional: false
- name: email-validator
@@ -5027,26 +5027,24 @@ package:
manager: conda
platform: linux-64
dependencies:
- attrs: ">=17"
- click: ">=4.0"
+ attrs: ">=19.2.0"
+ click: ">=8.0,<9.dev0"
click-plugins: ">=1.0"
cligj: ">=0.5"
gdal: ""
- importlib-metadata: ""
libgcc-ng: ">=12"
libgdal: ">=3.8.0,<3.9.0a0"
libstdcxx-ng: ">=12"
- munch: ""
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
setuptools: ""
shapely: ""
- six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hf8e0aa6_1.conda
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.5-py311hf8e0aa6_2.conda
hash:
- md5: 961758d24e419de785e99b038033f9ae
- sha256: 5579deb516af98c167e11b0f9250ce53e1780eade803b03ad9507fb41b295a5c
+ md5: 01464abc0630e2285a799a2fa8370a8e
+ sha256: b01852ee1d8b23276bc69829c3013cbc1fe2004917cf5c5855fe2a22674112d7
category: main
optional: false
- name: fiona
@@ -5055,25 +5053,23 @@ package:
platform: osx-64
dependencies:
__osx: ">=10.9"
- attrs: ">=17"
- click: ">=4.0"
+ attrs: ">=19.2.0"
+ click: ">=8.0,<9.dev0"
click-plugins: ">=1.0"
cligj: ">=0.5"
gdal: ""
- importlib-metadata: ""
libcxx: ">=16.0.6"
libgdal: ">=3.8.0,<3.9.0a0"
- munch: ""
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
setuptools: ""
shapely: ""
- six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.5-py311h809632c_1.conda
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.9.5-py311h809632c_2.conda
hash:
- md5: fa38d43ecb08f4db5107fc6390949414
- sha256: 80cfa5135122c959a7ec656c7c1c1fcc60398669029d86fac1cb9a3d3c5cacc1
+ md5: cbe710fd5d800f110896f829c3e73a73
+ sha256: a6d7c1d5770ad0ebfb8e4642be9837f923853bc18be1dbf94c92ca36bd814e68
category: main
optional: false
- name: fiona
@@ -5082,25 +5078,23 @@ package:
platform: osx-arm64
dependencies:
__osx: ">=10.9"
- attrs: ">=17"
- click: ">=4.0"
+ attrs: ">=19.2.0"
+ click: ">=8.0,<9.dev0"
click-plugins: ">=1.0"
cligj: ">=0.5"
gdal: ""
- importlib-metadata: ""
libcxx: ">=16.0.6"
libgdal: ">=3.8.0,<3.9.0a0"
- munch: ""
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
setuptools: ""
shapely: ""
- six: ">=1.7"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py311h4760b73_1.conda
+ six: ""
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.9.5-py311h4760b73_2.conda
hash:
- md5: 0232bf494596b3d10e1cf21fbcbc8615
- sha256: 9d0ad417f817677f113608aacdbac93fad06bf2a149233d299a6ada5c56c6600
+ md5: 39ce132c143b433122e08c00f59c5a04
+ sha256: 3c2fe9936438ca53e0720c00c384f34263b22c63f5d890bc7b4a8b0f01657b84
category: main
optional: false
- name: folium
@@ -5738,39 +5732,39 @@ package:
category: main
optional: false
- name: fsspec
- version: 2023.12.0
+ version: 2023.12.2
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.2-pyhca7485f_0.conda
hash:
- md5: 036539452871d3b0906ff194ad808c9b
- sha256: 72c84d372aa5d60eb31c53c108bacefb0c6fb854047441b543738e144f1fae65
+ md5: bf40f2a8835b78b1f91083d306b493d2
+ sha256: 9269a5464698e0fde1f9c78544552817370c26df86e2a5a7518544b6a55ae8ee
category: main
optional: false
- name: fsspec
- version: 2023.12.0
+ version: 2023.12.2
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.2-pyhca7485f_0.conda
hash:
- md5: 036539452871d3b0906ff194ad808c9b
- sha256: 72c84d372aa5d60eb31c53c108bacefb0c6fb854047441b543738e144f1fae65
+ md5: bf40f2a8835b78b1f91083d306b493d2
+ sha256: 9269a5464698e0fde1f9c78544552817370c26df86e2a5a7518544b6a55ae8ee
category: main
optional: false
- name: fsspec
- version: 2023.12.0
+ version: 2023.12.2
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.2-pyhca7485f_0.conda
hash:
- md5: 036539452871d3b0906ff194ad808c9b
- sha256: 72c84d372aa5d60eb31c53c108bacefb0c6fb854047441b543738e144f1fae65
+ md5: bf40f2a8835b78b1f91083d306b493d2
+ sha256: 9269a5464698e0fde1f9c78544552817370c26df86e2a5a7518544b6a55ae8ee
category: main
optional: false
- name: furo
@@ -5822,26 +5816,26 @@ package:
category: main
optional: false
- name: gcsfs
- version: 2023.12.0
+ version: 2023.12.2.post1
manager: conda
platform: linux-64
dependencies:
aiohttp: ""
decorator: ">4.1.2"
- fsspec: 2023.12.0
+ fsspec: 2023.12.2
google-auth: ">=1.2"
google-auth-oauthlib: ""
google-cloud-storage: ">1.40"
python: ">=3.7"
requests: ""
- url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.12.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.12.2.post1-pyhd8ed1ab_0.conda
hash:
- md5: ad178e852250983982f3e2247635029d
- sha256: 39dfbcb02360069206835f395cc0f169ead32005ff0c941a73526cdcfc18cd4b
+ md5: adfc8c75a3b3cd33b3758f4c38558d12
+ sha256: c7b3dd4c505dde5f5773904db587c1f2b6128cd35f942fb55f8d6af98247814d
category: main
optional: false
- name: gcsfs
- version: 2023.12.0
+ version: 2023.12.2.post1
manager: conda
platform: osx-64
dependencies:
@@ -5852,15 +5846,15 @@ package:
google-auth: ">=1.2"
decorator: ">4.1.2"
google-cloud-storage: ">1.40"
- fsspec: 2023.12.0
- url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.12.0-pyhd8ed1ab_0.conda
+ fsspec: 2023.12.2
+ url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.12.2.post1-pyhd8ed1ab_0.conda
hash:
- md5: ad178e852250983982f3e2247635029d
- sha256: 39dfbcb02360069206835f395cc0f169ead32005ff0c941a73526cdcfc18cd4b
+ md5: adfc8c75a3b3cd33b3758f4c38558d12
+ sha256: c7b3dd4c505dde5f5773904db587c1f2b6128cd35f942fb55f8d6af98247814d
category: main
optional: false
- name: gcsfs
- version: 2023.12.0
+ version: 2023.12.2.post1
manager: conda
platform: osx-arm64
dependencies:
@@ -5871,11 +5865,11 @@ package:
google-auth: ">=1.2"
decorator: ">4.1.2"
google-cloud-storage: ">1.40"
- fsspec: 2023.12.0
- url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.12.0-pyhd8ed1ab_0.conda
+ fsspec: 2023.12.2
+ url: https://conda.anaconda.org/conda-forge/noarch/gcsfs-2023.12.2.post1-pyhd8ed1ab_0.conda
hash:
- md5: ad178e852250983982f3e2247635029d
- sha256: 39dfbcb02360069206835f395cc0f169ead32005ff0c941a73526cdcfc18cd4b
+ md5: adfc8c75a3b3cd33b3758f4c38558d12
+ sha256: c7b3dd4c505dde5f5773904db587c1f2b6128cd35f942fb55f8d6af98247814d
category: main
optional: false
- name: gdal
@@ -5883,7 +5877,7 @@ package:
manager: conda
platform: linux-64
dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.3,<1.14.4.0a0"
libgcc-ng: ">=12"
libgdal: 3.8.1
libstdcxx-ng: ">=12"
@@ -5892,10 +5886,10 @@ package:
openssl: ">=3.2.0,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.1-py311h815a124_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/gdal-3.8.1-py311h67923c1_2.conda
hash:
- md5: 6e9577466e5f1d18bd659746a5d948b7
- sha256: 6f1de976174089589b1ff7a6dd0d627f107f051a15cb046cb4703c0fc18480e3
+ md5: 36bdf6d2872decceaa4e5c97e128351c
+ sha256: 18e1c4276dfa5c7b11a796f4317a57b288b1bca82dcab5c466c16694773afff2
category: main
optional: false
- name: gdal
@@ -5904,7 +5898,7 @@ package:
platform: osx-64
dependencies:
__osx: ">=10.9"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.3,<1.14.4.0a0"
libcxx: ">=16.0.6"
libgdal: 3.8.1
libxml2: ">=2.11.6,<2.12.0a0"
@@ -5912,10 +5906,10 @@ package:
openssl: ">=3.2.0,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.1-py311h5646c56_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/gdal-3.8.1-py311h06f03dd_2.conda
hash:
- md5: 040c7cfdae3033444b9f193f9ac7dda2
- sha256: dc12757089d571dc33a5be6428bb50374fcfe2839230d8bc2b6aecf019545e64
+ md5: 9db36469ab5aad24176f0579c83d837c
+ sha256: 1f821540d3856eb0e341746acd7b506a137214030816b01df96b6272617c8d03
category: main
optional: false
- name: gdal
@@ -5924,7 +5918,7 @@ package:
platform: osx-arm64
dependencies:
__osx: ">=10.9"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.3,<1.14.4.0a0"
libcxx: ">=16.0.6"
libgdal: 3.8.1
libxml2: ">=2.11.6,<2.12.0a0"
@@ -5932,10 +5926,10 @@ package:
openssl: ">=3.2.0,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.1-py311h32a4f3d_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gdal-3.8.1-py311hff5d751_2.conda
hash:
- md5: 22050ed6dfba916d82f470c4e5c820e9
- sha256: f6f8555e164a37371dc729b9aa0773e60716218ed706cd621b3f5cbfbe2ea51e
+ md5: bacb4115610a2238864ae8cdbd13e040
+ sha256: bc852f0ec27d10a03334f2dceef34dfb8be05f76623a28d3fb51e20b0e096920
category: main
optional: false
- name: gdk-pixbuf
@@ -6425,7 +6419,7 @@ package:
category: main
optional: false
- name: google-api-core
- version: 2.14.0
+ version: 2.15.0
manager: conda
platform: linux-64
dependencies:
@@ -6434,14 +6428,14 @@ package:
protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
python: ">=3.7"
requests: ">=2.18.0,<3.0.0.dev0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.15.0-pyhd8ed1ab_0.conda
hash:
- md5: cebe18c719a6818849b921748aa91750
- sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
+ md5: e132b54eb1a75c1e536edfbb5ee7684c
+ sha256: ffc427bab6dcb6c6282046ebc17d2ff6918ebe55789d77256d28f85611e32f09
category: main
optional: false
- name: google-api-core
- version: 2.14.0
+ version: 2.15.0
manager: conda
platform: osx-64
dependencies:
@@ -6450,14 +6444,14 @@ package:
googleapis-common-protos: ">=1.56.2,<2.0.dev0"
protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
requests: ">=2.18.0,<3.0.0.dev0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.15.0-pyhd8ed1ab_0.conda
hash:
- md5: cebe18c719a6818849b921748aa91750
- sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
+ md5: e132b54eb1a75c1e536edfbb5ee7684c
+ sha256: ffc427bab6dcb6c6282046ebc17d2ff6918ebe55789d77256d28f85611e32f09
category: main
optional: false
- name: google-api-core
- version: 2.14.0
+ version: 2.15.0
manager: conda
platform: osx-arm64
dependencies:
@@ -6466,14 +6460,14 @@ package:
googleapis-common-protos: ">=1.56.2,<2.0.dev0"
protobuf: ">=3.19.5,<5.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
requests: ">=2.18.0,<3.0.0.dev0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.14.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.15.0-pyhd8ed1ab_0.conda
hash:
- md5: cebe18c719a6818849b921748aa91750
- sha256: 4bc666e51fe40266435b8e8a4137e47278e044ca26be34c05260236552914ebc
+ md5: e132b54eb1a75c1e536edfbb5ee7684c
+ sha256: ffc427bab6dcb6c6282046ebc17d2ff6918ebe55789d77256d28f85611e32f09
category: main
optional: false
- name: google-auth
- version: 2.24.0
+ version: 2.25.2
manager: conda
platform: linux-64
dependencies:
@@ -6486,14 +6480,14 @@ package:
pyu2f: ">=0.1.5"
requests: ">=2.20.0,<3.0.0"
rsa: ">=3.1.4,<5"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.24.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.2-pyhca7485f_0.conda
hash:
- md5: 5c80374ea4c24d3bd6822108d43715d0
- sha256: c270d1866bd01f3fa97e5c65496b853af6b1c8d58479132c8b3397534fbb2919
+ md5: ef008fe13beb99a47cbe5a7a68a1f0ea
+ sha256: 928960978bfdb77a912db60659ec30ec7e04d1ec12ba12f38ac61134158320d0
category: main
optional: false
- name: google-auth
- version: 2.24.0
+ version: 2.25.2
manager: conda
platform: osx-64
dependencies:
@@ -6506,14 +6500,14 @@ package:
cachetools: ">=2.0.0,<6.0"
aiohttp: ">=3.6.2,<4.0.0"
cryptography: ">=38.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.24.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.2-pyhca7485f_0.conda
hash:
- md5: 5c80374ea4c24d3bd6822108d43715d0
- sha256: c270d1866bd01f3fa97e5c65496b853af6b1c8d58479132c8b3397534fbb2919
+ md5: ef008fe13beb99a47cbe5a7a68a1f0ea
+ sha256: 928960978bfdb77a912db60659ec30ec7e04d1ec12ba12f38ac61134158320d0
category: main
optional: false
- name: google-auth
- version: 2.24.0
+ version: 2.25.2
manager: conda
platform: osx-arm64
dependencies:
@@ -6526,14 +6520,14 @@ package:
cachetools: ">=2.0.0,<6.0"
aiohttp: ">=3.6.2,<4.0.0"
cryptography: ">=38.0.3"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.24.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.25.2-pyhca7485f_0.conda
hash:
- md5: 5c80374ea4c24d3bd6822108d43715d0
- sha256: c270d1866bd01f3fa97e5c65496b853af6b1c8d58479132c8b3397534fbb2919
+ md5: ef008fe13beb99a47cbe5a7a68a1f0ea
+ sha256: 928960978bfdb77a912db60659ec30ec7e04d1ec12ba12f38ac61134158320d0
category: main
optional: false
- name: google-auth-oauthlib
- version: 1.1.0
+ version: 1.2.0
manager: conda
platform: linux-64
dependencies:
@@ -6541,14 +6535,14 @@ package:
google-auth: ">=2.15.0"
python: ">=3.6"
requests-oauthlib: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.2.0-pyhd8ed1ab_0.conda
hash:
- md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
- sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
+ md5: 2057f12885a73b4d621c075423cec969
+ sha256: 39d031780d9ac2da430ead078a40ff67db3ad57e24ab1e3c68b4e0f2b48a2311
category: main
optional: false
- name: google-auth-oauthlib
- version: 1.1.0
+ version: 1.2.0
manager: conda
platform: osx-64
dependencies:
@@ -6556,14 +6550,14 @@ package:
requests-oauthlib: ">=0.7.0"
click: ">=6.0.0"
google-auth: ">=2.15.0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.2.0-pyhd8ed1ab_0.conda
hash:
- md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
- sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
+ md5: 2057f12885a73b4d621c075423cec969
+ sha256: 39d031780d9ac2da430ead078a40ff67db3ad57e24ab1e3c68b4e0f2b48a2311
category: main
optional: false
- name: google-auth-oauthlib
- version: 1.1.0
+ version: 1.2.0
manager: conda
platform: osx-arm64
dependencies:
@@ -6571,98 +6565,98 @@ package:
requests-oauthlib: ">=0.7.0"
click: ">=6.0.0"
google-auth: ">=2.15.0"
- url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.1.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.2.0-pyhd8ed1ab_0.conda
hash:
- md5: ffa1e2fd52bc00ec0fc5680a2f4bd167
- sha256: fc12c5a06b4d073c855cc2c43edff0b444af7b0db860f578fee1486769af0f21
+ md5: 2057f12885a73b4d621c075423cec969
+ sha256: 39d031780d9ac2da430ead078a40ff67db3ad57e24ab1e3c68b4e0f2b48a2311
category: main
optional: false
- name: google-cloud-core
- version: 2.3.3
+ version: 2.4.1
manager: conda
platform: linux-64
dependencies:
google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
google-auth: ">=1.25.0,<3.0dev"
grpcio: ">=1.38.0,<2.0.0dev"
- python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
+ python: ">=3.8"
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: a26b1fa8555cc1d2f0f7ff9985303e66
- sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
+ md5: 1853cdebbfe25fb6ee253855a44945a6
+ sha256: d01b787bad2ec4da9536ce2cedb3e53ed092fe6a4a596c043ab358bb9b2fbcdd
category: main
optional: false
- name: google-cloud-core
- version: 2.3.3
+ version: 2.4.1
manager: conda
platform: osx-64
dependencies:
- python: ">=3.7"
+ python: ">=3.8"
google-auth: ">=1.25.0,<3.0dev"
google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
grpcio: ">=1.38.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: a26b1fa8555cc1d2f0f7ff9985303e66
- sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
+ md5: 1853cdebbfe25fb6ee253855a44945a6
+ sha256: d01b787bad2ec4da9536ce2cedb3e53ed092fe6a4a596c043ab358bb9b2fbcdd
category: main
optional: false
- name: google-cloud-core
- version: 2.3.3
+ version: 2.4.1
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.7"
+ python: ">=3.8"
google-auth: ">=1.25.0,<3.0dev"
google-api-core: ">=1.31.6,<3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0"
grpcio: ">=1.38.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.3.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.4.1-pyhd8ed1ab_0.conda
hash:
- md5: a26b1fa8555cc1d2f0f7ff9985303e66
- sha256: e8a840361b23ca7a9cfa62c1885fc66aa5ad94e48556782e9a032678c9f4b76e
+ md5: 1853cdebbfe25fb6ee253855a44945a6
+ sha256: d01b787bad2ec4da9536ce2cedb3e53ed092fe6a4a596c043ab358bb9b2fbcdd
category: main
optional: false
- name: google-cloud-sdk
- version: 455.0.0
+ version: 457.0.0
manager: conda
platform: linux-64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/google-cloud-sdk-455.0.0-py311h38be061_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/google-cloud-sdk-457.0.0-py311h38be061_0.conda
hash:
- md5: 1505ce6a9284c331e05de23b56d023ff
- sha256: 17c439e5b01341a4aae55a2f1841878244d25b365cef52b39fb9bfd3e30c8315
+ md5: 6948263c6cdb11b0c423e7fdb609fe9c
+ sha256: 289e354e0875d9bfef3615bbdacae94010b4fc48085f0c6a18adc1dab1f18023
category: main
optional: false
- name: google-cloud-sdk
- version: 455.0.0
+ version: 457.0.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/google-cloud-sdk-455.0.0-py311h6eed73b_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/google-cloud-sdk-457.0.0-py311h6eed73b_0.conda
hash:
- md5: 0a635aa75ccc84e4dd16e06b559d3d49
- sha256: 8e133ed925ed75409a354b564ff2ebc2ebb3ebdd659f2d190b4c198b164c6f8e
+ md5: dbbacfc479d3a156ef297edcb93b217c
+ sha256: fe1141fbb6339163d08c9174838777a9db6c7628d890cf5cff947494768f304b
category: main
optional: false
- name: google-cloud-sdk
- version: 455.0.0
+ version: 457.0.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/google-cloud-sdk-455.0.0-py311h267d04e_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/google-cloud-sdk-457.0.0-py311h267d04e_0.conda
hash:
- md5: 2f60b4b18d39e85bdf3557f19bd407be
- sha256: 9511a6c98a01a1e5013c73d8e7cb0d1200643e9d531cbc49ebebfb5cd9e71f27
+ md5: 7ceca26a434b734268312a5103b40b04
+ sha256: fbdb5fd25fa1e7d2e1dcafff647572b63596f5859141a1e6b04159b841b4859d
category: main
optional: false
- name: google-cloud-storage
- version: 2.13.0
+ version: 2.14.0
manager: conda
platform: linux-64
dependencies:
@@ -6674,14 +6668,14 @@ package:
protobuf: <5.0.0dev
python: ">=3.6"
requests: ">=2.18.0,<3.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.14.0-pyhca7485f_0.conda
hash:
- md5: fa7d4b2576d98b63d8ca84c76052eb95
- sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
+ md5: 7b2a2b429fd0b5571544019a6814cfe4
+ sha256: 175e88ea6e9cf353d63dfbb0007cb6be9240ab795c38ca4b5d5101b576383698
category: main
optional: false
- name: google-cloud-storage
- version: 2.13.0
+ version: 2.14.0
manager: conda
platform: osx-64
dependencies:
@@ -6693,14 +6687,14 @@ package:
protobuf: <5.0.0dev
google-resumable-media: ">=2.6.0"
google-auth: ">=2.23.3,<3.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.14.0-pyhca7485f_0.conda
hash:
- md5: fa7d4b2576d98b63d8ca84c76052eb95
- sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
+ md5: 7b2a2b429fd0b5571544019a6814cfe4
+ sha256: 175e88ea6e9cf353d63dfbb0007cb6be9240ab795c38ca4b5d5101b576383698
category: main
optional: false
- name: google-cloud-storage
- version: 2.13.0
+ version: 2.14.0
manager: conda
platform: osx-arm64
dependencies:
@@ -6712,10 +6706,10 @@ package:
protobuf: <5.0.0dev
google-resumable-media: ">=2.6.0"
google-auth: ">=2.23.3,<3.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.13.0-pyhca7485f_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-2.14.0-pyhca7485f_0.conda
hash:
- md5: fa7d4b2576d98b63d8ca84c76052eb95
- sha256: 8aeb7dc1298845316e9289100c5e54a9eb403c4244621d15654266c7dd225f16
+ md5: 7b2a2b429fd0b5571544019a6814cfe4
+ sha256: 175e88ea6e9cf353d63dfbb0007cb6be9240ab795c38ca4b5d5101b576383698
category: main
optional: false
- name: google-crc32c
@@ -6765,81 +6759,81 @@ package:
category: main
optional: false
- name: google-resumable-media
- version: 2.6.0
+ version: 2.7.0
manager: conda
platform: linux-64
dependencies:
google-crc32c: ">=1.0,<2.0.0dev"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.7.0-pyhd8ed1ab_0.conda
hash:
- md5: 74fd9d08866e60fc412abc8dd7c5486c
- sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
+ md5: 28d1e160d8b2e405b16bb40773135225
+ sha256: b7f08e89a491cfaa904328b96c1700da18d2cc33affefc2d15077e03ad4ec8bf
category: main
optional: false
- name: google-resumable-media
- version: 2.6.0
+ version: 2.7.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
google-crc32c: ">=1.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.7.0-pyhd8ed1ab_0.conda
hash:
- md5: 74fd9d08866e60fc412abc8dd7c5486c
- sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
+ md5: 28d1e160d8b2e405b16bb40773135225
+ sha256: b7f08e89a491cfaa904328b96c1700da18d2cc33affefc2d15077e03ad4ec8bf
category: main
optional: false
- name: google-resumable-media
- version: 2.6.0
+ version: 2.7.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
google-crc32c: ">=1.0,<2.0.0dev"
- url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.6.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.7.0-pyhd8ed1ab_0.conda
hash:
- md5: 74fd9d08866e60fc412abc8dd7c5486c
- sha256: 9e61d4ac7027b6447e83ab4b91fccc4baef6d1ba9490e20d06754254f7616bf5
+ md5: 28d1e160d8b2e405b16bb40773135225
+ sha256: b7f08e89a491cfaa904328b96c1700da18d2cc33affefc2d15077e03ad4ec8bf
category: main
optional: false
- name: googleapis-common-protos
- version: 1.61.0
+ version: 1.62.0
manager: conda
platform: linux-64
dependencies:
protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.62.0-pyhd8ed1ab_0.conda
hash:
- md5: f315d7fdc1905dcc2e18a1c7bed22fa9
- sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
+ md5: ca3d0c7ba3a15e943d9c715aba03ae62
+ sha256: 70da3fc08a742022c666d9807f0caba60be1ddbf09b6642c168001bace18c724
category: main
optional: false
- name: googleapis-common-protos
- version: 1.61.0
+ version: 1.62.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.7"
protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.62.0-pyhd8ed1ab_0.conda
hash:
- md5: f315d7fdc1905dcc2e18a1c7bed22fa9
- sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
+ md5: ca3d0c7ba3a15e943d9c715aba03ae62
+ sha256: 70da3fc08a742022c666d9807f0caba60be1ddbf09b6642c168001bace18c724
category: main
optional: false
- name: googleapis-common-protos
- version: 1.61.0
+ version: 1.62.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.7"
protobuf: ">=3.19.5,<5.0.0dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5"
- url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.61.0-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.62.0-pyhd8ed1ab_0.conda
hash:
- md5: f315d7fdc1905dcc2e18a1c7bed22fa9
- sha256: aa25665205e8d4895ff1bf042d2fc358a20c207271238069e13b87535f92184e
+ md5: ca3d0c7ba3a15e943d9c715aba03ae62
+ sha256: 70da3fc08a742022c666d9807f0caba60be1ddbf09b6642c168001bace18c724
category: main
optional: false
- name: gql
@@ -7174,7 +7168,7 @@ package:
category: dev
optional: true
- name: greenlet
- version: 3.0.1
+ version: 3.0.2
manager: conda
platform: linux-64
dependencies:
@@ -7182,14 +7176,14 @@ package:
libstdcxx-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.1-py311hb755f60_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.2-py311hb755f60_0.conda
hash:
- md5: 7c82abd17036c6ca0f02f2a8935c5572
- sha256: 8470a1c15889f4830df38966e29e3a7aa4473681b7b5997d916428c929544d74
+ md5: 59bf81c0e43e96ff1ebb5140ccc135b5
+ sha256: e11f4bf977c21d3c70bb772c57bb800319f1353a8f0bd947f7561e28eae8d808
category: main
optional: false
- name: greenlet
- version: 3.0.1
+ version: 3.0.2
manager: conda
platform: osx-64
dependencies:
@@ -7197,14 +7191,14 @@ package:
libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.1-py311hd39e593_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.2-py311hd39e593_0.conda
hash:
- md5: 447a2de59f80041e6f63c222d5a5e77f
- sha256: 872e40b28dce3abf5d3df621a99247a79d3e642eaf1db284c8a43888e1c7f74b
+ md5: 6005605b11c7db35cd5d4d04e645ecd3
+ sha256: 1120b061eb3216f3c2fd4db8a2150c5185742941c1a66c1e05a8bb26bfa9d026
category: main
optional: false
- name: greenlet
- version: 3.0.1
+ version: 3.0.2
manager: conda
platform: osx-arm64
dependencies:
@@ -7212,10 +7206,10 @@ package:
libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.1-py311hbaf5611_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.2-py311hbaf5611_0.conda
hash:
- md5: 9136cd518f65a952b2a37c80645ef610
- sha256: 6c8e2e5024ee26099d396a95a55c49ffe3eb8985c764ce875e95f01711f4c2a7
+ md5: a2c6cc57bc11c771364d436fe6508c89
+ sha256: 47ef5de059adf8ccfb99ef03e5e0337198c06c78c32bcafbf4432276dfac640b
category: main
optional: false
- name: grpcio
@@ -7361,17 +7355,17 @@ package:
manager: conda
platform: linux-64
dependencies:
- atk-1.0: ">=2.36.0"
- cairo: ">=1.16.0,<2.0.0a0"
- gdk-pixbuf: ">=2.42.6,<3.0a0"
- gettext: ">=0.19.8.1,<1.0a0"
- libgcc-ng: ">=9.4.0"
- libglib: ">=2.70.2,<3.0a0"
- pango: ">=1.50.3,<1.51.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h90689f9_2.tar.bz2
+ atk-1.0: ">=2.38.0"
+ cairo: ">=1.18.0,<2.0a0"
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ libgcc-ng: ">=12"
+ libglib: ">=2.78.3,<3.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h7f000aa_3.conda
hash:
- md5: 957a0255ab58aaf394a91725d73ab422
- sha256: 66d189ec36d67309fa3eb52d14d77b82359c10303c400eecc14f8eaca5939b87
+ md5: 0abfa7f9241a0f4fd732bc15773cfb0c
+ sha256: e659f5eca2a5f21d5fe859d8d1dae132a284800eb017b8b4e2286b252a230527
category: dev
optional: true
- name: gtk2
@@ -7379,16 +7373,16 @@ package:
manager: conda
platform: osx-64
dependencies:
- atk-1.0: ">=2.36.0"
- cairo: ">=1.16.0,<2.0.0a0"
- gdk-pixbuf: ">=2.42.6,<3.0a0"
- gettext: ">=0.19.8.1,<1.0a0"
- libglib: ">=2.70.2,<3.0a0"
- pango: ">=1.50.3,<1.51.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h7c1209e_2.tar.bz2
+ atk-1.0: ">=2.38.0"
+ cairo: ">=1.18.0,<2.0a0"
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ libglib: ">=2.78.3,<3.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h8ca4665_3.conda
hash:
- md5: 307614630946527e302b7dd042a5cfa2
- sha256: 4f5f5116c5c81a4bfcc01ea9eb9e489346a87d7248eb44963f6552ae0fb3a984
+ md5: e13eed1e66893d4e76f9e735536ea2a4
+ sha256: f98e984eff98dd69cb1b379a75819ea97c0af737cd147f5e89a671123171dbbb
category: dev
optional: true
- name: gtk2
@@ -7396,16 +7390,16 @@ package:
manager: conda
platform: osx-arm64
dependencies:
- atk-1.0: ">=2.36.0"
- cairo: ">=1.16.0,<2.0.0a0"
- gdk-pixbuf: ">=2.42.6,<3.0a0"
- gettext: ">=0.19.8.1,<1.0a0"
- libglib: ">=2.70.2,<3.0a0"
- pango: ">=1.50.3,<1.51.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h57013de_2.tar.bz2
+ atk-1.0: ">=2.38.0"
+ cairo: ">=1.18.0,<2.0a0"
+ gdk-pixbuf: ">=2.42.10,<3.0a0"
+ gettext: ">=0.21.1,<1.0a0"
+ libglib: ">=2.78.3,<3.0a0"
+ pango: ">=1.50.14,<2.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h7895bb2_3.conda
hash:
- md5: 144fb77338d90012ebe80d3dd13fc725
- sha256: 4bebd9809bb7e76b46af054f594eda5f280a796b7ec7f5870bd185ad5b3da338
+ md5: e3d35c8b7a8fdb840c286ccaf0f082b2
+ sha256: 63062472f3173991ce521f045f3a5dd5c7e147d127476b0c3a20a2aca03339e6
category: dev
optional: true
- name: gts
@@ -7673,58 +7667,60 @@ package:
category: main
optional: false
- name: hdf5
- version: 1.14.2
+ version: 1.14.3
manager: conda
platform: linux-64
dependencies:
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
+ libaec: ">=1.1.2,<2.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
libgcc-ng: ">=12"
libgfortran-ng: ""
libgfortran5: ">=12.3.0"
libstdcxx-ng: ">=12"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.2-nompi_h4f84152_100.conda
+ openssl: ">=3.2.0,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda
hash:
- md5: 2de6a9bc8083b49f09b2f6eb28d3ba3c
- sha256: f70f18291f912ba019cbb736bb87b6487021154733cd109147a6d9672790b6b8
+ md5: d471a5c3abc984b662d9bae3bb7fd8a5
+ sha256: b814f8f9598cc6e50127533ec256725183ba69db5fd8cf5443223627f19e3e59
category: main
optional: false
- name: hdf5
- version: 1.14.2
+ version: 1.14.3
manager: conda
platform: osx-64
dependencies:
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
+ __osx: ">=10.9"
+ libaec: ">=1.1.2,<2.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
libgfortran: 5.*
- libgfortran5: ">=12.3.0"
+ libgfortran5: ">=13.2.0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.2-nompi_hedada53_100.conda
+ openssl: ">=3.2.0,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.3-nompi_h691f4bf_100.conda
hash:
- md5: 2b1d4f355b60eb10c5cb435b9f0e664f
- sha256: 08ab97d63ab4be60c92d3f5931effc565ae6ee0cd686eba81b9d20daf5f181ff
+ md5: 8e2ac4ae815a8c9743fe37d70f48f075
+ sha256: 158dd2ab901659b47e8f7ee0ec1d9e45a1fedc4871391a44a1c8b9e8ba4c9c6b
category: main
optional: false
- name: hdf5
- version: 1.14.2
+ version: 1.14.3
manager: conda
platform: osx-arm64
dependencies:
- libaec: ">=1.0.6,<2.0a0"
- libcurl: ">=8.2.1,<9.0a0"
- libcxx: ">=15.0.7"
+ __osx: ">=10.9"
+ libaec: ">=1.1.2,<2.0a0"
+ libcurl: ">=8.4.0,<9.0a0"
+ libcxx: ">=16.0.6"
libgfortran: 5.*
- libgfortran5: ">=12.3.0"
+ libgfortran5: ">=13.2.0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.2,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.2-nompi_h3aba7b3_100.conda
+ openssl: ">=3.2.0,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.3-nompi_h5bb55e9_100.conda
hash:
- md5: 842c5b010b219058098ebfe5aa5891b9
- sha256: 2749910e21a7d1f88a81dc4709fc3565a4a3954eadb4409e7a5be1fc13a5b7ca
+ md5: 120fefd1da806c4d708ecdfe31263f0c
+ sha256: 22331a0ac71a4dd1868f05f8197c36815a41a9f2dcfd01b73ff0d87d9e0ea087
category: main
optional: false
- name: hpack
@@ -8059,7 +8055,7 @@ package:
category: main
optional: false
- name: hypothesis
- version: 6.91.0
+ version: 6.92.0
manager: conda
platform: linux-64
dependencies:
@@ -8070,14 +8066,14 @@ package:
python: ">=3.8"
setuptools: ""
sortedcontainers: ">=2.1.0,<3.0.0"
- url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.92.0-pyha770c72_0.conda
hash:
- md5: 06da22edc102acb39fcf951b4872f754
- sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117
+ md5: af99a4aaa4d7abf306f6799b13a1c018
+ sha256: 1fec99d75cc291bb2582a2936fa8d8aab59d43a2cda88186ce50fb1d39d208b8
category: main
optional: false
- name: hypothesis
- version: 6.91.0
+ version: 6.92.0
manager: conda
platform: osx-64
dependencies:
@@ -8088,14 +8084,14 @@ package:
sortedcontainers: ">=2.1.0,<3.0.0"
backports.zoneinfo: ">=0.2.1"
exceptiongroup: ">=1.0.0rc8"
- url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.92.0-pyha770c72_0.conda
hash:
- md5: 06da22edc102acb39fcf951b4872f754
- sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117
+ md5: af99a4aaa4d7abf306f6799b13a1c018
+ sha256: 1fec99d75cc291bb2582a2936fa8d8aab59d43a2cda88186ce50fb1d39d208b8
category: main
optional: false
- name: hypothesis
- version: 6.91.0
+ version: 6.92.0
manager: conda
platform: osx-arm64
dependencies:
@@ -8106,10 +8102,10 @@ package:
sortedcontainers: ">=2.1.0,<3.0.0"
backports.zoneinfo: ">=0.2.1"
exceptiongroup: ">=1.0.0rc8"
- url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.91.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/hypothesis-6.92.0-pyha770c72_0.conda
hash:
- md5: 06da22edc102acb39fcf951b4872f754
- sha256: 0dc4aab6a020d6ba5d569128155529137a48cc08d91928e1dbeb0bdcb4b27117
+ md5: af99a4aaa4d7abf306f6799b13a1c018
+ sha256: 1fec99d75cc291bb2582a2936fa8d8aab59d43a2cda88186ce50fb1d39d208b8
category: main
optional: false
- name: icu
@@ -8148,42 +8144,42 @@ package:
category: main
optional: false
- name: identify
- version: 2.5.32
+ version: 2.5.33
manager: conda
platform: linux-64
dependencies:
python: ">=3.6"
ukkonen: ""
- url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda
hash:
- md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c
- sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546
+ md5: 93c8f8ceb83827d88deeba796f07fba7
+ sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f
category: main
optional: false
- name: identify
- version: 2.5.32
+ version: 2.5.33
manager: conda
platform: osx-64
dependencies:
ukkonen: ""
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda
hash:
- md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c
- sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546
+ md5: 93c8f8ceb83827d88deeba796f07fba7
+ sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f
category: main
optional: false
- name: identify
- version: 2.5.32
+ version: 2.5.33
manager: conda
platform: osx-arm64
dependencies:
ukkonen: ""
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda
hash:
- md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c
- sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546
+ md5: 93c8f8ceb83827d88deeba796f07fba7
+ sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f
category: main
optional: false
- name: idna
@@ -8539,10 +8535,10 @@ package:
stack_data: ""
traitlets: ">=5"
typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_2.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda
hash:
- md5: 5e23d20fc6e33061c063220146579990
- sha256: c956b70ed41b7f61a780a7e584f03f68e7e5073c8c138960bfbc5e705d9124b1
+ md5: 15c6f45a45f7ac27f6d60b0b084f6761
+ sha256: d98d615ac8ad71de698afbc50e8269570d4b89706821c4ff3058a4ceec69bd9b
category: main
optional: false
- name: ipython
@@ -8563,10 +8559,10 @@ package:
jedi: ">=0.16"
pexpect: ">4.3"
prompt-toolkit: ">=3.0.41,<3.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_2.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda
hash:
- md5: 5e23d20fc6e33061c063220146579990
- sha256: c956b70ed41b7f61a780a7e584f03f68e7e5073c8c138960bfbc5e705d9124b1
+ md5: 15c6f45a45f7ac27f6d60b0b084f6761
+ sha256: d98d615ac8ad71de698afbc50e8269570d4b89706821c4ff3058a4ceec69bd9b
category: main
optional: false
- name: ipython
@@ -8587,10 +8583,10 @@ package:
jedi: ">=0.16"
pexpect: ">4.3"
prompt-toolkit: ">=3.0.41,<3.1.0"
- url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh31011fe_2.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda
hash:
- md5: 5e23d20fc6e33061c063220146579990
- sha256: c956b70ed41b7f61a780a7e584f03f68e7e5073c8c138960bfbc5e705d9124b1
+ md5: 15c6f45a45f7ac27f6d60b0b084f6761
+ sha256: d98d615ac8ad71de698afbc50e8269570d4b89706821c4ff3058a4ceec69bd9b
category: main
optional: false
- name: ipywidgets
@@ -9709,7 +9705,7 @@ package:
category: main
optional: false
- name: jupyter_server
- version: 2.11.2
+ version: 2.12.1
manager: conda
platform: linux-64
dependencies:
@@ -9732,14 +9728,14 @@ package:
tornado: ">=6.2.0"
traitlets: ">=5.6.0"
websocket-client: ""
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.12.1-pyhd8ed1ab_0.conda
hash:
- md5: c831341804aecf5abcdbb348be301f92
- sha256: 9e56c09fa7f4b95aab30b51008416d041c53cfd94ef3a4abc339d1eabb015df2
+ md5: e9781be1e6c93b5df2c180a9f9242420
+ sha256: c4aabe2041afb8fde1f049549c2e292265612d07dd4d1156f3e183ba6a6f007b
category: main
optional: false
- name: jupyter_server
- version: 2.11.2
+ version: 2.12.1
manager: conda
platform: osx-64
dependencies:
@@ -9762,14 +9758,14 @@ package:
anyio: ">=3.1.0"
send2trash: ">=1.8.2"
jupyter_events: ">=0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.12.1-pyhd8ed1ab_0.conda
hash:
- md5: c831341804aecf5abcdbb348be301f92
- sha256: 9e56c09fa7f4b95aab30b51008416d041c53cfd94ef3a4abc339d1eabb015df2
+ md5: e9781be1e6c93b5df2c180a9f9242420
+ sha256: c4aabe2041afb8fde1f049549c2e292265612d07dd4d1156f3e183ba6a6f007b
category: main
optional: false
- name: jupyter_server
- version: 2.11.2
+ version: 2.12.1
manager: conda
platform: osx-arm64
dependencies:
@@ -9792,49 +9788,49 @@ package:
anyio: ">=3.1.0"
send2trash: ">=1.8.2"
jupyter_events: ">=0.9.0"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.11.2-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.12.1-pyhd8ed1ab_0.conda
hash:
- md5: c831341804aecf5abcdbb348be301f92
- sha256: 9e56c09fa7f4b95aab30b51008416d041c53cfd94ef3a4abc339d1eabb015df2
+ md5: e9781be1e6c93b5df2c180a9f9242420
+ sha256: c4aabe2041afb8fde1f049549c2e292265612d07dd4d1156f3e183ba6a6f007b
category: main
optional: false
- name: jupyter_server_terminals
- version: 0.4.4
+ version: 0.5.0
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
terminado: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.0-pyhd8ed1ab_0.conda
hash:
- md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
- sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
+ md5: 37a8b4098d428ecd40e58f8ec8a8e77d
+ sha256: b2c769977c258e5a81d541fd526d01083fc6b8c8dfdd4822795a898626bc81e6
category: main
optional: false
- name: jupyter_server_terminals
- version: 0.4.4
+ version: 0.5.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
terminado: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.0-pyhd8ed1ab_0.conda
hash:
- md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
- sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
+ md5: 37a8b4098d428ecd40e58f8ec8a8e77d
+ sha256: b2c769977c258e5a81d541fd526d01083fc6b8c8dfdd4822795a898626bc81e6
category: main
optional: false
- name: jupyter_server_terminals
- version: 0.4.4
+ version: 0.5.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
terminado: ">=0.8.3"
- url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.4.4-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.0-pyhd8ed1ab_0.conda
hash:
- md5: 7c0965e1d4a0ee1529e8eaa03a78a5b3
- sha256: 9f4c5fef9beef9fceed628db7a10b888f3308b37ae257ad3d50046088317ebf1
+ md5: 37a8b4098d428ecd40e58f8ec8a8e77d
+ sha256: b2c769977c258e5a81d541fd526d01083fc6b8c8dfdd4822795a898626bc81e6
category: main
optional: false
- name: jupyterlab
@@ -10055,7 +10051,7 @@ package:
manager: conda
platform: linux-64
dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.2,<1.14.4.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
url: https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.2-hcd42e92_1.conda
@@ -10069,7 +10065,7 @@ package:
manager: conda
platform: osx-64
dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.2,<1.14.4.0a0"
libcxx: ">=15.0.7"
url: https://conda.anaconda.org/conda-forge/osx-64/kealib-1.5.2-h052fcf7_1.conda
hash:
@@ -10082,7 +10078,7 @@ package:
manager: conda
platform: osx-arm64
dependencies:
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.2,<1.14.4.0a0"
libcxx: ">=15.0.7"
url: https://conda.anaconda.org/conda-forge/osx-arm64/kealib-1.5.2-h47b5e36_1.conda
hash:
@@ -11133,55 +11129,55 @@ package:
category: main
optional: false
- name: libcurl
- version: 8.4.0
+ version: 8.5.0
manager: conda
platform: linux-64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
libgcc-ng: ">=12"
- libnghttp2: ">=1.52.0,<2.0a0"
+ libnghttp2: ">=1.58.0,<2.0a0"
libssh2: ">=1.11.0,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.4.0-hca28451_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.5.0-hca28451_0.conda
hash:
- md5: 1158ac1d2613b28685644931f11ee807
- sha256: 25f4b6a8827d7b17a66e0bd9b5d194bf9a9e4a46fb14e2ef472fdad4b39426a6
+ md5: 7144d5a828e2cae218e0e3c98d8a0aeb
+ sha256: 00a6bea5ff90ca58eeb15ebc98e08ffb88bddaff27396bb62640064f59d29cf0
category: main
optional: false
- name: libcurl
- version: 8.4.0
+ version: 8.5.0
manager: conda
platform: osx-64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libnghttp2: ">=1.52.0,<2.0a0"
+ libnghttp2: ">=1.58.0,<2.0a0"
libssh2: ">=1.11.0,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.4.0-h726d00d_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.5.0-h726d00d_0.conda
hash:
- md5: 2c17b4dedf0039736951471f493353bd
- sha256: cd3400ecb42fc420acb18e2d836535c44ebd501ebeb4e0bf3830776e9b4ca650
+ md5: 86d749e27fe00fa6b7d790a6feaa22a2
+ sha256: 7ec7e026be90da0965dfa6b92bbc905c852c13b27f3f83c47156db66ed0668f0
category: main
optional: false
- name: libcurl
- version: 8.4.0
+ version: 8.5.0
manager: conda
platform: osx-arm64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libnghttp2: ">=1.52.0,<2.0a0"
+ libnghttp2: ">=1.58.0,<2.0a0"
libssh2: ">=1.11.0,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.4.0-h2d989ff_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.5.0-h2d989ff_0.conda
hash:
- md5: afabb3372209028627ec03e206f4d967
- sha256: 5ca24ab030b1c56ce07921bf901ea99076e8b7e45586b4a04e5187cc67c87273
+ md5: f1211ed00947a84e15a964a8f459f620
+ sha256: f1c04be217aaf161ce3c99a8d618871295b5dc1eae2f7ff7b32078af50303f5b
category: main
optional: false
- name: libcxx
@@ -11282,11 +11278,11 @@ package:
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=7.5.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
hash:
- md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3
- sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9
+ md5: 172bf1cd1ff8629f2b1179945ed45055
+ sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4
category: main
optional: false
- name: libev
@@ -11294,10 +11290,10 @@ package:
manager: conda
platform: osx-64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-haf1e3a3_1.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda
hash:
- md5: 79dc2be110b2a3d1e97ec21f691c50ad
- sha256: c4154d424431898d84d6afb8b32e3ba749fe5d270d322bb0af74571a3cb09c6b
+ md5: 899db79329439820b7e8f8de41bca902
+ sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43
category: main
optional: false
- name: libev
@@ -11305,10 +11301,10 @@ package:
manager: conda
platform: osx-arm64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h642e427_1.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
hash:
- md5: 566dbf70fe79eacdb3c3d3d195a27f55
- sha256: eb7325eb2e6bd4c291cb9682781b35b8c0f68cb72651c35a5b9dd22707ebd25c
+ md5: 36d33e440c31857372a72137f78bacf5
+ sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f
category: main
optional: false
- name: libevent
@@ -11517,13 +11513,13 @@ package:
geotiff: ">=1.7.1,<1.8.0a0"
giflib: ">=5.2.1,<5.3.0a0"
hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.3,<1.14.4.0a0"
json-c: ">=0.17,<0.18.0a0"
kealib: ">=1.5.2,<1.6.0a0"
lerc: ">=4.0.0,<5.0a0"
libaec: ">=1.1.2,<2.0a0"
libarchive: ">=3.7.2,<3.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
+ libcurl: ">=8.5.0,<9.0a0"
libdeflate: ">=1.19,<1.20.0a0"
libexpat: ">=2.5.0,<3.0a0"
libgcc-ng: ">=12"
@@ -11548,14 +11544,14 @@ package:
poppler: ">=23.12.0,<23.13.0a0"
postgresql: ""
proj: ">=9.3.0,<9.3.1.0a0"
- tiledb: ">=2.16,<2.17.0a0"
+ tiledb: ">=2.18.2,<2.19.0a0"
xerces-c: ">=3.2.4,<3.3.0a0"
xz: ">=5.2.6,<6.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.1-hcae7082_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.8.1-hd0089ee_2.conda
hash:
- md5: e96d24ccc597439cda2859fe948aac77
- sha256: 9d6a19f03ea1437e951ba5e09c12faf11aa47a375a76f80f9bab1d2c3aed4aa9
+ md5: feb838eaf49fd1608413759f7b54c74c
+ sha256: ba4431f8bf3ae13130827c4f81520ce49f9b22f6f44da137b516a1f51b9bdcb8
category: main
optional: false
- name: libgdal
@@ -11571,13 +11567,13 @@ package:
geotiff: ">=1.7.1,<1.8.0a0"
giflib: ">=5.2.1,<5.3.0a0"
hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.3,<1.14.4.0a0"
json-c: ">=0.17,<0.18.0a0"
kealib: ">=1.5.2,<1.6.0a0"
lerc: ">=4.0.0,<5.0a0"
libaec: ">=1.1.2,<2.0a0"
libarchive: ">=3.7.2,<3.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
+ libcurl: ">=8.5.0,<9.0a0"
libcxx: ">=16.0.6"
libdeflate: ">=1.19,<1.20.0a0"
libexpat: ">=2.5.0,<3.0a0"
@@ -11600,14 +11596,14 @@ package:
poppler: ">=23.12.0,<23.13.0a0"
postgresql: ""
proj: ">=9.3.0,<9.3.1.0a0"
- tiledb: ">=2.16,<2.17.0a0"
+ tiledb: ">=2.18.2,<2.19.0a0"
xerces-c: ">=3.2.4,<3.3.0a0"
xz: ">=5.2.6,<6.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.1-hb7f764b_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libgdal-3.8.1-h7bb8e92_2.conda
hash:
- md5: eee8b19233a243e229af4399af2c4a10
- sha256: efe25d85efe856c1db71e2a40ce9736e07cf5c06e53285248866a62a43363a0d
+ md5: bf37886bd95ab0afcf6e07b51ae6b813
+ sha256: b34bd433ae5a2378e472daa2ffdef4201ecbd654b1c62261e6c77d948efb689e
category: main
optional: false
- name: libgdal
@@ -11623,13 +11619,13 @@ package:
geotiff: ">=1.7.1,<1.8.0a0"
giflib: ">=5.2.1,<5.3.0a0"
hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.3,<1.14.4.0a0"
json-c: ">=0.17,<0.18.0a0"
kealib: ">=1.5.2,<1.6.0a0"
lerc: ">=4.0.0,<5.0a0"
libaec: ">=1.1.2,<2.0a0"
libarchive: ">=3.7.2,<3.8.0a0"
- libcurl: ">=8.4.0,<9.0a0"
+ libcurl: ">=8.5.0,<9.0a0"
libcxx: ">=16.0.6"
libdeflate: ">=1.19,<1.20.0a0"
libexpat: ">=2.5.0,<3.0a0"
@@ -11652,14 +11648,14 @@ package:
poppler: ">=23.12.0,<23.13.0a0"
postgresql: ""
proj: ">=9.3.0,<9.3.1.0a0"
- tiledb: ">=2.16,<2.17.0a0"
+ tiledb: ">=2.18.2,<2.19.0a0"
xerces-c: ">=3.2.4,<3.3.0a0"
xz: ">=5.2.6,<6.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.1-hac00559_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-3.8.1-h1ac08d9_2.conda
hash:
- md5: a65e999f85ab35663d7e9753ca7eaa13
- sha256: 636ff5b1f95edc083dc7b3ba9f35a87fe18695349b1bd57ae72c54d00ef5034e
+ md5: 01eb49a277330eaa5aba72efcfd78b85
+ sha256: 8b4f6b74de89820dc02905ab97e0277ae654c062dd7b2106829bf9b7ffb545ed
category: main
optional: false
- name: libgfortran
@@ -11735,7 +11731,7 @@ package:
category: main
optional: false
- name: libglib
- version: 2.78.1
+ version: 2.78.3
manager: conda
platform: linux-64
dependencies:
@@ -11746,14 +11742,14 @@ package:
libstdcxx-ng: ">=12"
libzlib: ">=1.2.13,<1.3.0a0"
pcre2: ">=10.42,<10.43.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.3-h783c2da_0.conda
hash:
- md5: 70052d6c1e84643e30ffefb21ab6950f
- sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b
+ md5: 9bd06b12bbfa6fd1740fd23af4b0f0c7
+ sha256: b1b594294a0fe4c9a51596ef027efed9268d60827e8ae61fb7545c521a631e33
category: main
optional: false
- name: libglib
- version: 2.78.1
+ version: 2.78.3
manager: conda
platform: osx-64
dependencies:
@@ -11764,14 +11760,14 @@ package:
libiconv: ">=1.17,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
pcre2: ">=10.42,<10.43.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.78.1-h198397b_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.78.3-h198397b_0.conda
hash:
- md5: fb318c3fed632cf2de190fb10496fbd1
- sha256: 73bcb4ea07af4291221271aa7aaa0795d59d851a6f43d6e0df22601f61725e4b
+ md5: e18624e441743b0d744116885b70f092
+ sha256: 90e58879873b05617e0678ecfbf47bc740c1a2ed7840b8f7cd1241813b9037db
category: main
optional: false
- name: libglib
- version: 2.78.1
+ version: 2.78.3
manager: conda
platform: osx-arm64
dependencies:
@@ -11782,10 +11778,10 @@ package:
libiconv: ">=1.17,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
pcre2: ">=10.42,<10.43.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.78.1-hb438215_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.78.3-hb438215_0.conda
hash:
- md5: 3ce7984906f2ba4be662c219e8def77e
- sha256: 3d94b6d8d27301f23b0d0c8b078c5e0bf6fc4f5f6260f3794cfaf7e247fe9e20
+ md5: 8c98b7018b434236e2c0f14d7cf3c113
+ sha256: f26afb1003e810e768138b0c849e9408c0ae8635062aeaf7abae381903a84e53
category: main
optional: false
- name: libgomp
@@ -11922,11 +11918,11 @@ package:
manager: conda
platform: linux-64
dependencies:
- libgcc-ng: ">=10.3.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2
+ libgcc-ng: ">=12"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_1.conda
hash:
- md5: b62b52da46c39ee2bc3c162ac7f1804d
- sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7
+ md5: 4b06b43d0eca61db2899e4d7a289c302
+ sha256: a9364735ef2542558ed59aa5f404707dab674df465cbdf312edeaf5e827b55ed
category: main
optional: false
- name: libiconv
@@ -11934,10 +11930,10 @@ package:
manager: conda
platform: osx-64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hac89ed1_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_1.conda
hash:
- md5: 691d103d11180486154af49c037b7ed9
- sha256: 4a3294037d595754f7da7c11a41f3922f995aaa333f3cb66f02d8afa032a7bc2
+ md5: c4069fa5c051d41093d3fd52caffa285
+ sha256: c479e7e0df4a59117ee02152fb85565aa6e4091bbb8e044f3367e52b0ccd8970
category: main
optional: false
- name: libiconv
@@ -11945,10 +11941,10 @@ package:
manager: conda
platform: osx-arm64
dependencies: {}
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-he4db4b2_0.tar.bz2
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_1.conda
hash:
- md5: 686f9c755574aa221f29fbcf36a67265
- sha256: 2eb33065783b802f71d52bef6f15ce0fafea0adc8506f10ebd0d490244087bec
+ md5: df3fbfc1fddc8fa40122206a4e47ea4e
+ sha256: d407ebd1e72ebb20716ea325cdebdd018bdc3c3d3424e67825db3eaa8809164e
category: main
optional: false
- name: libjpeg-turbo
@@ -12163,7 +12159,7 @@ package:
blosc: ">=1.21.4,<2.0a0"
bzip2: ">=1.0.8,<2.0a0"
hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.2,<1.14.4.0a0"
libaec: ">=1.0.6,<2.0a0"
libcurl: ">=8.2.1,<9.0a0"
libgcc-ng: ">=12"
@@ -12188,7 +12184,7 @@ package:
blosc: ">=1.21.4,<2.0a0"
bzip2: ">=1.0.8,<2.0a0"
hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.2,<1.14.4.0a0"
libaec: ">=1.0.6,<2.0a0"
libcurl: ">=8.2.1,<9.0a0"
libcxx: ">=15.0.7"
@@ -12212,7 +12208,7 @@ package:
blosc: ">=1.21.4,<2.0a0"
bzip2: ">=1.0.8,<2.0a0"
hdf4: ">=4.2.15,<4.2.16.0a0"
- hdf5: ">=1.14.2,<1.14.3.0a0"
+ hdf5: ">=1.14.2,<1.14.4.0a0"
libaec: ">=1.0.6,<2.0a0"
libcurl: ">=8.2.1,<9.0a0"
libcxx: ">=15.0.7"
@@ -12233,16 +12229,16 @@ package:
manager: conda
platform: linux-64
dependencies:
- c-ares: ">=1.21.0,<2.0a0"
- libev: ">=4.33,<4.34.0a0"
+ c-ares: ">=1.23.0,<2.0a0"
+ libev: ">=4.33,<5.0a0"
libgcc-ng: ">=12"
libstdcxx-ng: ">=12"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda
+ openssl: ">=3.2.0,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda
hash:
- md5: 9b13d5ee90fc9f09d54fd403247342b4
- sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca
+ md5: 700ac6ea6d53d5510591c4344d5c989a
+ sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb
category: main
optional: false
- name: libnghttp2
@@ -12251,15 +12247,15 @@ package:
platform: osx-64
dependencies:
__osx: ">=10.9"
- c-ares: ">=1.21.0,<2.0a0"
+ c-ares: ">=1.23.0,<2.0a0"
libcxx: ">=16.0.6"
- libev: ">=4.33,<4.34.0a0"
+ libev: ">=4.33,<5.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_0.conda
+ openssl: ">=3.2.0,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda
hash:
- md5: 864e23fba3678000154f53bbf6d476a2
- sha256: b2b94cdaffa0d4fddd73c04262fdb1d1bcd6f8783979281ccfdb832e159cac4e
+ md5: faecc55c2a8155d9ff1c0ff9a0fef64f
+ sha256: 412fd768e787e586602f8e9ea52bf089f3460fc630f6987f0cbd89b70e9a4380
category: main
optional: false
- name: libnghttp2
@@ -12268,15 +12264,15 @@ package:
platform: osx-arm64
dependencies:
__osx: ">=10.9"
- c-ares: ">=1.21.0,<2.0a0"
+ c-ares: ">=1.23.0,<2.0a0"
libcxx: ">=16.0.6"
- libev: ">=4.33,<4.34.0a0"
+ libev: ">=4.33,<5.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
- openssl: ">=3.1.4,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_0.conda
+ openssl: ">=3.2.0,<4.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda
hash:
- md5: b93d94874cfd44bc96496c2ee69f82a9
- sha256: 3597032667444f91ae59343c553da6e93f2b3359bc2c0dd6b7f8260e41572e9c
+ md5: 1813e066bfcef82de579a0be8a766df4
+ sha256: fc97aaaf0c6d0f508be313d86c2705b490998d382560df24be918b8e977802cd
category: main
optional: false
- name: libnsl
@@ -12437,12 +12433,11 @@ package:
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
libgcc-ng: ">=12"
- libzlib: ">=1.2.13,<1.3.0a0"
openssl: ">=3.2.0,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-hfc447b1_2.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/libpq-16.1-h33b98f1_7.conda
hash:
- md5: 3cfa1ceef6936e656677ba59480106ce
- sha256: 6ce23d046522c39cda5c25e47d303b39f8b31a2aac2c59ea3e41710a072ff0bf
+ md5: 675317e46167caea24542d85c72f19a3
+ sha256: 833fd96338dffc6784fb5f79ab805fa5a4c2cabf5c08c4f1d5caf4e290e39c28
category: main
optional: false
- name: libpq
@@ -12451,12 +12446,11 @@ package:
platform: osx-64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
openssl: ">=3.2.0,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/libpq-16.1-h6dd4ff7_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/libpq-16.1-ha925e61_7.conda
hash:
- md5: 7aa484702ee6f49c7a728b578a544b27
- sha256: 13011b0b9b31771197155d3547dcdf2c5f8f8a91f86f2b4d45fbf8a4d6f53d0a
+ md5: ad8be4619f57504e8c243e00ab315ad6
+ sha256: addce7453b4ac80faf46ecec76db74d98f57d9711624df600399c56e147b7903
category: main
optional: false
- name: libpq
@@ -12465,12 +12459,11 @@ package:
platform: osx-arm64
dependencies:
krb5: ">=1.21.2,<1.22.0a0"
- libzlib: ">=1.2.13,<1.3.0a0"
openssl: ">=3.2.0,<4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-hd435d45_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-16.1-h0f8b458_7.conda
hash:
- md5: b4d4402f19365ed54ad529e09bfa7cdb
- sha256: 50e96d4014b59ef337a74322be4394e27e6be65c3c5356b98ee0be1f6f4086a1
+ md5: c94283997b390fc897936edf2c1f0d55
+ sha256: 2e71c5efc57ec7da59efcb747b615ccde1f70d12eb25128720817a3f3482d622
category: main
optional: false
- name: libprotobuf
@@ -13501,15 +13494,15 @@ package:
platform: linux-64
dependencies:
libgcc-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
libxslt: ">=1.1.37,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py311h1a07684_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/lxml-4.9.3-py311h1a07684_2.conda
hash:
- md5: aab51e50d994e58efdfa5382139b0468
- sha256: 9ee461843278f695c5e301b4575e7dd02f69021e85023b62b17f7dfe2cd173e4
+ md5: 76405b658bdd57a05bbdcee11d4714d2
+ sha256: 4d7dd680fd7a6d5f34ca26d188ab73fd44378ade96d7ac50f25ccd4015517fde
category: main
optional: false
- name: lxml
@@ -13517,15 +13510,15 @@ package:
manager: conda
platform: osx-64
dependencies:
- libxml2: ">=2.11.5,<2.12.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
libxslt: ">=1.1.37,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/lxml-4.9.3-py311h19a211c_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/lxml-4.9.3-py311h719c1e2_2.conda
hash:
- md5: d3687d6ebe20ef8bf959dba786cdb28e
- sha256: df952e80dc9ca98fbff11c2627288808135b51d18fc363a102f3e58eac8b4113
+ md5: d3c23c905887e0c9999afb3a65650f85
+ sha256: 37d48cbfac83c211c818a500b7c8852260146b2c2ed8006a4df8cc1b16a45ee2
category: main
optional: false
- name: lxml
@@ -13533,15 +13526,15 @@ package:
manager: conda
platform: osx-arm64
dependencies:
- libxml2: ">=2.11.5,<2.12.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
libxslt: ">=1.1.37,<2.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-4.9.3-py311hbafe683_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-4.9.3-py311hdef8331_2.conda
hash:
- md5: 5cfed11a5103844a5654446cf4d3f42a
- sha256: e7ac6818b94242a5a1800a66d362a5e0262473e2399e731dd2061737b88c09b5
+ md5: 99b75b0287466b51cafc6de0a8921825
+ sha256: a33f16b34943fca0e5f113cf0b8c3be32271bda2718fe857d6e5c01e515c2158
category: main
optional: false
- name: lz4-c
@@ -14263,42 +14256,6 @@ package:
sha256: 7fcfda7b4a1d74205fcfdefd93804226a6eaffc74a319414c7d8d88f9249db3b
category: main
optional: false
- - name: munch
- version: 4.0.0
- manager: conda
- platform: linux-64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
- hash:
- md5: 376b32e8f9d3eacbd625f37d39bd507d
- sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
- category: main
- optional: false
- - name: munch
- version: 4.0.0
- manager: conda
- platform: osx-64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
- hash:
- md5: 376b32e8f9d3eacbd625f37d39bd507d
- sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
- category: main
- optional: false
- - name: munch
- version: 4.0.0
- manager: conda
- platform: osx-arm64
- dependencies:
- python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/munch-4.0.0-pyhd8ed1ab_0.conda
- hash:
- md5: 376b32e8f9d3eacbd625f37d39bd507d
- sha256: 093020ae2deb6c468120111a54909e1c576d70dfea6bc0eec5093e36d2fb8ff8
- category: main
- optional: false
- name: munkres
version: 1.1.4
manager: conda
@@ -15482,7 +15439,7 @@ package:
category: main
optional: false
- name: pandas
- version: 2.1.3
+ version: 2.1.4
manager: conda
platform: linux-64
dependencies:
@@ -15494,14 +15451,14 @@ package:
python-tzdata: ">=2022a"
python_abi: 3.11.*
pytz: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py311h320fe9a_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py311h320fe9a_0.conda
hash:
- md5: 3ea3486e16d559dfcb539070ed330a1e
- sha256: d69759f8e5f3dcae2562e177cdfde5a45e4cd38db732301812aa558c1c80db57
+ md5: e44ccb61b6621bf3f8053ae66eba7397
+ sha256: 4f40035c77c381e0151c0fb0b39d0dfc343947f7d283c2bced2123273c5d4884
category: main
optional: false
- name: pandas
- version: 2.1.3
+ version: 2.1.4
manager: conda
platform: osx-64
dependencies:
@@ -15513,14 +15470,14 @@ package:
python-tzdata: ">=2022a"
python_abi: 3.11.*
pytz: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.1.3-py311h1eadf79_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.1.4-py311h1eadf79_0.conda
hash:
- md5: 0a1ea4be8bcc907018694b5d04ac3036
- sha256: 2ca591570ce60be45eae8e5d39a07f08390e9ecc18997f66cb3d712953c09724
+ md5: 905aff7f27a734e251526b9a7ecc20ac
+ sha256: 994d226d29293c1b118c0902af50719c5fc25c63c2c6cf7be7808b44226e19eb
category: main
optional: false
- name: pandas
- version: 2.1.3
+ version: 2.1.4
manager: conda
platform: osx-arm64
dependencies:
@@ -15532,10 +15489,10 @@ package:
python-tzdata: ">=2022a"
python_abi: 3.11.*
pytz: ">=2020.1"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.1.3-py311h6e08293_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.1.4-py311h6e08293_0.conda
hash:
- md5: 0d0ecc6bac2b7a4007bf4d96b125d674
- sha256: eacddc0866e26372578fdeb5059e6f7edf4c6c8f59f494a8d5e64caa032b2600
+ md5: 5130445e7fe8465365dab3ed3694c770
+ sha256: fa6c79cf5252c22ef8141a405ea9650ea9df2d6436c003b279086e146eaef1e5
category: main
optional: false
- name: pandera-core
@@ -15566,8 +15523,8 @@ package:
dependencies:
numpy: ""
pandas: ""
- typing_extensions: ""
packaging: ""
+ typing_extensions: ""
pydantic: ""
wrapt: ""
multimethod: ""
@@ -15587,8 +15544,8 @@ package:
dependencies:
numpy: ""
pandas: ""
- typing_extensions: ""
packaging: ""
+ typing_extensions: ""
pydantic: ""
wrapt: ""
multimethod: ""
@@ -16150,42 +16107,42 @@ package:
category: main
optional: false
- name: pint
- version: "0.22"
+ version: "0.23"
manager: conda
platform: linux-64
dependencies:
python: ">=3.9"
typing_extensions: ""
- url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pint-0.23-pyhd8ed1ab_0.conda
hash:
- md5: a719c3f3959c529e558e9ed9f98c3f30
- sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
+ md5: d47f9170e3933e53368e0d447c16856f
+ sha256: c26dfa2094949782db6ddbce2b6e03aff1e9e64c808fef68f66cfea72be18e1d
category: main
optional: false
- name: pint
- version: "0.22"
+ version: "0.23"
manager: conda
platform: osx-64
dependencies:
typing_extensions: ""
python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pint-0.23-pyhd8ed1ab_0.conda
hash:
- md5: a719c3f3959c529e558e9ed9f98c3f30
- sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
+ md5: d47f9170e3933e53368e0d447c16856f
+ sha256: c26dfa2094949782db6ddbce2b6e03aff1e9e64c808fef68f66cfea72be18e1d
category: main
optional: false
- name: pint
- version: "0.22"
+ version: "0.23"
manager: conda
platform: osx-arm64
dependencies:
typing_extensions: ""
python: ">=3.9"
- url: https://conda.anaconda.org/conda-forge/noarch/pint-0.22-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pint-0.23-pyhd8ed1ab_0.conda
hash:
- md5: a719c3f3959c529e558e9ed9f98c3f30
- sha256: 49795ff6e5e634523aafe34e869c425e2cdc4a1fcb11aa294d7983035bc38622
+ md5: d47f9170e3933e53368e0d447c16856f
+ sha256: c26dfa2094949782db6ddbce2b6e03aff1e9e64c808fef68f66cfea72be18e1d
category: main
optional: false
- name: pip
@@ -16547,11 +16504,10 @@ package:
readline: ">=8.2,<9.0a0"
tzcode: ""
tzdata: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_2.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.1-h8972f4a_7.conda
hash:
- md5: a175fe7a349a7e4cda81f4d7ae2bc2b2
- sha256: b2c258a78effab00f8db53e5dd04a43baf309c9a3c164c0d6f52de836b3baea5
+ md5: 672069c684190f10e5a9bbb5b10d82bb
+ sha256: fbc18253dbc920034cebbee1ba8080e3e2edb7c0d01d5b2f7d37538da71bf8b7
category: main
optional: false
- name: postgresql
@@ -16567,11 +16523,10 @@ package:
readline: ">=8.2,<9.0a0"
tzcode: ""
tzdata: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/postgresql-16.1-h413614c_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/postgresql-16.1-h413614c_7.conda
hash:
- md5: ad5e3602657162ddcab580d052df0bd4
- sha256: 47282bff8ca6c64f72276401e8bcfff625cadcdcbfd3804bb08d9dcbe7485907
+ md5: 6f83d0483ca6044b227a5547ea5b65df
+ sha256: 6aceedd6f5a72a0d2e64607b545acfafa015ab74e1264a58a4884ff189631680
category: main
optional: false
- name: postgresql
@@ -16587,99 +16542,98 @@ package:
readline: ">=8.2,<9.0a0"
tzcode: ""
tzdata: ""
- zlib: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/postgresql-16.1-hc6ab77f_7.conda
hash:
- md5: a2562d92a27e19371e2655fe48e6952f
- sha256: a896c5ab8930a4d9f980471b64d6eb254a22c46565ebb777d99e235c8c0fb7f9
+ md5: bba5c8dd372e5e2cf81bf71e6104fa7b
+ sha256: 5830151c5b72e95ecbff45b36a88405875514ea27cfce1b5381e98d6cee9974a
category: main
optional: false
- name: pre-commit
- version: 3.5.0
+ version: 3.6.0
manager: conda
platform: linux-64
dependencies:
cfgv: ">=2.0.0"
identify: ">=1.0.0"
nodeenv: ">=0.11.1"
- python: ">=3.8"
+ python: ">=3.9"
pyyaml: ">=5.1"
virtualenv: ">=20.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda
hash:
- md5: 964e3d762e427661c59263435a14c492
- sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
+ md5: 473a7cfca197da0a10cff3f6dded7d4b
+ sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54
category: main
optional: false
- name: pre-commit
- version: 3.5.0
+ version: 3.6.0
manager: conda
platform: osx-64
dependencies:
- python: ">=3.8"
+ python: ">=3.9"
pyyaml: ">=5.1"
identify: ">=1.0.0"
nodeenv: ">=0.11.1"
cfgv: ">=2.0.0"
virtualenv: ">=20.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda
hash:
- md5: 964e3d762e427661c59263435a14c492
- sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
+ md5: 473a7cfca197da0a10cff3f6dded7d4b
+ sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54
category: main
optional: false
- name: pre-commit
- version: 3.5.0
+ version: 3.6.0
manager: conda
platform: osx-arm64
dependencies:
- python: ">=3.8"
+ python: ">=3.9"
pyyaml: ">=5.1"
identify: ">=1.0.0"
nodeenv: ">=0.11.1"
cfgv: ">=2.0.0"
virtualenv: ">=20.10.0"
- url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda
hash:
- md5: 964e3d762e427661c59263435a14c492
- sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f
+ md5: 473a7cfca197da0a10cff3f6dded7d4b
+ sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54
category: main
optional: false
- name: prettier
- version: 3.1.0
+ version: 3.1.1
manager: conda
platform: linux-64
dependencies:
__glibc: ">=2.17,<3.0.a0"
- nodejs: ">=20.8.1,<21.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.1.0-h31abb78_0.conda
+ nodejs: ">=20.9.0,<21.0a0"
+ url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.1.1-h31abb78_0.conda
hash:
- md5: 825c43da21ded31f538a695cca2961ee
- sha256: a836d8d87734c76e04b64f66d2a72262ac09ce7e23c92b3f77d47bdc20267a21
+ md5: 9943537898b6e9763fde439fe40f481f
+ sha256: 3bd2b360fc709008f39315f92c6fbbbbe70f75f6665cf3ddf050130f7614d11a
category: main
optional: false
- name: prettier
- version: 3.1.0
+ version: 3.1.1
manager: conda
platform: osx-64
dependencies:
- nodejs: ">=20.8.1,<21.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.1.0-hbd11d21_0.conda
+ nodejs: ">=20.9.0,<21.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.1.1-hbd11d21_0.conda
hash:
- md5: 0f2d6f2c329df13e0ff0bd3748b2f74f
- sha256: 9dfd2b3d2d4c3cbdeb341263d5107b7018197ad167633387832def6f68154e55
+ md5: bbc22967cb92235dfd93d9db8faed04f
+ sha256: 15d29a0e576acc8a37a7b00551ea6fd44819007cc77e4d7f55efb3ddd2a0a09f
category: main
optional: false
- name: prettier
- version: 3.1.0
+ version: 3.1.1
manager: conda
platform: osx-arm64
dependencies:
- nodejs: ">=20.8.1,<21.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.1.0-hb67532b_0.conda
+ nodejs: ">=20.9.0,<21.0a0"
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.1.1-hb67532b_0.conda
hash:
- md5: dfa0c94c177b8163579301aa4672f245
- sha256: c71c69ba2420da67a4bc1a5a85deab03e3c37cb4dea44a3bef01cc91e24bb1da
+ md5: c833fb7f54410404e1396868d5272da1
+ sha256: de3504e85790bd79ff6206ad0708ddc68d26ce72a0b3478e7a084c6b8af93415
category: main
optional: false
- name: proj
@@ -16766,78 +16720,78 @@ package:
category: main
optional: false
- name: prompt-toolkit
- version: 3.0.41
+ version: 3.0.42
manager: conda
platform: linux-64
dependencies:
python: ">=3.7"
wcwidth: ""
- url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda
hash:
- md5: f511a993aa4336bef9dd874ee3403e67
- sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
+ md5: 0bf64bf10eee21f46ac83c161917fa86
+ sha256: 58525b2a9305fb154b2b0d43a48b9a6495441b80e4fbea44f2a34a597d2cef16
category: main
optional: false
- name: prompt-toolkit
- version: 3.0.41
+ version: 3.0.42
manager: conda
platform: osx-64
dependencies:
wcwidth: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda
hash:
- md5: f511a993aa4336bef9dd874ee3403e67
- sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
+ md5: 0bf64bf10eee21f46ac83c161917fa86
+ sha256: 58525b2a9305fb154b2b0d43a48b9a6495441b80e4fbea44f2a34a597d2cef16
category: main
optional: false
- name: prompt-toolkit
- version: 3.0.41
+ version: 3.0.42
manager: conda
platform: osx-arm64
dependencies:
wcwidth: ""
python: ">=3.7"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.41-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda
hash:
- md5: f511a993aa4336bef9dd874ee3403e67
- sha256: e26a5554883a0eada3641b6d861d8cb4895e2c7fcc17a587de07b8b1ecbfff0f
+ md5: 0bf64bf10eee21f46ac83c161917fa86
+ sha256: 58525b2a9305fb154b2b0d43a48b9a6495441b80e4fbea44f2a34a597d2cef16
category: main
optional: false
- name: prompt_toolkit
- version: 3.0.41
+ version: 3.0.42
manager: conda
platform: linux-64
dependencies:
- prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
+ prompt-toolkit: ">=3.0.42,<3.0.43.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda
hash:
- md5: b1387bd091fa0420557f801a78587678
- sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
+ md5: 85a2189ecd2fcdd86e92b2d4ea8fe461
+ sha256: fd2185d501bf34cb4c121f2f5ade9157ac75e1644a9da81355c4c8f9c1b82d4d
category: main
optional: false
- name: prompt_toolkit
- version: 3.0.41
+ version: 3.0.42
manager: conda
platform: osx-64
dependencies:
- prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
+ prompt-toolkit: ">=3.0.42,<3.0.43.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda
hash:
- md5: b1387bd091fa0420557f801a78587678
- sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
+ md5: 85a2189ecd2fcdd86e92b2d4ea8fe461
+ sha256: fd2185d501bf34cb4c121f2f5ade9157ac75e1644a9da81355c4c8f9c1b82d4d
category: main
optional: false
- name: prompt_toolkit
- version: 3.0.41
+ version: 3.0.42
manager: conda
platform: osx-arm64
dependencies:
- prompt-toolkit: ">=3.0.41,<3.0.42.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.41-hd8ed1ab_0.conda
+ prompt-toolkit: ">=3.0.42,<3.0.43.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda
hash:
- md5: b1387bd091fa0420557f801a78587678
- sha256: dd2fea25930d258159441ad4a45e5d3274f0d2f1dea92fe25b44b48c486aa969
+ md5: 85a2189ecd2fcdd86e92b2d4ea8fe461
+ sha256: fd2185d501bf34cb4c121f2f5ade9157ac75e1644a9da81355c4c8f9c1b82d4d
category: main
optional: false
- name: protobuf
@@ -16935,87 +16889,87 @@ package:
category: main
optional: false
- name: psycopg2
- version: 2.9.7
+ version: 2.9.9
manager: conda
platform: linux-64
dependencies:
libgcc-ng: ">=12"
- libpq: ">=16.0,<17.0a0"
+ libpq: ">=16.1,<17.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/psycopg2-2.9.7-py311h03dec38_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/psycopg2-2.9.9-py311h03dec38_0.conda
hash:
- md5: 894f0e7a734b1f1182f87081f1ddffa3
- sha256: 047fe0687432b83762d4d77a31cd01572044a231f945f83e10f2cd3c2b44077d
+ md5: 3cc2decd316838bce14d73818e0bf7a4
+ sha256: 4e78d9fe1799d028d9a2da3636a3a68a531aeca5d2c679d4fc78627a426b11cb
category: main
optional: false
- name: psycopg2
- version: 2.9.7
+ version: 2.9.9
manager: conda
platform: osx-64
dependencies:
- libpq: ">=16.0,<17.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ libpq: ">=16.1,<17.0a0"
+ openssl: ">=3.2.0,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.7-py311h187f0af_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/psycopg2-2.9.9-py311h187f0af_0.conda
hash:
- md5: f777a0c47ebe4c2cc2eca6f19aea9347
- sha256: dce8bdee2b563927c71493ad26997c9897939d8fbb0376df80b6c04154ce0412
+ md5: 2177c8943bbf9bfc45421ecaebd5be11
+ sha256: 73c0cf543b0ddd41993956969f665999f5801e027e3d3524604892baedbd2626
category: main
optional: false
- name: psycopg2
- version: 2.9.7
+ version: 2.9.9
manager: conda
platform: osx-arm64
dependencies:
- libpq: ">=16.0,<17.0a0"
- openssl: ">=3.1.3,<4.0a0"
+ libpq: ">=16.1,<17.0a0"
+ openssl: ">=3.2.0,<4.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg2-2.9.7-py311h589e011_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/psycopg2-2.9.9-py311h589e011_0.conda
hash:
- md5: e5fd933c7c34b5c02a95e28f05b07f46
- sha256: 30fb7c0c8e1651694dcb9b5b62b7cdc801ce45e06ead0a5d281ce950e1f498f5
+ md5: cf560a3c0e56cf6a168f885958ec31ff
+ sha256: a6340fa9458824b9681ba6cc1de0a618ffd6b19272c4eedcf787a6e627025aa5
category: main
optional: false
- name: psycopg2-binary
- version: 2.9.7
+ version: 2.9.9
manager: conda
platform: linux-64
dependencies:
- psycopg2: ">=2.9.7,<2.9.8.0a0"
+ psycopg2: ">=2.9.9,<2.9.10.0a0"
python: ">=3.6"
- url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.9-pyhd8ed1ab_0.conda
hash:
- md5: 0212a5c5ae1ab578853364bfc5d9f657
- sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
+ md5: c15b2ec0570f8988819eea58286dbc19
+ sha256: bb6184a3de8a6fddaed9104539ada9ac7c5e2bd900284ccf96ef5e4e285e75db
category: main
optional: false
- name: psycopg2-binary
- version: 2.9.7
+ version: 2.9.9
manager: conda
platform: osx-64
dependencies:
python: ">=3.6"
- psycopg2: ">=2.9.7,<2.9.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
+ psycopg2: ">=2.9.9,<2.9.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.9-pyhd8ed1ab_0.conda
hash:
- md5: 0212a5c5ae1ab578853364bfc5d9f657
- sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
+ md5: c15b2ec0570f8988819eea58286dbc19
+ sha256: bb6184a3de8a6fddaed9104539ada9ac7c5e2bd900284ccf96ef5e4e285e75db
category: main
optional: false
- name: psycopg2-binary
- version: 2.9.7
+ version: 2.9.9
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.6"
- psycopg2: ">=2.9.7,<2.9.8.0a0"
- url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.7-pyhd8ed1ab_1.conda
+ psycopg2: ">=2.9.9,<2.9.10.0a0"
+ url: https://conda.anaconda.org/conda-forge/noarch/psycopg2-binary-2.9.9-pyhd8ed1ab_0.conda
hash:
- md5: 0212a5c5ae1ab578853364bfc5d9f657
- sha256: 5d82cb8b90daff6c12a4b6e0848fd32172522d82ceb5f093bfd55bfec09b3797
+ md5: c15b2ec0570f8988819eea58286dbc19
+ sha256: bb6184a3de8a6fddaed9104539ada9ac7c5e2bd900284ccf96ef5e4e285e75db
category: main
optional: false
- name: pthread-stubs
@@ -17685,7 +17639,7 @@ package:
category: main
optional: false
- name: pyobjc-core
- version: "10.0"
+ version: "10.1"
manager: conda
platform: osx-64
dependencies:
@@ -17693,14 +17647,14 @@ package:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.0-py311hf110eff_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-10.1-py311h9b70068_0.conda
hash:
- md5: d26705887703d13c655a6098516e06e2
- sha256: 031b8c48866f1f97a4a12d6a3ea0dc94cb6a735918871460b26f4779f5a01125
+ md5: e5a3b39d0ad3ec4cad4438ca51ce6a65
+ sha256: b3c7c35b52460bf64cf7854ea5dc083370419f16f3b4d5b16081be623bc52118
category: main
optional: false
- name: pyobjc-core
- version: "10.0"
+ version: "10.1"
manager: conda
platform: osx-arm64
dependencies:
@@ -17708,40 +17662,40 @@ package:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
setuptools: ""
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.0-py311hb702dc4_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.1-py311h665608e_0.conda
hash:
- md5: 5c441ab09e2d9faf6e875ea9c446b445
- sha256: d3bb68f8da77bffad5fa690d2cc1aeb0be0608ed0b6e08a96d8fc3613f2e7135
+ md5: fbf6e60c57d27283b5e616a458e11ecf
+ sha256: 11437e8835d8637fce58bdb98a6f8e60455c7f11eea2fc2b85d38822c5a4c80f
category: main
optional: false
- name: pyobjc-framework-cocoa
- version: "10.0"
+ version: "10.1"
manager: conda
platform: osx-64
dependencies:
libffi: ">=3.4,<4.0a0"
- pyobjc-core: 10.0.*
+ pyobjc-core: 10.1.*
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.0-py311hf110eff_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-10.1-py311h9b70068_0.conda
hash:
- md5: 8fb67274a648901045368717d6221aed
- sha256: 54530c1b3bfc361e027adbd8f9d9a23e7c102c7f58c04a169da1457f82975724
+ md5: 03de24825bd26bf77746aa3eacb6f980
+ sha256: 0062a6ec46b41845a97ca689e056e010fba98a0deaec0ff5d7dfe47eb14ccec4
category: main
optional: false
- name: pyobjc-framework-cocoa
- version: "10.0"
+ version: "10.1"
manager: conda
platform: osx-arm64
dependencies:
libffi: ">=3.4,<4.0a0"
- pyobjc-core: 10.0.*
+ pyobjc-core: 10.1.*
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.0-py311hb702dc4_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.1-py311h665608e_0.conda
hash:
- md5: ee9430e4e9b69a6270c966bb7439c9a0
- sha256: 31a7542b8ced5cb3bc236be0b5777dab4bc0e57fbfc5423e9d0ae09ce8eae16c
+ md5: 8cbae911599bc02a8ce3b1b33d95abb0
+ sha256: 81a15d9449d9570e997ee0cfd7e25c85ceb263915e34235900a1d12bc22c9f30
category: main
optional: false
- name: pyopenssl
@@ -18810,7 +18764,7 @@ package:
category: main
optional: false
- name: pyzmq
- version: 25.1.1
+ version: 25.1.2
manager: conda
platform: linux-64
dependencies:
@@ -18820,40 +18774,44 @@ package:
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
zeromq: ">=4.3.5,<4.4.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.1-py311h34ded2d_2.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py311h34ded2d_0.conda
hash:
- md5: ea365280db99687905b4d76cf6a3568c
- sha256: a5ed6592f32b0caf3883a2f863e8a6258845310d4eebeab2eaf1c5abed04d6b8
+ md5: 819aa640a0493d4b52faf938e94d129e
+ sha256: 54ccdde1370d8a373e516b84bd7fe4af394f8c6f3778eb050de82f04ffb86160
category: main
optional: false
- name: pyzmq
- version: 25.1.1
+ version: 25.1.2
manager: conda
platform: osx-64
dependencies:
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
libsodium: ">=1.0.18,<1.0.19.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
zeromq: ">=4.3.5,<4.4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.1-py311he3804a1_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-25.1.2-py311h889d6d6_0.conda
hash:
- md5: 9b1ea037c51fcdb06bd2d95804270860
- sha256: 7a9af16e04752c50675ca99ab06888aaf8305efb5d292f62f7268ad911c967f4
+ md5: 241fde77a74bd223562662af26f4828b
+ sha256: a8cb598edd68b3d2ca88cd2cdbc60c9180a392c393dd58aaf25e9897697d28d3
category: main
optional: false
- name: pyzmq
- version: 25.1.1
+ version: 25.1.2
manager: conda
platform: osx-arm64
dependencies:
+ __osx: ">=10.9"
+ libcxx: ">=16.0.6"
libsodium: ">=1.0.18,<1.0.19.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
zeromq: ">=4.3.5,<4.4.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-25.1.1-py311he9c0408_2.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-25.1.2-py311h6727e71_0.conda
hash:
- md5: 51b7458a36011c4982261478fcc62026
- sha256: 03b78fe912c02547b284bc3404194bb4c1d9a2680e4b46f45c131a0d13d10b48
+ md5: c0ab7687c09ec2c12d4110c2d5ba7050
+ sha256: 684dc254a778600fb4ce31d6e3a82f18bf3a2779d71b06d237e76357dda8be9e
category: main
optional: false
- name: qtconsole-base
@@ -19040,7 +18998,7 @@ package:
category: main
optional: false
- name: readthedocs-sphinx-ext
- version: 2.2.3
+ version: 2.2.4
manager: conda
platform: linux-64
dependencies:
@@ -19048,14 +19006,14 @@ package:
packaging: ""
python: ">=3.6"
requests: ""
- url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.4-pyhd8ed1ab_0.conda
hash:
- md5: 6bc1a00f5502f9ed13526e4c6bea6900
- sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
+ md5: 86dd35106fb71b2e2060b557e3bdd49a
+ sha256: 9c0568d4df3b34a54e4c0a3c9780bf947797e4d453ad6c1511467eae188f8232
category: main
optional: false
- name: readthedocs-sphinx-ext
- version: 2.2.3
+ version: 2.2.4
manager: conda
platform: osx-64
dependencies:
@@ -19063,14 +19021,14 @@ package:
packaging: ""
python: ">=3.6"
jinja2: ">=2.9"
- url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.4-pyhd8ed1ab_0.conda
hash:
- md5: 6bc1a00f5502f9ed13526e4c6bea6900
- sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
+ md5: 86dd35106fb71b2e2060b557e3bdd49a
+ sha256: 9c0568d4df3b34a54e4c0a3c9780bf947797e4d453ad6c1511467eae188f8232
category: main
optional: false
- name: readthedocs-sphinx-ext
- version: 2.2.3
+ version: 2.2.4
manager: conda
platform: osx-arm64
dependencies:
@@ -19078,10 +19036,10 @@ package:
packaging: ""
python: ">=3.6"
jinja2: ">=2.9"
- url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.3-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/readthedocs-sphinx-ext-2.2.4-pyhd8ed1ab_0.conda
hash:
- md5: 6bc1a00f5502f9ed13526e4c6bea6900
- sha256: 464cfb706266a2dfbee7d0226c83114c9868a65f9fc7e05b223faac8bd2b3f8e
+ md5: 86dd35106fb71b2e2060b557e3bdd49a
+ sha256: 9c0568d4df3b34a54e4c0a3c9780bf947797e4d453ad6c1511467eae188f8232
category: main
optional: false
- name: recordlinkage
@@ -19142,45 +19100,45 @@ package:
category: main
optional: false
- name: referencing
- version: 0.31.1
+ version: 0.32.0
manager: conda
platform: linux-64
dependencies:
attrs: ">=22.2.0"
python: ">=3.8"
rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.32.0-pyhd8ed1ab_0.conda
hash:
- md5: ae08039cf63eb82637b867aea3f04758
- sha256: efb91b7d2f6e729c01676e52e99071db819628a9f0a3a519c8969f0d2350a371
+ md5: a7b5a535cd614e384594530aee7e6061
+ sha256: dfd40282910a45e58882ed94b502b2a09f475efb04eaaa3bd8b3b5a9b21a19c3
category: main
optional: false
- name: referencing
- version: 0.31.1
+ version: 0.32.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
attrs: ">=22.2.0"
rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.32.0-pyhd8ed1ab_0.conda
hash:
- md5: ae08039cf63eb82637b867aea3f04758
- sha256: efb91b7d2f6e729c01676e52e99071db819628a9f0a3a519c8969f0d2350a371
+ md5: a7b5a535cd614e384594530aee7e6061
+ sha256: dfd40282910a45e58882ed94b502b2a09f475efb04eaaa3bd8b3b5a9b21a19c3
category: main
optional: false
- name: referencing
- version: 0.31.1
+ version: 0.32.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
attrs: ">=22.2.0"
rpds-py: ">=0.7.0"
- url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.31.1-pyhd8ed1ab_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.32.0-pyhd8ed1ab_0.conda
hash:
- md5: ae08039cf63eb82637b867aea3f04758
- sha256: efb91b7d2f6e729c01676e52e99071db819628a9f0a3a519c8969f0d2350a371
+ md5: a7b5a535cd614e384594530aee7e6061
+ sha256: dfd40282910a45e58882ed94b502b2a09f475efb04eaaa3bd8b3b5a9b21a19c3
category: main
optional: false
- name: regex
@@ -19806,7 +19764,7 @@ package:
category: main
optional: false
- name: ruff
- version: 0.1.6
+ version: 0.1.7
manager: conda
platform: linux-64
dependencies:
@@ -19814,14 +19772,14 @@ package:
libstdcxx-ng: ">=12"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.1.6-py311h7145743_0.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.1.7-py311h7145743_0.conda
hash:
- md5: aff8387edd5157da054c4b46cc38ffdc
- sha256: dd8f7a3e2e7bc65fb6c2c32aae79ebc8623c6b87cbdbc8d2651be9ccd63e29d0
+ md5: 7e4329efd6a902a64470bfbe21a83e21
+ sha256: c82eb1b904671ab0eb3212f18aa7af14e51b66a8e893d18a3089d29a334e1e0d
category: main
optional: false
- name: ruff
- version: 0.1.6
+ version: 0.1.7
manager: conda
platform: osx-64
dependencies:
@@ -19829,14 +19787,14 @@ package:
libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.1.6-py311hec6fdf1_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.1.7-py311hec6fdf1_0.conda
hash:
- md5: f0fa30260ad0ac05ef120b758c68d7ba
- sha256: 2587bd6a04c6a1178b63438de97c091bcfca15f9bb5ea0d6a1f109a66187e33e
+ md5: d21a7d577aa62ce3a2b1eb124da50446
+ sha256: 8aac6c5324504cd6b453be725b0ba8cca478468fb5c328cec79301b552477dc7
category: main
optional: false
- name: ruff
- version: 0.1.6
+ version: 0.1.7
manager: conda
platform: osx-arm64
dependencies:
@@ -19844,10 +19802,10 @@ package:
libcxx: ">=16.0.6"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
- url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.1.6-py311h6fc163c_0.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.1.7-py311h6fc163c_0.conda
hash:
- md5: c9ff47502a21c1d072e8da209d9efba3
- sha256: 8bde8b2d66f34a242ea6759df3c21f3321d17a8cdb4d421ae489f97f42452920
+ md5: 86298e47df0a6b448df8632df3d1f4a9
+ sha256: 37d5b2a72c3a5114d43d49a250dffd81d1b064d673e5faf3932c6bf56f2e7c76
category: main
optional: false
- name: s2n
@@ -19916,10 +19874,10 @@ package:
python_abi: 3.11.*
scipy: ""
threadpoolctl: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.2-py311hc009520_1.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.3.2-py311hc009520_2.conda
hash:
- md5: 6b92d3d0680eae9d1d9860a721f7fb51
- sha256: 638253cba17e44081674b2dd7bee2025c202e91b653182da511ca57de942689d
+ md5: 9821f8e497a791858226f535e5e0be62
+ sha256: 1133cd9209207528d4fdd88ffb300a04794942e5d474c607ed1f0578fe218fd2
category: main
optional: false
- name: scikit-learn
@@ -19930,16 +19888,16 @@ package:
__osx: ">=10.9"
joblib: ">=1.1.1"
libcxx: ">=16.0.6"
- llvm-openmp: ">=16.0.6"
+ llvm-openmp: ">=17.0.6"
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
scipy: ""
threadpoolctl: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.3.2-py311h66081b9_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.3.2-py311h66081b9_2.conda
hash:
- md5: a7053f3e86b6b9139593a027c54e3097
- sha256: 0b4aee092d4689d07aa95ed1d1071eeb74a5e011d34bc9ebd9b27e9b2166db7e
+ md5: a774c2628441ed6f4db9d7026ab1c7f4
+ sha256: 8a2b2660524d06c32c7a2a5af9f3f918b17f34a01990f6190e1e7f37233cdb47
category: main
optional: false
- name: scikit-learn
@@ -19950,16 +19908,16 @@ package:
__osx: ">=10.9"
joblib: ">=1.1.1"
libcxx: ">=16.0.6"
- llvm-openmp: ">=16.0.6"
+ llvm-openmp: ">=17.0.6"
numpy: ">=1.23.5,<2.0a0"
python: ">=3.11,<3.12.0a0"
python_abi: 3.11.*
scipy: ""
threadpoolctl: ">=2.0.0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.3.2-py311ha25ca4d_1.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.3.2-py311ha25ca4d_2.conda
hash:
- md5: dea73952c589de24ec577c41fac181c5
- sha256: 589bca23648b8969b16a36f87d7114a12fbe88d665cde32427c7126e5b34e63c
+ md5: f427eff14595109354bd19c94a3d3624
+ sha256: d24397673a1f0b609796a716c80b45e3971eb09b987b2a30519a30f5dabeae14
category: main
optional: false
- name: scipy
@@ -21575,65 +21533,66 @@ package:
category: main
optional: false
- name: tiledb
- version: 2.16.3
+ version: 2.18.2
manager: conda
platform: linux-64
dependencies:
bzip2: ">=1.0.8,<2.0a0"
- libabseil: ">=20230802.0,<20230803.0a0"
+ libabseil: ">=20230802.1,<20230803.0a0"
libgcc-ng: ">=12"
libgoogle-cloud: ">=2.12.0,<2.13.0a0"
libstdcxx-ng: ">=12"
- libxml2: ">=2.11.5,<2.12.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
lz4-c: ">=1.9.3,<1.10.0a0"
- openssl: ">=3.1.2,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.16.3-h8c794c1_3.conda
+ url: https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.18.2-h8c794c1_0.conda
hash:
- md5: 7de728789b0aba16018f726dc5ddbec2
- sha256: f021df4b9cfd1a54aac87a6c0bac604edc8ffb36d5b2c4aa20bf2d759ae04a11
+ md5: e824b951c15a74d0a2d3e42676370791
+ sha256: c73704c36661193a040e4f1c454ef181277b97d3dc225febac9f3093e60f36bf
category: main
optional: false
- name: tiledb
- version: 2.16.3
+ version: 2.18.2
manager: conda
platform: osx-64
dependencies:
- __osx: ">=10.13"
+ __osx: ">=10.9"
bzip2: ">=1.0.8,<2.0a0"
- libabseil: ">=20230802.0,<20230803.0a0"
- libcxx: ">=15.0.7"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
lz4-c: ">=1.9.3,<1.10.0a0"
- openssl: ">=3.1.2,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.16.3-hd3a41d5_3.conda
+ url: https://conda.anaconda.org/conda-forge/osx-64/tiledb-2.18.2-h9fe0a6a_0.conda
hash:
- md5: 53c2d2746f21a60d0c498c36fb32ec56
- sha256: 9144ad40adb982107dd4f5084d1e488b216025eed91a3feeb3506ee4d5bc98dd
+ md5: 0615fdde1c114affe6a0250b9d342328
+ sha256: daccccc133c363360379e9efa525835cd20ed8ca12381641ccb1353c3d7c34c0
category: main
optional: false
- name: tiledb
- version: 2.16.3
+ version: 2.18.2
manager: conda
platform: osx-arm64
dependencies:
+ __osx: ">=10.9"
bzip2: ">=1.0.8,<2.0a0"
- libabseil: ">=20230802.0,<20230803.0a0"
- libcxx: ">=15.0.7"
+ libabseil: ">=20230802.1,<20230803.0a0"
+ libcxx: ">=16.0.6"
libgoogle-cloud: ">=2.12.0,<2.13.0a0"
- libxml2: ">=2.11.5,<2.12.0a0"
+ libxml2: ">=2.11.6,<2.12.0a0"
libzlib: ">=1.2.13,<1.3.0a0"
lz4-c: ">=1.9.3,<1.10.0a0"
- openssl: ">=3.1.2,<4.0a0"
+ openssl: ">=3.2.0,<4.0a0"
zstd: ">=1.5.5,<1.6.0a0"
- url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.16.3-he15c4da_3.conda
+ url: https://conda.anaconda.org/conda-forge/osx-arm64/tiledb-2.18.2-h555b8a3_0.conda
hash:
- md5: fcf3711dd1817fd6e8ab59be86aa8dd9
- sha256: c2576bf0344b441f4c7d9212cfa68fe64de88dc9da735cb541c7faa0595d260f
+ md5: c223398e541fce9cfe1abe47df687909
+ sha256: da9227601b2bf5607fee33b62ed364561363f994ba41fd82e48d45a2f584210e
category: main
optional: false
- name: timezonefinder
@@ -22225,75 +22184,75 @@ package:
category: main
optional: false
- name: typing-extensions
- version: 4.8.0
+ version: 4.9.0
manager: conda
platform: linux-64
dependencies:
- typing_extensions: 4.8.0
- url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
+ typing_extensions: 4.9.0
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda
hash:
- md5: 384462e63262a527bda564fa2d9126c0
- sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
+ md5: c16524c1b7227dc80b36b4fa6f77cc86
+ sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c
category: main
optional: false
- name: typing-extensions
- version: 4.8.0
+ version: 4.9.0
manager: conda
platform: osx-64
dependencies:
- typing_extensions: 4.8.0
- url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
+ typing_extensions: 4.9.0
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda
hash:
- md5: 384462e63262a527bda564fa2d9126c0
- sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
+ md5: c16524c1b7227dc80b36b4fa6f77cc86
+ sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c
category: main
optional: false
- name: typing-extensions
- version: 4.8.0
+ version: 4.9.0
manager: conda
platform: osx-arm64
dependencies:
- typing_extensions: 4.8.0
- url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda
+ typing_extensions: 4.9.0
+ url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda
hash:
- md5: 384462e63262a527bda564fa2d9126c0
- sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d
+ md5: c16524c1b7227dc80b36b4fa6f77cc86
+ sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c
category: main
optional: false
- name: typing_extensions
- version: 4.8.0
+ version: 4.9.0
manager: conda
platform: linux-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda
hash:
- md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
- sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
+ md5: a92a6440c3fe7052d63244f3aba2a4a7
+ sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905
category: main
optional: false
- name: typing_extensions
- version: 4.8.0
+ version: 4.9.0
manager: conda
platform: osx-64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda
hash:
- md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
- sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
+ md5: a92a6440c3fe7052d63244f3aba2a4a7
+ sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905
category: main
optional: false
- name: typing_extensions
- version: 4.8.0
+ version: 4.9.0
manager: conda
platform: osx-arm64
dependencies:
python: ">=3.8"
- url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda
+ url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda
hash:
- md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7
- sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde
+ md5: a92a6440c3fe7052d63244f3aba2a4a7
+ sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905
category: main
optional: false
- name: typing_inspect
@@ -22450,11 +22409,11 @@ package:
libgcc-ng: ">=12"
libnuma: ">=2.0.16,<3.0a0"
libstdcxx-ng: ">=12"
- rdma-core: ">=48.0"
- url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-hae80064_1.conda
+ rdma-core: ">=49"
+ url: https://conda.anaconda.org/conda-forge/linux-64/ucx-1.15.0-h75e419f_2.conda
hash:
- md5: c0413425844278251c1cc9459386339b
- sha256: f511a735bf7a0b56c5ae48839e2248d46a922ffc6ad8ea2da7617485faa70c6f
+ md5: 5798de4587dc70fa6db81663e79f176a
+ sha256: 81fdea1a5ee5075bf4cbdc665b08d0e2ee9d3476f9d16acc58e2bbd913e9197b
category: main
optional: false
- name: ukkonen
diff --git a/environments/conda-osx-64.lock.yml b/environments/conda-osx-64.lock.yml
index af75e5e3dc..583c37d839 100644
--- a/environments/conda-osx-64.lock.yml
+++ b/environments/conda-osx-64.lock.yml
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: osx-64
-# input_hash: 39e56673d0def5503b315f36cec2b3e4bfd804758ec3bcea79dad417c6b146a2
+# input_hash: 0c46f3c7a9c86a583e588c727d6a7e7d3214ce9d048dd4e49df3a792c36b3e9c
channels:
- conda-forge
@@ -22,10 +22,10 @@ dependencies:
- libbrotlicommon=1.1.0=h0dc2134_1
- libcxx=16.0.6=hd57cbcb_0
- libdeflate=1.19=ha4e1b8e_0
- - libev=4.33=haf1e3a3_1
+ - libev=4.33=h10d778d_2
- libexpat=2.5.0=hf0c8a7f_1
- libffi=3.4.2=h0d85af4_5
- - libiconv=1.17=hac89ed1_0
+ - libiconv=1.17=hd75f5a5_1
- libjpeg-turbo=3.0.0=h0dc2134_1
- libsodium=1.0.18=hbcb3906_1
- libutf8proc=2.8.0=hb7f2c08_0
@@ -90,10 +90,10 @@ dependencies:
- libedit=3.1.20191231=h0678c8f_2
- libevent=2.1.12=ha90c15b_1
- libgfortran=5.0.0=13_2_0_h97931a8_1
- - libglib=2.78.1=h198397b_1
+ - libglib=2.78.3=h198397b_0
- libkml=1.3.0=hab3ca0e_1018
- libllvm15=15.0.7=he4b1e75_3
- - libnghttp2=1.58.0=h64cf6d3_0
+ - libnghttp2=1.58.0=h64cf6d3_1
- libprotobuf=4.24.4=h0ee05dc_0
- libre2-11=2023.06.02=h4694dbf_0
- librttopo=1.1.0=hf05f67e_15
@@ -120,7 +120,7 @@ dependencies:
- libwebp=1.3.2=h44782d1_1
- openjpeg=2.5.0=ha4da562_3
- orc=1.9.0=hd1092d7_4
- - prettier=3.1.0=hbd11d21_0
+ - prettier=3.1.1=hbd11d21_0
- python=3.11.6=h30d4d87_0_cpython
- re2=2023.06.02=hd34609a_0
- sqlite=3.44.2=h7461747_0
@@ -129,7 +129,7 @@ dependencies:
- anyascii=0.3.2=pyhd8ed1ab_0
- appdirs=1.4.4=pyh9f0ad1d_0
- appnope=0.1.3=pyhd8ed1ab_0
- - astroid=3.0.1=py311h6eed73b_0
+ - astroid=3.0.2=py311h6eed73b_0
- attrs=23.1.0=pyh71513ae_1
- aws-c-auth=0.7.7=h9ac2572_1
- aws-c-mqtt=0.9.10=h10c2427_1
@@ -152,14 +152,14 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.10=pyhd8ed1ab_0
+ - dagster-pipes=1.5.12=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- debugpy=1.8.0=py311hdf8f085_1
- decorator=5.1.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- - distlib=0.3.7=pyhd8ed1ab_0
+ - distlib=0.3.8=pyhd8ed1ab_0
- docstring_parser=0.15=pyhd8ed1ab_0
- - docutils=0.20.1=py311h6eed73b_2
+ - docutils=0.20.1=py311h6eed73b_3
- entrypoints=0.4=pyhd8ed1ab_0
- et_xmlfile=1.1.0=pyhd8ed1ab_0
- exceptiongroup=1.2.0=pyhd8ed1ab_0
@@ -167,9 +167,9 @@ dependencies:
- executing=2.0.1=pyhd8ed1ab_0
- filelock=3.13.1=pyhd8ed1ab_0
- frozenlist=1.4.0=py311h2725bcf_1
- - fsspec=2023.12.0=pyhca7485f_0
- - google-cloud-sdk=455.0.0=py311h6eed73b_0
- - greenlet=3.0.1=py311hd39e593_0
+ - fsspec=2023.12.2=pyhca7485f_0
+ - google-cloud-sdk=457.0.0=py311h6eed73b_0
+ - greenlet=3.0.2=py311hd39e593_0
- hpack=4.0.0=pyh9f0ad1d_0
- httptools=0.6.1=py311he705e18_0
- humanfriendly=10.0=pyhd8ed1ab_6
@@ -187,13 +187,13 @@ dependencies:
- jupyterlab_widgets=3.0.9=pyhd8ed1ab_0
- kiwisolver=1.4.5=py311h5fe6e05_1
- libblas=3.9.0=20_osx64_openblas
- - libcurl=8.4.0=h726d00d_0
+ - libcurl=8.5.0=h726d00d_0
- libgd=2.3.3=h0dceb68_9
- libgrpc=1.59.2=ha7f534c_0
- - libpq=16.1=h6dd4ff7_2
+ - libpq=16.1=ha925e61_7
- llvmlite=0.41.1=py311hb5c2e0a_0
- locket=1.0.0=pyhd8ed1ab_0
- - lxml=4.9.3=py311h19a211c_1
+ - lxml=4.9.3=py311h719c1e2_2
- marko=2.0.2=pyhd8ed1ab_0
- markupsafe=2.1.3=py311h2725bcf_1
- mdurl=0.1.0=pyhd8ed1ab_0
@@ -203,7 +203,6 @@ dependencies:
- msgpack-python=1.0.7=py311h7bea37d_0
- multidict=6.0.4=py311h5547dcb_1
- multimethod=1.9.1=pyhd8ed1ab_0
- - munch=4.0.0=pyhd8ed1ab_0
- munkres=1.1.4=pyh9f0ad1d_0
- mypy_extensions=1.0.0=pyha770c72_0
- nest-asyncio=1.5.8=pyhd8ed1ab_0
@@ -240,14 +239,14 @@ dependencies:
- pywin32-on-windows=0.1.0=pyh1179c8e_3
- pyxlsb=1.0.10=pyhd8ed1ab_0
- pyyaml=6.0.1=py311h2725bcf_1
- - pyzmq=25.1.1=py311he3804a1_2
+ - pyzmq=25.1.2=py311h889d6d6_0
- regex=2023.10.3=py311h2725bcf_0
- rfc3986=2.0.0=pyhd8ed1ab_0
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- rpds-py=0.13.2=py311h5e0f0e4_0
- rtree=1.1.0=py311hbc1f44b_0
- ruamel.yaml.clib=0.2.7=py311h2725bcf_2
- - ruff=0.1.6=py311hec6fdf1_0
+ - ruff=0.1.7=py311hec6fdf1_0
- setuptools=68.2.2=pyhd8ed1ab_0
- shellingham=1.5.4=pyhd8ed1ab_0
- simpleeval=0.9.13=pyhd8ed1ab_1
@@ -271,7 +270,7 @@ dependencies:
- traitlets=5.14.0=pyhd8ed1ab_0
- types-python-dateutil=2.8.19.14=pyhd8ed1ab_0
- types-pyyaml=6.0.12.12=pyhd8ed1ab_0
- - typing_extensions=4.8.0=pyha770c72_0
+ - typing_extensions=4.9.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_0
- unicodecsv=0.14.1=pyhd8ed1ab_2
- uri-template=1.3.0=pyhd8ed1ab_0
@@ -296,7 +295,7 @@ dependencies:
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- aws-c-s3=0.4.1=h70a162a_0
- - babel=2.13.1=pyhd8ed1ab_0
+ - babel=2.14.0=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
- bleach=6.1.0=pyhd8ed1ab_0
- cached-property=1.5.2=hd8ed1ab_1
@@ -310,7 +309,7 @@ dependencies:
- coloredlogs=14.0=pyhd8ed1ab_3
- comm=0.1.4=pyhd8ed1ab_0
- coverage=7.3.2=py311h2725bcf_0
- - curl=8.4.0=h726d00d_0
+ - curl=8.5.0=h726d00d_0
- fonttools=4.46.0=py311he705e18_0
- gitdb=4.0.11=pyhd8ed1ab_0
- graphql-core=3.2.3=pyhd8ed1ab_0
@@ -318,9 +317,9 @@ dependencies:
- h11=0.14.0=pyhd8ed1ab_0
- h2=4.1.0=pyhd8ed1ab_0
- harfbuzz=8.3.0=hf45c392_0
- - hdf5=1.14.2=nompi_hedada53_100
+ - hdf5=1.14.3=nompi_h691f4bf_100
- html5lib=1.1=pyh9f0ad1d_0
- - hypothesis=6.91.0=pyha770c72_0
+ - hypothesis=6.92.0=pyha770c72_0
- importlib-metadata=7.0.0=pyha770c72_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- isodate=0.6.1=pyhd8ed1ab_0
@@ -344,23 +343,23 @@ dependencies:
- overrides=7.4.0=pyhd8ed1ab_0
- partd=1.4.1=pyhd8ed1ab_0
- pexpect=4.8.0=pyh1a96a4e_2
- - pint=0.22=pyhd8ed1ab_1
+ - pint=0.23=pyhd8ed1ab_0
- pip=23.3.1=pyhd8ed1ab_0
- poppler=23.12.0=hdd5a5e8_0
- - postgresql=16.1=h413614c_2
+ - postgresql=16.1=h413614c_7
- proj=9.3.0=h23b96cc_2
- - prompt-toolkit=3.0.41=pyha770c72_0
+ - prompt-toolkit=3.0.42=pyha770c72_0
- protobuf=4.24.4=py311h021eaf5_0
- - psycopg2=2.9.7=py311h187f0af_1
+ - psycopg2=2.9.9=py311h187f0af_0
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
- - pyobjc-core=10.0=py311hf110eff_0
+ - pyobjc-core=10.1=py311h9b70068_0
- pyproject_hooks=1.0.0=pyhd8ed1ab_0
- pytest=7.4.3=pyhd8ed1ab_0
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.31.1=pyhd8ed1ab_0
+ - referencing=0.32.0=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
@@ -368,7 +367,7 @@ dependencies:
- terminado=0.18.0=pyh31c8845_0
- tinycss2=1.2.1=pyhd8ed1ab_0
- tqdm=4.66.1=pyhd8ed1ab_0
- - typing-extensions=4.8.0=hd8ed1ab_0
+ - typing-extensions=4.9.0=hd8ed1ab_0
- typing_inspect=0.9.0=pyhd8ed1ab_0
- universal_pathlib=0.1.4=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
@@ -383,7 +382,7 @@ dependencies:
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- aws-crt-cpp=0.24.7=hf3941dc_6
- - botocore=1.33.6=pyhd8ed1ab_0
+ - botocore=1.33.13=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.7=py311h48c7838_1
@@ -391,14 +390,14 @@ dependencies:
- geotiff=1.7.1=h889ec99_14
- gitpython=3.1.40=pyhd8ed1ab_0
- google-crc32c=1.1.2=py311h0b57020_5
- - googleapis-common-protos=1.61.0=pyhd8ed1ab_0
+ - googleapis-common-protos=1.62.0=pyhd8ed1ab_0
- gql=3.4.1=pyhd8ed1ab_0
- graphql-relay=3.2.0=pyhd8ed1ab_0
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=7.0.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
+ - jupyter_server_terminals=0.5.0=pyhd8ed1ab_0
- kealib=1.5.2=h052fcf7_1
- libnetcdf=4.9.2=nompi_h6a32802_112
- libspatialite=5.1.0=hf63aa75_2
@@ -407,11 +406,11 @@ dependencies:
- pango=1.50.14=h19c1c8a_2
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311h2725bcf_6
- - prompt_toolkit=3.0.41=hd8ed1ab_0
- - psycopg2-binary=2.9.7=pyhd8ed1ab_1
+ - prompt_toolkit=3.0.42=hd8ed1ab_0
+ - psycopg2-binary=2.9.9=pyhd8ed1ab_0
- pybtex=0.24.0=pyhd8ed1ab_2
- pydantic-core=2.14.5=py311h5e0f0e4_0
- - pyobjc-framework-cocoa=10.0=py311hf110eff_1
+ - pyobjc-framework-cocoa=10.1=py311h9b70068_0
- pyproj=3.6.1=py311he36daed_4
- pytest-console-scripts=1.4.1=pyhd8ed1ab_0
- pytest-cov=4.1.0=pyhd8ed1ab_0
@@ -423,13 +422,13 @@ dependencies:
- sqlalchemy=2.0.23=py311he705e18_0
- stack_data=0.6.2=pyhd8ed1ab_0
- starlette=0.33.0=pyhd8ed1ab_0
- - tiledb=2.16.3=hd3a41d5_3
+ - tiledb=2.18.2=h9fe0a6a_0
- ukkonen=1.0.1=py311h5fe6e05_4
- uvicorn=0.24.0.post1=py311h6eed73b_0
- watchfiles=0.21.0=py311h5e0f0e4_0
- aiohttp=3.8.6=py311he705e18_1
- alembic=1.13.0=pyhd8ed1ab_0
- - arelle-release=2.18.0=pyhd8ed1ab_0
+ - arelle-release=2.19.0=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h28d282b_7
- bottleneck=1.3.7=py311h4a70a88_1
@@ -439,28 +438,28 @@ dependencies:
- dnspython=2.4.2=pyhd8ed1ab_1
- ensureconda=1.4.3=pyhd8ed1ab_0
- folium=0.15.1=pyhd8ed1ab_0
- - google-resumable-media=2.6.0=pyhd8ed1ab_0
+ - google-resumable-media=2.7.0=pyhd8ed1ab_0
- graphene=3.3=pyhd8ed1ab_0
- grpcio-status=1.59.2=pyhd8ed1ab_0
- - gtk2=2.24.33=h7c1209e_2
+ - gtk2=2.24.33=h8ca4665_3
- h3-py=3.7.6=py311hdf8f085_1
- httpx=0.25.2=pyhd8ed1ab_0
- - identify=2.5.32=pyhd8ed1ab_0
- - ipython=8.18.1=pyh31011fe_2
+ - identify=2.5.33=pyhd8ed1ab_0
+ - ipython=8.18.1=pyh707e725_3
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
- keyring=24.3.0=py311h6eed73b_0
- - libgdal=3.8.1=hb7f764b_1
+ - libgdal=3.8.1=h7bb8e92_2
- librsvg=2.56.3=hec3db73_0
- numba=0.58.1=py311h32f2313_0
- numexpr=2.8.7=py311h1eadf79_4
- oauthlib=3.2.2=pyhd8ed1ab_0
- - pandas=2.1.3=py311h1eadf79_0
+ - pandas=2.1.4=py311h1eadf79_0
- pybtex-docutils=1.0.3=py311h6eed73b_1
- pydantic=2.5.2=pyhd8ed1ab_0
- pyopenssl=23.3.0=pyhd8ed1ab_0
- - readthedocs-sphinx-ext=2.2.3=pyhd8ed1ab_0
+ - readthedocs-sphinx-ext=2.2.4=pyhd8ed1ab_0
- requests-toolbelt=0.10.1=pyhd8ed1ab_0
- responses=0.24.1=pyhd8ed1ab_0
- s3transfer=0.8.2=pyhd8ed1ab_0
@@ -471,16 +470,16 @@ dependencies:
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0.post1=h6eed73b_0
- - boto3=1.33.6=pyhd8ed1ab_0
+ - boto3=1.33.13=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.10=pyhd8ed1ab_0
+ - dagster=1.5.12=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.8.1=py311h5646c56_1
+ - gdal=3.8.1=py311h06f03dd_2
- geopandas-base=0.14.1=pyha770c72_0
- - google-auth=2.24.0=pyhca7485f_0
+ - google-auth=2.25.2=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- graphviz=9.0.0=hee74176_1
- ipykernel=6.26.0=pyh3cd1d5f_0
@@ -490,18 +489,18 @@ dependencies:
- matplotlib-base=3.8.2=py311hd316c10_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
- - pre-commit=3.5.0=pyha770c72_0
+ - pre-commit=3.6.0=pyha770c72_0
- pydantic-settings=2.1.0=pyhd8ed1ab_1
- requests-oauthlib=1.3.1=pyhd8ed1ab_0
- - scikit-learn=1.3.2=py311h66081b9_1
+ - scikit-learn=1.3.2=py311h66081b9_2
- timezonefinder=6.2.0=py311he705e18_2
- catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
- conda-lock=2.5.1=pyhd8ed1ab_0
- - dagster-graphql=1.5.10=pyhd8ed1ab_0
- - dagster-postgres=0.21.10=pyhd8ed1ab_0
- - fiona=1.9.5=py311h809632c_1
- - google-api-core=2.14.0=pyhd8ed1ab_0
- - google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
+ - dagster-graphql=1.5.12=pyhd8ed1ab_0
+ - dagster-postgres=0.21.12=pyhd8ed1ab_0
+ - fiona=1.9.5=py311h809632c_2
+ - google-api-core=2.15.0=pyhd8ed1ab_0
+ - google-auth-oauthlib=1.2.0=pyhd8ed1ab_0
- jupyter_console=6.6.3=pyhd8ed1ab_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- libarrow-acero=14.0.1=hc222712_3_cpu
@@ -514,19 +513,19 @@ dependencies:
- qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.10=pyhd8ed1ab_0
+ - dagster-webserver=1.5.12=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- - google-cloud-core=2.3.3=pyhd8ed1ab_0
+ - google-cloud-core=2.4.1=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=hc222712_3_cpu
- libarrow-flight-sql=14.0.1=h2cc6c1c_3_cpu
- nbconvert-core=7.12.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- - google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_server=2.11.2=pyhd8ed1ab_0
+ - google-cloud-storage=2.14.0=pyhca7485f_0
+ - jupyter_server=2.12.1=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h2cc6c1c_3_cpu
- nbconvert-pandoc=7.12.0=pyhd8ed1ab_0
- - gcsfs=2023.12.0=pyhd8ed1ab_0
+ - gcsfs=2023.12.2.post1=pyhd8ed1ab_0
- jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.2=pyhd8ed1ab_0
diff --git a/environments/conda-osx-arm64.lock.yml b/environments/conda-osx-arm64.lock.yml
index 992644fc0d..a77431c14f 100644
--- a/environments/conda-osx-arm64.lock.yml
+++ b/environments/conda-osx-arm64.lock.yml
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: osx-arm64
-# input_hash: c275fe8ff3012ad83a98252ba570f9b278f142720b73f42abfd4c4a1107f67e2
+# input_hash: 3e57b04f7b2300284a5c81502687a5c373c4be31786246211ea23f019d4a513f
channels:
- conda-forge
@@ -22,10 +22,10 @@ dependencies:
- libbrotlicommon=1.1.0=hb547adb_1
- libcxx=16.0.6=h4653b0c_0
- libdeflate=1.19=hb547adb_0
- - libev=4.33=h642e427_1
+ - libev=4.33=h93a5062_2
- libexpat=2.5.0=hb7217d7_1
- libffi=3.4.2=h3422bc3_5
- - libiconv=1.17=he4db4b2_0
+ - libiconv=1.17=h0d3ecfb_1
- libjpeg-turbo=3.0.0=hb547adb_1
- libsodium=1.0.18=h27ca646_1
- libutf8proc=2.8.0=h1a8c8d9_0
@@ -90,10 +90,10 @@ dependencies:
- libedit=3.1.20191231=hc8eb9b7_2
- libevent=2.1.12=h2757513_1
- libgfortran=5.0.0=13_2_0_hd922786_1
- - libglib=2.78.1=hb438215_1
+ - libglib=2.78.3=hb438215_0
- libkml=1.3.0=h1eb4d9f_1018
- libllvm15=15.0.7=h504e6bf_3
- - libnghttp2=1.58.0=ha4dd798_0
+ - libnghttp2=1.58.0=ha4dd798_1
- libprotobuf=4.24.4=hc9861d8_0
- libre2-11=2023.06.02=h1753957_0
- librttopo=1.1.0=hc8f776e_15
@@ -120,7 +120,7 @@ dependencies:
- libwebp=1.3.2=hf30222e_1
- openjpeg=2.5.0=h4c1507b_3
- orc=1.9.0=h7c018df_4
- - prettier=3.1.0=hb67532b_0
+ - prettier=3.1.1=hb67532b_0
- python=3.11.6=h47c9636_0_cpython
- re2=2023.06.02=h6135d0a_0
- sqlite=3.44.2=hf2abe2d_0
@@ -129,7 +129,7 @@ dependencies:
- anyascii=0.3.2=pyhd8ed1ab_0
- appdirs=1.4.4=pyh9f0ad1d_0
- appnope=0.1.3=pyhd8ed1ab_0
- - astroid=3.0.1=py311h267d04e_0
+ - astroid=3.0.2=py311h267d04e_0
- attrs=23.1.0=pyh71513ae_1
- aws-c-auth=0.7.7=h886c30d_1
- aws-c-mqtt=0.9.10=h8d54690_1
@@ -152,14 +152,14 @@ dependencies:
- colorama=0.4.6=pyhd8ed1ab_0
- crashtest=0.4.1=pyhd8ed1ab_0
- cycler=0.12.1=pyhd8ed1ab_0
- - dagster-pipes=1.5.10=pyhd8ed1ab_0
+ - dagster-pipes=1.5.12=pyhd8ed1ab_0
- dataclasses=0.8=pyhc8e2a94_3
- debugpy=1.8.0=py311ha891d26_1
- decorator=5.1.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- - distlib=0.3.7=pyhd8ed1ab_0
+ - distlib=0.3.8=pyhd8ed1ab_0
- docstring_parser=0.15=pyhd8ed1ab_0
- - docutils=0.20.1=py311h267d04e_2
+ - docutils=0.20.1=py311h267d04e_3
- entrypoints=0.4=pyhd8ed1ab_0
- et_xmlfile=1.1.0=pyhd8ed1ab_0
- exceptiongroup=1.2.0=pyhd8ed1ab_0
@@ -167,9 +167,9 @@ dependencies:
- executing=2.0.1=pyhd8ed1ab_0
- filelock=3.13.1=pyhd8ed1ab_0
- frozenlist=1.4.0=py311heffc1b2_1
- - fsspec=2023.12.0=pyhca7485f_0
- - google-cloud-sdk=455.0.0=py311h267d04e_0
- - greenlet=3.0.1=py311hbaf5611_0
+ - fsspec=2023.12.2=pyhca7485f_0
+ - google-cloud-sdk=457.0.0=py311h267d04e_0
+ - greenlet=3.0.2=py311hbaf5611_0
- hpack=4.0.0=pyh9f0ad1d_0
- httptools=0.6.1=py311h05b510d_0
- humanfriendly=10.0=pyhd8ed1ab_6
@@ -187,13 +187,13 @@ dependencies:
- jupyterlab_widgets=3.0.9=pyhd8ed1ab_0
- kiwisolver=1.4.5=py311he4fd1f5_1
- libblas=3.9.0=20_osxarm64_openblas
- - libcurl=8.4.0=h2d989ff_0
+ - libcurl=8.5.0=h2d989ff_0
- libgd=2.3.3=hfdf3952_9
- libgrpc=1.59.2=hbcf6334_0
- - libpq=16.1=hd435d45_2
+ - libpq=16.1=h0f8b458_7
- llvmlite=0.41.1=py311hf5d242d_0
- locket=1.0.0=pyhd8ed1ab_0
- - lxml=4.9.3=py311hbafe683_1
+ - lxml=4.9.3=py311hdef8331_2
- marko=2.0.2=pyhd8ed1ab_0
- markupsafe=2.1.3=py311heffc1b2_1
- mdurl=0.1.0=pyhd8ed1ab_0
@@ -203,7 +203,6 @@ dependencies:
- msgpack-python=1.0.7=py311hd03642b_0
- multidict=6.0.4=py311he2be06e_1
- multimethod=1.9.1=pyhd8ed1ab_0
- - munch=4.0.0=pyhd8ed1ab_0
- munkres=1.1.4=pyh9f0ad1d_0
- mypy_extensions=1.0.0=pyha770c72_0
- nest-asyncio=1.5.8=pyhd8ed1ab_0
@@ -240,14 +239,14 @@ dependencies:
- pywin32-on-windows=0.1.0=pyh1179c8e_3
- pyxlsb=1.0.10=pyhd8ed1ab_0
- pyyaml=6.0.1=py311heffc1b2_1
- - pyzmq=25.1.1=py311he9c0408_2
+ - pyzmq=25.1.2=py311h6727e71_0
- regex=2023.10.3=py311heffc1b2_0
- rfc3986=2.0.0=pyhd8ed1ab_0
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- rpds-py=0.13.2=py311h94f323b_0
- rtree=1.1.0=py311hd698ff7_0
- ruamel.yaml.clib=0.2.7=py311heffc1b2_2
- - ruff=0.1.6=py311h6fc163c_0
+ - ruff=0.1.7=py311h6fc163c_0
- setuptools=68.2.2=pyhd8ed1ab_0
- shellingham=1.5.4=pyhd8ed1ab_0
- simpleeval=0.9.13=pyhd8ed1ab_1
@@ -271,7 +270,7 @@ dependencies:
- traitlets=5.14.0=pyhd8ed1ab_0
- types-python-dateutil=2.8.19.14=pyhd8ed1ab_0
- types-pyyaml=6.0.12.12=pyhd8ed1ab_0
- - typing_extensions=4.8.0=pyha770c72_0
+ - typing_extensions=4.9.0=pyha770c72_0
- typing_utils=0.1.0=pyhd8ed1ab_0
- unicodecsv=0.14.1=pyhd8ed1ab_2
- uri-template=1.3.0=pyhd8ed1ab_0
@@ -296,7 +295,7 @@ dependencies:
- asttokens=2.4.1=pyhd8ed1ab_0
- async-lru=2.0.4=pyhd8ed1ab_0
- aws-c-s3=0.4.1=ha5b923c_0
- - babel=2.13.1=pyhd8ed1ab_0
+ - babel=2.14.0=pyhd8ed1ab_0
- beautifulsoup4=4.12.2=pyha770c72_0
- bleach=6.1.0=pyhd8ed1ab_0
- cached-property=1.5.2=hd8ed1ab_1
@@ -310,7 +309,7 @@ dependencies:
- coloredlogs=14.0=pyhd8ed1ab_3
- comm=0.1.4=pyhd8ed1ab_0
- coverage=7.3.2=py311heffc1b2_0
- - curl=8.4.0=h2d989ff_0
+ - curl=8.5.0=h2d989ff_0
- fonttools=4.46.0=py311h05b510d_0
- gitdb=4.0.11=pyhd8ed1ab_0
- graphql-core=3.2.3=pyhd8ed1ab_0
@@ -318,9 +317,9 @@ dependencies:
- h11=0.14.0=pyhd8ed1ab_0
- h2=4.1.0=pyhd8ed1ab_0
- harfbuzz=8.3.0=h8f0ba13_0
- - hdf5=1.14.2=nompi_h3aba7b3_100
+ - hdf5=1.14.3=nompi_h5bb55e9_100
- html5lib=1.1=pyh9f0ad1d_0
- - hypothesis=6.91.0=pyha770c72_0
+ - hypothesis=6.92.0=pyha770c72_0
- importlib-metadata=7.0.0=pyha770c72_0
- importlib_resources=6.1.1=pyhd8ed1ab_0
- isodate=0.6.1=pyhd8ed1ab_0
@@ -344,23 +343,23 @@ dependencies:
- overrides=7.4.0=pyhd8ed1ab_0
- partd=1.4.1=pyhd8ed1ab_0
- pexpect=4.8.0=pyh1a96a4e_2
- - pint=0.22=pyhd8ed1ab_1
+ - pint=0.23=pyhd8ed1ab_0
- pip=23.3.1=pyhd8ed1ab_0
- poppler=23.12.0=hcdd998b_0
- - postgresql=16.1=hc6ab77f_2
+ - postgresql=16.1=hc6ab77f_7
- proj=9.3.0=h52fb9d0_2
- - prompt-toolkit=3.0.41=pyha770c72_0
+ - prompt-toolkit=3.0.42=pyha770c72_0
- protobuf=4.24.4=py311h4d1eceb_0
- - psycopg2=2.9.7=py311h589e011_1
+ - psycopg2=2.9.9=py311h589e011_0
- pyasn1-modules=0.3.0=pyhd8ed1ab_0
- - pyobjc-core=10.0=py311hb702dc4_0
+ - pyobjc-core=10.1=py311h665608e_0
- pyproject_hooks=1.0.0=pyhd8ed1ab_0
- pytest=7.4.3=pyhd8ed1ab_0
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python-slugify=8.0.1=pyhd8ed1ab_2
- pyu2f=0.1.5=pyhd8ed1ab_0
- qtpy=2.4.1=pyhd8ed1ab_0
- - referencing=0.31.1=pyhd8ed1ab_0
+ - referencing=0.32.0=pyhd8ed1ab_0
- restructuredtext_lint=1.4.0=pyhd8ed1ab_0
- rfc3339-validator=0.1.4=pyhd8ed1ab_0
- rsa=4.9=pyhd8ed1ab_0
@@ -368,7 +367,7 @@ dependencies:
- terminado=0.18.0=pyh31c8845_0
- tinycss2=1.2.1=pyhd8ed1ab_0
- tqdm=4.66.1=pyhd8ed1ab_0
- - typing-extensions=4.8.0=hd8ed1ab_0
+ - typing-extensions=4.9.0=hd8ed1ab_0
- typing_inspect=0.9.0=pyhd8ed1ab_0
- universal_pathlib=0.1.4=pyhd8ed1ab_0
- urllib3=1.26.18=pyhd8ed1ab_0
@@ -383,7 +382,7 @@ dependencies:
- arrow=1.3.0=pyhd8ed1ab_0
- async-timeout=4.0.3=pyhd8ed1ab_0
- aws-crt-cpp=0.24.7=hba4ac3b_6
- - botocore=1.33.6=pyhd8ed1ab_0
+ - botocore=1.33.13=pyhd8ed1ab_0
- branca=0.7.0=pyhd8ed1ab_1
- croniter=2.0.1=pyhd8ed1ab_0
- cryptography=41.0.7=py311h08c85a6_1
@@ -391,14 +390,14 @@ dependencies:
- geotiff=1.7.1=h71398c0_14
- gitpython=3.1.40=pyhd8ed1ab_0
- google-crc32c=1.1.2=py311h533d1a3_5
- - googleapis-common-protos=1.61.0=pyhd8ed1ab_0
+ - googleapis-common-protos=1.62.0=pyhd8ed1ab_0
- gql=3.4.1=pyhd8ed1ab_0
- graphql-relay=3.2.0=pyhd8ed1ab_0
- grpcio-health-checking=1.59.2=pyhd8ed1ab_0
- httpcore=1.0.2=pyhd8ed1ab_0
- importlib_metadata=7.0.0=hd8ed1ab_0
- jsonschema-specifications=2023.11.2=pyhd8ed1ab_0
- - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
+ - jupyter_server_terminals=0.5.0=pyhd8ed1ab_0
- kealib=1.5.2=h47b5e36_1
- libnetcdf=4.9.2=nompi_hb2fb864_112
- libspatialite=5.1.0=h66af7d6_2
@@ -407,11 +406,11 @@ dependencies:
- pango=1.50.14=hcf40dda_2
- pbr=6.0.0=pyhd8ed1ab_0
- pendulum=2.1.2=py311heffc1b2_6
- - prompt_toolkit=3.0.41=hd8ed1ab_0
- - psycopg2-binary=2.9.7=pyhd8ed1ab_1
+ - prompt_toolkit=3.0.42=hd8ed1ab_0
+ - psycopg2-binary=2.9.9=pyhd8ed1ab_0
- pybtex=0.24.0=pyhd8ed1ab_2
- pydantic-core=2.14.5=py311h94f323b_0
- - pyobjc-framework-cocoa=10.0=py311hb702dc4_1
+ - pyobjc-framework-cocoa=10.1=py311h665608e_0
- pyproj=3.6.1=py311h20a9b75_4
- pytest-console-scripts=1.4.1=pyhd8ed1ab_0
- pytest-cov=4.1.0=pyhd8ed1ab_0
@@ -423,13 +422,13 @@ dependencies:
- sqlalchemy=2.0.23=py311h05b510d_0
- stack_data=0.6.2=pyhd8ed1ab_0
- starlette=0.33.0=pyhd8ed1ab_0
- - tiledb=2.16.3=he15c4da_3
+ - tiledb=2.18.2=h555b8a3_0
- ukkonen=1.0.1=py311he4fd1f5_4
- uvicorn=0.24.0.post1=py311h267d04e_0
- watchfiles=0.21.0=py311h94f323b_0
- aiohttp=3.8.6=py311h05b510d_1
- alembic=1.13.0=pyhd8ed1ab_0
- - arelle-release=2.18.0=pyhd8ed1ab_0
+ - arelle-release=2.19.0=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_0
- aws-sdk-cpp=1.11.182=h31542fa_7
- bottleneck=1.3.7=py311hb49d859_1
@@ -439,28 +438,28 @@ dependencies:
- dnspython=2.4.2=pyhd8ed1ab_1
- ensureconda=1.4.3=pyhd8ed1ab_0
- folium=0.15.1=pyhd8ed1ab_0
- - google-resumable-media=2.6.0=pyhd8ed1ab_0
+ - google-resumable-media=2.7.0=pyhd8ed1ab_0
- graphene=3.3=pyhd8ed1ab_0
- grpcio-status=1.59.2=pyhd8ed1ab_0
- - gtk2=2.24.33=h57013de_2
+ - gtk2=2.24.33=h7895bb2_3
- h3-py=3.7.6=py311ha891d26_1
- httpx=0.25.2=pyhd8ed1ab_0
- - identify=2.5.32=pyhd8ed1ab_0
- - ipython=8.18.1=pyh31011fe_2
+ - identify=2.5.33=pyhd8ed1ab_0
+ - ipython=8.18.1=pyh707e725_3
- isoduration=20.11.0=pyhd8ed1ab_0
- jsonschema=4.20.0=pyhd8ed1ab_0
- jupyter_client=8.6.0=pyhd8ed1ab_0
- keyring=24.3.0=py311h267d04e_0
- - libgdal=3.8.1=hac00559_1
+ - libgdal=3.8.1=h1ac08d9_2
- librsvg=2.56.3=h0db3404_0
- numba=0.58.1=py311h9ec4793_0
- numexpr=2.8.7=py311h6e08293_4
- oauthlib=3.2.2=pyhd8ed1ab_0
- - pandas=2.1.3=py311h6e08293_0
+ - pandas=2.1.4=py311h6e08293_0
- pybtex-docutils=1.0.3=py311h267d04e_1
- pydantic=2.5.2=pyhd8ed1ab_0
- pyopenssl=23.3.0=pyhd8ed1ab_0
- - readthedocs-sphinx-ext=2.2.3=pyhd8ed1ab_0
+ - readthedocs-sphinx-ext=2.2.4=pyhd8ed1ab_0
- requests-toolbelt=0.10.1=pyhd8ed1ab_0
- responses=0.24.1=pyhd8ed1ab_0
- s3transfer=0.8.2=pyhd8ed1ab_0
@@ -471,16 +470,16 @@ dependencies:
- typeguard=4.1.5=pyhd8ed1ab_1
- typer=0.9.0=pyhd8ed1ab_0
- uvicorn-standard=0.24.0.post1=ha1ab1f8_0
- - boto3=1.33.6=pyhd8ed1ab_0
+ - boto3=1.33.13=pyhd8ed1ab_0
- cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0
- - dagster=1.5.10=pyhd8ed1ab_0
+ - dagster=1.5.12=pyhd8ed1ab_0
- datasette=0.64.4=pyhd8ed1ab_1
- doc8=1.1.1=pyhd8ed1ab_0
- email-validator=2.1.0.post1=pyhd8ed1ab_0
- frictionless=4.40.8=pyh6c4a22f_0
- - gdal=3.8.1=py311h32a4f3d_1
+ - gdal=3.8.1=py311hff5d751_2
- geopandas-base=0.14.1=pyha770c72_0
- - google-auth=2.24.0=pyhca7485f_0
+ - google-auth=2.25.2=pyhca7485f_0
- gql-with-requests=3.4.1=pyhd8ed1ab_0
- graphviz=9.0.0=h3face73_1
- ipykernel=6.26.0=pyh3cd1d5f_0
@@ -490,18 +489,18 @@ dependencies:
- matplotlib-base=3.8.2=py311hfdba5f6_0
- nbformat=5.9.2=pyhd8ed1ab_0
- pandera-core=0.17.2=pyhd8ed1ab_1
- - pre-commit=3.5.0=pyha770c72_0
+ - pre-commit=3.6.0=pyha770c72_0
- pydantic-settings=2.1.0=pyhd8ed1ab_1
- requests-oauthlib=1.3.1=pyhd8ed1ab_0
- - scikit-learn=1.3.2=py311ha25ca4d_1
+ - scikit-learn=1.3.2=py311ha25ca4d_2
- timezonefinder=6.2.0=py311h05b510d_2
- catalystcoop.ferc_xbrl_extractor=1.3.1=pyhd8ed1ab_0
- conda-lock=2.5.1=pyhd8ed1ab_0
- - dagster-graphql=1.5.10=pyhd8ed1ab_0
- - dagster-postgres=0.21.10=pyhd8ed1ab_0
- - fiona=1.9.5=py311h4760b73_1
- - google-api-core=2.14.0=pyhd8ed1ab_0
- - google-auth-oauthlib=1.1.0=pyhd8ed1ab_0
+ - dagster-graphql=1.5.12=pyhd8ed1ab_0
+ - dagster-postgres=0.21.12=pyhd8ed1ab_0
+ - fiona=1.9.5=py311h4760b73_2
+ - google-api-core=2.15.0=pyhd8ed1ab_0
+ - google-auth-oauthlib=1.2.0=pyhd8ed1ab_0
- jupyter_console=6.6.3=pyhd8ed1ab_0
- jupyter_events=0.9.0=pyhd8ed1ab_0
- libarrow-acero=14.0.1=had9dd58_3_cpu
@@ -514,19 +513,19 @@ dependencies:
- qtconsole-base=5.5.1=pyha770c72_0
- recordlinkage=0.16=pyhd8ed1ab_0
- tabulator=1.53.5=pyhd8ed1ab_0
- - dagster-webserver=1.5.10=pyhd8ed1ab_0
+ - dagster-webserver=1.5.12=pyhd8ed1ab_0
- geopandas=0.14.1=pyhd8ed1ab_0
- - google-cloud-core=2.3.3=pyhd8ed1ab_0
+ - google-cloud-core=2.4.1=pyhd8ed1ab_0
- libarrow-dataset=14.0.1=had9dd58_3_cpu
- libarrow-flight-sql=14.0.1=h660fe36_3_cpu
- nbconvert-core=7.12.0=pyhd8ed1ab_0
- tableschema=1.19.3=pyh9f0ad1d_0
- datapackage=1.15.2=pyh44b312d_0
- - google-cloud-storage=2.13.0=pyhca7485f_0
- - jupyter_server=2.11.2=pyhd8ed1ab_0
+ - google-cloud-storage=2.14.0=pyhca7485f_0
+ - jupyter_server=2.12.1=pyhd8ed1ab_0
- libarrow-substrait=14.0.1=h594d712_3_cpu
- nbconvert-pandoc=7.12.0=pyhd8ed1ab_0
- - gcsfs=2023.12.0=pyhd8ed1ab_0
+ - gcsfs=2023.12.2.post1=pyhd8ed1ab_0
- jupyter-lsp=2.2.1=pyhd8ed1ab_0
- jupyter-resource-usage=1.0.1=pyhd8ed1ab_0
- jupyterlab_server=2.25.2=pyhd8ed1ab_0
From be7e5c291d7ceccd60e79e13b9d9af2de726da7b Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Thu, 14 Dec 2023 02:05:43 +0000
Subject: [PATCH 69/70] [pre-commit.ci] auto fixes from pre-commit.com hooks
For more information, see https://pre-commit.ci
---
src/pudl/transform/eia861.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pudl/transform/eia861.py b/src/pudl/transform/eia861.py
index 92a4998c15..7c082fe0af 100644
--- a/src/pudl/transform/eia861.py
+++ b/src/pudl/transform/eia861.py
@@ -2497,7 +2497,7 @@ def core_eia861__assn_utility(**data_dfs: dict[str, pd.DataFrame]) -> pd.DataFra
io_manager_key="pudl_sqlite_io_manager",
)
def core_eia861__assn_balancing_authority(
- **dfs: dict[str, pd.DataFrame]
+ **dfs: dict[str, pd.DataFrame],
) -> pd.DataFrame:
"""Compile a balancing authority, utility, state association table.
From 2414de7abebd7964ea0e298026543d581be4b661 Mon Sep 17 00:00:00 2001
From: bendnorman
Date: Thu, 14 Dec 2023 14:23:48 -0900
Subject: [PATCH 70/70] Remove ref to non existant doc page, remove files no
longer in dev
---
devtools/data-release.sh | 74 -----------
docs/release_notes.rst | 2 +-
src/pudl/convert/epacems_to_parquet.py | 164 -------------------------
src/pudl/etl/analysis_assets.py | 34 -----
4 files changed, 1 insertion(+), 273 deletions(-)
delete mode 100755 devtools/data-release.sh
delete mode 100644 src/pudl/convert/epacems_to_parquet.py
delete mode 100644 src/pudl/etl/analysis_assets.py
diff --git a/devtools/data-release.sh b/devtools/data-release.sh
deleted file mode 100755
index a695d55223..0000000000
--- a/devtools/data-release.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/sh
-# A script to compile a Dockerized data release based on PUDL nightly build outputs.
-
-# Positional arguments:
-
-# First command line argument is the PUDL nightly build tag / ref. This indicates what
-# build outputs to use. E.g. "dev" or "v2022.11.30"
-PUDL_REF=$1
-
-# Docker tag to use in the archive, e.g. "latest" or "2022.11.30". Will be used to
-# pull the docker image using catalystcoop/pudl-jupyter:$DOCKER_TAG
-DOCKER_TAG=$2
-
-# Path to a local directory where the archive will be assembled. Should be in a place
-# with at least 20GB of disk space.
-# E.g. "./pudl-v2022.11.30"
-RELEASE_DIR=$3
-
-# Construct the GCS URL:
-GCS_ROOT="gs://pudl.catalyst.coop"
-GCS_URL="$GCS_ROOT/$PUDL_REF"
-
-# Construct the Docker image name
-DOCKER_REPO="catalystcoop"
-DOCKER_NAME="pudl-jupyter"
-DOCKER_IMAGE="$DOCKER_REPO/$DOCKER_NAME:$DOCKER_TAG"
-
-echo "Started:" `date`
-# Start with a clean slate:
-rm -rf $RELEASE_DIR
-mkdir -p $RELEASE_DIR
-# The release container / environment is based on the pudl-examples repo:
-git clone --depth 1 git@github.com:catalyst-cooperative/pudl-examples.git $RELEASE_DIR
-rm -rf $RELEASE_DIR/.git*
-# These directories are where the data will go. They're integrated with the
-# Docker container that's defined in the pudl-examples repo:
-mkdir -p $RELEASE_DIR/pudl_data
-mkdir -p $RELEASE_DIR/user_data
-
-# Make sure we have the specified version of the Docker container:
-docker pull $DOCKER_IMAGE
-# Freeze the version of the Docker container:
-cat $RELEASE_DIR/docker-compose.yml | sed -e "s/$DOCKER_NAME:latest/$DOCKER_NAME:$DOCKER_TAG/" > $RELEASE_DIR/new-docker-compose.yml
-mv $RELEASE_DIR/new-docker-compose.yml $RELEASE_DIR/docker-compose.yml
-# Set up a skeleton PUDL environment in the release dir:
-pudl_setup $RELEASE_DIR/pudl_data
-
-# These are probably outdated now... see if they fail.
-rm -rf $RELEASE_DIR/pudl_data/environment.yml
-rm -rf $RELEASE_DIR/pudl_data/notebook
-rm -rf $RELEASE_DIR/pudl_data/settings
-
-# Copy over all of the pre-processed data
-echo "Copying SQLite databases..."
-mkdir -p $RELEASE_DIR/pudl_data/sqlite/
-gsutil -m cp "$GCS_URL/*.sqlite" "$GCS_URL/ferc*_xbrl_*.json" $RELEASE_DIR/pudl_data/sqlite/
-
-echo "Copying Parquet datasets..."
-mkdir -p $RELEASE_DIR/pudl_data/parquet/epacems
-gsutil -m cp -r "$GCS_URL/core_epacems__hourly_emissions/*" $RELEASE_DIR/pudl_data/parquet/epacems
-
-# Save the Docker image as a tarball so it can be archived with the data:
-echo "Saving Docker image: $DOCKER_IMAGE"
-docker save $DOCKER_IMAGE -o $RELEASE_DIR/pudl-jupyter.tar
-
-# List the high-level contents of the archive so we can see what it contains:
-echo "Archive contents:"
-find $RELEASE_DIR -maxdepth 3
-
-# Create the archive
-echo "Creating the archive tarball..."
-tar -czf $RELEASE_DIR.tgz $RELEASE_DIR
-
-echo "Finished:" `date`
diff --git a/docs/release_notes.rst b/docs/release_notes.rst
index 412dad1d72..0162000897 100644
--- a/docs/release_notes.rst
+++ b/docs/release_notes.rst
@@ -339,7 +339,7 @@ Deprecations
* Replace references to deprecated ``pudl-scrapers`` and
``pudl-zenodo-datastore`` repositories with references to `pudl-archiver
`__ repository in
- :doc:`intro`, :doc:`dev/datastore`, and :doc:`dev/existing_data_updates`. See
+ :doc:`dev/datastore`, and :doc:`dev/existing_data_updates`. See
:pr:`2190`.
* :mod:`pudl.etl` is now a subpackage that collects all pudl assets into a dagster
`Definition `__. All
diff --git a/src/pudl/convert/epacems_to_parquet.py b/src/pudl/convert/epacems_to_parquet.py
deleted file mode 100644
index 81c5066aae..0000000000
--- a/src/pudl/convert/epacems_to_parquet.py
+++ /dev/null
@@ -1,164 +0,0 @@
-"""Process raw EPA CEMS data into a Parquet dataset outside of the PUDL ETL.
-
-This script transforms the raw EPA CEMS data from Zip compressed CSV files into an
-Apache Parquet dataset partitioned by year and state.
-
-Processing the EPA CEMS data requires information that's stored in the main PUDL
-database, so to run this script, you must already have a PUDL database available on your
-system.
-"""
-import argparse
-import sys
-from collections.abc import Callable
-
-from dagster import (
- DagsterInstance,
- Definitions,
- JobDefinition,
- build_reconstructable_job,
- define_asset_job,
- execute_job,
-)
-from dotenv import load_dotenv
-
-import pudl
-from pudl.metadata.classes import DataSource
-
-logger = pudl.logging_helpers.get_logger(__name__)
-
-
-def parse_command_line(argv):
- """Parse command line arguments. See the -h option.
-
- Args:
- argv (str): Command line arguments, including caller filename.
-
- Returns:
- dict: Dictionary of command line arguments and their parsed values.
- """
- parser = argparse.ArgumentParser(description=__doc__)
-
- parser.add_argument(
- "-y",
- "--years",
- nargs="+",
- type=int,
- help="""Which years of EPA CEMS data should be converted to Apache
- Parquet format. Default is all available years, ranging from 1995 to
- the present. Note that data is typically incomplete before ~2000.""",
- default=DataSource.from_id("epacems").working_partitions["years"],
- )
- parser.add_argument(
- "-s",
- "--states",
- nargs="+",
- type=str.upper,
- help="""Which states EPA CEMS data should be converted to Apache
- Parquet format, as a list of two letter US state abbreviations. Default
- is everything: all 48 continental US states plus Washington DC.""",
- default=DataSource.from_id("epacems").working_partitions["states"],
- )
- parser.add_argument(
- "-c",
- "--clobber",
- action="store_true",
- help="""Clobber existing parquet files if they exist. If clobber is not
- included but the parquet directory already exists the _build will
- fail.""",
- default=False,
- )
- parser.add_argument(
- "--gcs-cache-path",
- type=str,
- help="""Load datastore resources from Google Cloud Storage.
- Should be gs://bucket[/path_prefix]""",
- )
- parser.add_argument(
- "--bypass-local-cache",
- action="store_true",
- default=False,
- help="If enabled, the local file cache for datastore will not be used.",
- )
- parser.add_argument(
- "--loglevel",
- help="Set logging level (DEBUG, INFO, WARNING, ERROR, or CRITICAL).",
- default="INFO",
- )
- parser.add_argument(
- "--logfile",
- default=None,
- help="If specified, write logs to this file.",
- )
- arguments = parser.parse_args(argv[1:])
- return arguments
-
-
-def epacems_job_factory(loglevel: str, logfile: str) -> Callable[[], JobDefinition]:
- """Factory for parameterizing a reconstructable epacems job.
-
- Args:
- loglevel: The log level for the job's execution.
- logfile: Path to a log file for the job's execution.
-
- Returns:
- The job definition to be executed.
- """
-
- def get_epacems_job():
- """Create an epacems_job wrapped by to be wrapped by reconstructable."""
- pudl.logging_helpers.configure_root_logger(logfile=logfile, loglevel=loglevel)
- return Definitions(
- assets=pudl.etl.default_assets,
- resources=pudl.etl.default_resources,
- jobs=[
- define_asset_job(
- "epacems_job", selection="core_epacems__hourly_emissions"
- )
- ],
- ).get_job_def("epacems_job")
-
- return get_epacems_job
-
-
-def main():
- """Convert zipped EPA CEMS Hourly data to Apache Parquet format."""
- load_dotenv()
- args = parse_command_line(sys.argv)
- # Display logged output from the PUDL package:
- pudl.logging_helpers.configure_root_logger(
- logfile=args.logfile, loglevel=args.loglevel
- )
-
- epacems_reconstructable_job = build_reconstructable_job(
- "pudl.convert.epacems_to_parquet",
- "epacems_job_factory",
- reconstructable_kwargs={"loglevel": args.loglevel, "logfile": args.logfile},
- )
- result = execute_job(
- epacems_reconstructable_job,
- instance=DagsterInstance.get(),
- run_config={
- "resources": {
- "dataset_settings": {
- "config": {"epacems": {"years": args.years, "states": args.states}}
- },
- "datastore": {
- "config": {
- "gcs_cache_path": args.gcs_cache_path
- if args.gcs_cache_path
- else "",
- },
- },
- },
- },
- )
-
- # Workaround to reliably getting full stack trace
- if not result.success:
- for event in result.all_events:
- if event.event_type_value == "STEP_FAILURE":
- raise Exception(event.event_specific_data.error)
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/src/pudl/etl/analysis_assets.py b/src/pudl/etl/analysis_assets.py
deleted file mode 100644
index 37455f5d48..0000000000
--- a/src/pudl/etl/analysis_assets.py
+++ /dev/null
@@ -1,34 +0,0 @@
-"""Derived / analysis assets that aren't simple to construct.
-
-This is really too large & generic of a category. Should we have an asset group for each
-set of related analyses? E.g.
-
-* mcoe_assets
-* service_territory_assets
-* heat_rate_assets
-* state_demand_assets
-* depreciation_assets
-* plant_parts_eia_assets
-* eia_ferc1_record_linkage_assets
-
-Not sure what the right organization is but they'll be defined across a bunch of
-different modules. Eventually I imagine these would just be the novel derived values,
-probably in pretty skinny tables, which get joined / aggregated with other data in the
-denormalized tables.
-"""
-import pandas as pd
-from dagster import asset
-
-import pudl
-
-logger = pudl.logging_helpers.get_logger(__name__)
-
-
-@asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python")
-def utility_analysis(utils_eia860: pd.DataFrame) -> pd.DataFrame:
- """Example of how to create an analysis table that depends on an output view.
-
- This final dataframe will be written to the database (without a schema).
- """
- # Do some analysis on utils_eia860
- return utils_eia860